지정한 IP주소에 패킷(Packet) 단위로 데이터를 전달한다.
클라이언트 패킷 전달
- IP 패킷에 출발 IP주소(클라이언트 주소)와 목적 IP주소(서버 주소)를 저장한다.
- 전달할 요청 데이터를 IP 패킷으로 감싼다.
- 전달 데이터가 포함되어 있는 IP 패킷을 인터넷에 전송한다.
- IP 프로토콜의 규약에 따라 출발지로부터 목적지에 도착할 때까지 노드들이 패킷을 순차적으로 전달하여 목적 IP주소에 패킷이 도착하도록 한다.
서버 패킷 전달
- IP 패킷에 출발 IP주소(서버 주소)와 목적 IP주소(클라이언트 주소)를 저장한다.
- 전달할 응답 데이터를 IP 패킷으로 감싼다.
- 전달 데이터가 포함되어 있는 IP패킷을 인터넷 망에 전송한다.
- IP 프로토콜의 규약에 따라 출발지부터 목적지에 도착할 때까지 노드들이 패킷을 순차적으로 전달하여 목적 IP 주소에 패킷이 도착하게 된다.
이런 IP프로토콜의 한계를 극복하기 위해 TCP를 따르게 된다
TCP/IP 계층은 4개의 계층으로 이루어져 있는데 TCP는 IP보다 한 층 더 위에 쌓여있는 모습이다.
예를 들어 우리가 Hello World를 전송해 통신하려 할 때 구체적으로 이런 과정을 거치게 된다.
1. 프로그램이 메시지 생성(Hello, world!)
2. Socket 라이브러리를 통해 OS 계층에 메시지 전달
3. OS 계층에서 TCP 정보를 먼저 생성해서 메시지 데이터를 포함시킨다.
4. IP 패킷을 생성해서 TCP 데이터를 포함시킨다
5. 네트워크 인터페이스를 통해 LAN카드를 이용해 인터넷 망으로 전송한다.
출발지에서 목적지로 전송하는 것만을 담당했던 IP 프로토콜과 다르게 구체적으로 전송을 어떻게 할지 제어함으로써 문제를 해결하며 다음과 같은 특징을 가진다.
연결지향 : TCP 3 way handshake
데이터 전달 보증
- 클라이언트가 서버에게 ISN을 담아 SYN(synchronize) 메시지를 보낸다.
- 서버가 SYN을 전달받으면 서버의 ISN을 보내며 승인번호로 클라이언트의 ISN + 1을 보낸다
- 서버에게 SYN+ACK를 전달받은 클라이언트는 서버의 ISN + 1인 승인번호를 보내며 응답하여 연결 여부를 검증한다. 이런 과정을 통해 클라이언트와 서버는 연결 여부를 확인하며 동시에 서로를 신뢰할 수 있게 된다.
- 연결이 되고 나면 서버가 응답해야할 데이터를 클라이언트에게 전달한다. 연결 여부가 확인되지 않을 경우엔 데이터를 전송하지 않는다.
데이터 전달 보증
순서 보장
UDP는 IP계층 위에 TCP와 함께 위치해있다. UDP의 특성은 다음과 같다.
이렇게 보면 누가 UDP를 사용할까 싶은데, 최근 들어(HTTP/2, HTTP/3) UDP를 사용하는 추세라고 한다. 다양한 기능을 제공하는 TCP는 속도가 비교적 느린 반면, UDP는 매우 빠른 속도를 자랑하기 때문이다.
REFERENCE: 모든 개발자를 위한 HTTP 웹 기본 지식