TCP/IP 4계층 모델
| 4층 응용계층 - HTTP, DNS, FTP, ... |
| 3층 전송계층 - TCP, UDP, ... |
| 2층 인터넷 계층 - IP, ICMP, ARP, RARP |
| 1층 네트워크 접근 계층 - Ethernet, wifi, ... |
전송계층에 속하는 TCP와 UDP는 2계층에서 동작하는 IP 와 4계층에서 동작하는 애플리케이션(http 등)을 중개하는 역할을 한다.
TCP와 UDP는 중개하는 역할을 하는점에서는 동일하지만, 각각이 다른특징을 가지고 있다.
| TCP(Transmission control protocol) | UDP(User datagram protocol) | |
| 서비스 타입 | 연결 지향적 프로토콜 | 데이타그램 지향적 프로토콜 |
| 신뢰성 | 데이터 전송 표적 기기까지의 전송을 보장한다 | 표적 기기까지의 전송이 보장되지 않는다 |
| 순서 보장 | 전송하는 패킷들의 순서가 보장된다 | 패킷순서가 보장이 안된다. 패킷 순서를 보장하기 위해서는 애플리케이션 레이어에서 관리 되어야함 |
| 속도 | UDP의 비해서 느리다 | TCP와 비교해 빠르고, 단순하며 효율적인 속도를 가짐 |
TCP는 통신 신뢰성을 높이는 실현하는 기능이 구현되어 있다.
UDP에는 신뢰성을 높이는 기능이 없는 대신 보다 높은 속도와 효율성을 제공한다.
TCP 3-way handshake

TCP 3-way handshake 는 양 끝단의(end to end) 기기의 신뢰성 있는 데이터 통신을 위해, TCP 방식이 연결을 설정하는 방식이다.
마치 전화를 거는 것 같이 연결을 설정하는 이 방식은 세단계를 통해 연결 설정을 한다.
Step 1 (SYN): 처음으로, sender는 receiver와 연결 설정을 위해, segment를 랜덤으로 설정된 SYN(Synchronize Sequence Number)와 함께 보낸다. 이 요청은 receiver에게 sender가 통신을 시작하고 싶다고 알림.
Step 2(SYN / ASK): receiver 는 받은 요청을 바탕으로 SYN/ACK 신호 세트를 응답한다. Acknowledgement(ACK) 응답으로 보내는 segment가 유효한 SYN요청을 받았는지를 의미한다.
Step 3(ACK): 마지막 단계에서, sender는 받은 ACK를 receiver에게 전송을 하면서, 신뢰성 있는 연결이 성립되었다는 사실을 sender와 receiver 양쪽에서 알 수 있고, 실제 데이터 전송이 시작되게 된다.
UDP
TCP 처럼 가상의 회선을 설정해 신뢰성을 보장하면 당연히 좋은데 왜 UDP를 사용할까?
화상체팅을 한다고 가정했을때 상대방에게 데이터를 보낼때 마다 지연시간이 조금씩 발생하면 싱크가 맞지 않는다.
UDP는 애플리케이션의 정교한 제어가 가능하다.
TCP의 경우 receiver가 전송 받을 준비가 될 때까지 세그먼트를 반복적으로 재전송한다. 실시간 전송에 대한 요구가 큰 애플리케이션 들은 높은 지연시간를 지양하므로 약간의 데이터 손실을 감수한다.
연결설정에 무관하다.
TCP 3-way handshake 가 없는 UDP는 예비과정 없이 바로 전송을 시작한다. 설정단계에서 발생하는 지연이 없는 만큼, 반응속도가 빠르다. 또한, TCP 가 신뢰성을 위해 많은 파라미터와 정보 전달이 필요함과 비교해 UDP는 연결설정 관리를 하지 않기 때문에 어떠한 파라미터도 기록하지 않는다. 이때문에 서버에서도 TCP와 비교에 더 많은 클라이언트를 수용이 가능하다.