컴퓨터가 가까이에 유선으로 연결되어 있다면 어렵지 않게 통신할 수 있겠지만, 우리는 인터넷을 통해서 통신하는 세상에 살고있다.
그렇다면 컴퓨터는 인터넷 상에서 어떻게 통신하는 것일까?
인터넷에 검색해보면 아래와 같이 이해하기 힘든 그림들이 너무 많은데 김영한님의 강의를 통해 쉽게 정리 할 수 있었다.
먼저 컴퓨터가 인터넷 상에서 통신을 하기 위해서 가장 기본적인 것은 다들 한번쯤은 들어봤을 법한, IP(인터넷 프로토콜) 이다. 우리의 컴퓨터는 인터넷을 통해 목적하는 IP 주소로 이동하며, 그 사이사이에 노드 단위로 이동한다.
데이터를 전달할때는 데이터를 패킷이라는 단위로 전달하는데, 패킷에는 기본적으로 출발지IP, 도착지IP, 전송 데이터로 이루어져 있다고 생각하면 된다.
이 IP에는 한계가 존재하는데 다음과 같은 한계가 존재한다.
1. 비연결성
- 패킷을 받을 대상을 없거나 에러가 난 상태여도 패킷 전송을 한다.
2. 비신뢰성
- 중간에 패킷이 사라지고, 패킷의 순서가 변경될 수도 있다.
3. 프로그램 구분
-같은 IP 를 사용하는 서버가 여러개일 수 있다..
때문에 우리는 TCP UDP 프로토콜을 사용하게 된다 .
인터넷 프로토콜의 계층은 크게 4가지로 나뉘며,
-애플리케이션 계층 (HTTP)
-전송계층 (TCP / UDP)
-인터넷계층 (IP)
-네트워크 인터페이스 계층(하드웨어)으로 나뉜다.
우리의 정보가 인터넷을 나가는 과정은 다음과 같다 .
-우리가 통신할 정보를 입력하면 소켓 라이브러리를 통해서 OS(TCP / IP) 로 이동하게 되고,
- 전송 데이터가 TCP / IP 의 추가적인 정보가 추가되어 랜카드를 통해 인터넷으로 나간다.
TCP(전송 제어 프로토콜(Transmission Control Protocol)) 의 특징은
1. 연결지향, 3 way handshake(실제로 연결된 것이 아닌, 가상의 연결이다 => 존재하는지를 확인한다고 생각하면 된다.)
- 3 way handshake 는s syn(전송?), ack(응답) 을 통해서 상대방이 존재하는 지를 확인한다.
- 생각보다 무거운 작업이다.
2. 데이터 전달 보증(말 그대로이다..)
3. 순서보장
- 순서가 맞지 않는다면 다시 보내라고 한다.
=> 결론적으로는 신뢰할 수 있는 프로토콜이고, 현재는 대부분 TCP 를 사용한다.
UDP(사용자 데이터그램 프로토콜(User Datagram Protocol)) 의 특징은
1. TCP의 기능(연결지향, 데이터 전달 보증, 순서 보장) 의 기능을 하지 않는다.
2. 때문에 단순하고 빠르다.
3. IP 와 다른점은 port 가 있다는 정도이다.
=> 최근 HTTP3.0 버전부터는 UDP를 사용한다고 한다.
그런데 만약 하나의 IP 에서 많은 작업(게임, 영화보기, 음악듣기, 채팅 등...) 을 동시에 수행한다면 어떻게 될까??
이때 필요한 것이 바로 PORT 이다.
PORT 는 하나의 건물의 수많은 방이라고 생각하면 편하다. 다음과 같이 하나의 IP 를 통해서 수많은 작업을 하기 위해 사용한다.
'CS > 네트워크' 카테고리의 다른 글
JWT(Json Web Token) (0) | 2022.06.27 |
---|---|
세션과 토큰 (0) | 2022.06.27 |
리다이렉션? (0) | 2022.06.01 |
포트 포워딩 (0) | 2022.04.16 |
왜 서버 구축에는 리눅스를 사용할까? (0) | 2022.04.13 |