TCP와 UDP

TCP와 UDP는 모두 네트워크에서 데이터를 전송할 때 사용되는 두 가지 주요 전송 계층 프로토콜입니다. 동일 계층의 프로토콜이지만, 작동 방식이 서로 다르고 이에 따라 파생된 특성 또한 다르기 때문에 사용되는 서비스의 유형도 달라집니다.

TCP

전송 제어 프로토몰 Transmission Control Protocol. OSI 모형에서 4번째 계층인 전송 계층에서 사용하는 프로토콜입니다. 인터넷 프로토콜 스위트(IP)의 핵심 프로토콜 중 하나로, IP와 함께 TCP/IP라는 명칭으로도 널리 불립니다.

TCP의 통신 방법

1. 연결 설정 (3-Way Handshake)

-송신자와 수신자 간 데이터 통신 전 연결 설정을 하는 단계입니다.
-위에서 살펴본 3-Way Handshake를 진행합니다.
-이를 통해 연결 설정이 완료되면, 연결이 종료될 때까지 연결이 유지되는 동안은 3-Way Handshake는 진행되지 않습니다.

2. 데이터 전송

-연결이 설정된 후 데이터 패킷이 순차적으로 송신자로부터 수신자에게 전송되는 단계입니다.
-수신자는 받은 데이터(패킷)에 대해 확인 응답(ACK)을 보냅니다.
-데이터가 손실되거나 순서가 어긋낫 경우, TCP는 해당 패킷을 재전송해 신뢰성을 보장합니다.

3. 연결 종료 (4-Way Handshake)

-모든 데이터를 주고받은 뒤 연결을 종료하는 단계입니다.
-연결이 필요하지 않게 되면 송신자 혹은 수신자 중 하나가 연결 종료를 요청합니다.
-이후 양측이 이를 확인한 후 연결이 종료됩니다.

3-Way Handshake

TCP는 데이터의 전송 신뢰성, 정확성과 순서를 보장하기 위해 3-Way Handshake 라고 하는 송신자와 수신자 간의 연결 설정 단계를 거칩니다.

단계 풀네임 설명
SYN Synchronization - 송신자가 수신자에게 통신을 시작하고 싶다는 신호로 SYN 패킷을 보냅니다.
- SYN 패킷에는 초기 순서 번호(ISN)가 포함됩니다.
SYN_ACK Synchronization-Acknowledgement - 수신자는 송신자의 요청을 받아들이면 SYN-ACK 패킷을 보냅니다.
- SYN 플래그와 ACK 플래그를 함께 담아 보냅니다.
SYN 플래그 : 수신자도 송신자에게 데이터를 전송할 준비가 되었음
ACK 플래그 : 송신자가 보낸 SYN 패킷을 잘 받았음을 알리기 위한 플래그
ACK 번호에 송신자가 보낸 초기 순서 번호에 1을 더해 반환합니다.
ACK Acknowledgement - 송신자는 수신자로부터 SYN-ACK 패킷을 받으면, ACK 패킷을 반환합니다.
- 이는 수신자의 SYN 수락과 자신도 통신할 준비가 되었음을 알리기 위함입니다.
- 수신자의 순서 번호에 1을 더한 ACK 번호가 포함됩니다.

위의 3-Way Handshake 가 바로 TCP의 가장 큰 특징입니다. TCP는 이 과정이 완료된 후부터 실제 데이터 통신을 진행하며, 연결이 종료될 때까지는 다시 실행되지 않습니다. 다만 매 패킷이 전송될 때마다 정상적으로 수신했다는 ACK 패킷이 응답으로 보내집니다.

TCP가 사용되는 곳

웹 브라우징, HTTP, HTTPS, 이메일(POP3, IMAP, SMTP), 파일 전송(FTP) 등 굉장히 다양하고 넓은 범위에서 사용됩니다.

UDP

사용자 데이터그램 프로토콜 User Datagram Protocol. OSI 모형에서 4번째 계층인 전송 계층에서 사용하는 프로토콜입니다.

UDP의 통신 방법

UDP의 통신 방법은 TCP에 비해 굉장히 단순하고 직관적입니다. 요청을 하고, 응답을 하는 게 전부입니다. TCP와는 달리 데이터를 신속하게 전송하는 데 중점을 둡니다.

1. 송신자가 송신할 데이터를 준비

-송신자가 전송할 데이터를 준비하고 패킷으로 나눕니다.
-패킷에는 목적지 IP 주소와 포트 번호가 포함됩니다.

2. UDP 패킷 전송

-위 단계에서 준비된 UDP 패킷을 수신자에게 송신합니다.
-TCP와 같은 연결 설정 과정은 필요가 없으며
-수신자의 요청이 없더라도 UDP 패킷은 전송됩니다.

3. 수신자가 패킷을 수신

-수신자가 송신자로부터 전달된 패킷을 수신합니다.
-수신된 패킷을 기반으로 수신자 쪽에서 데이터를 처리합니다.

4. 통신 완료

-UDP는 패킷 전송 후 확인 응답(ACK)을 기다리지 않습니다.
-때문에 송신자는 패킷을 전송한 즉시 통신을 완료했다고 간주합니다.
-때문에 연결 종료 과정이 없습니다.

UDP가 사용되는 곳

비디오 및 오디오 스트리밍, 온라인 게임, DNS 등.

TCP와 UDP의 특징과 장단점

특성 및 장단점 TCP UDP
연결 방식 연결 지향적 비연결 지향적
데이터 전송 신뢰성 신뢰성 보장 (재전송, ACK) 신뢰성 없음(재전송 없음)
패킷 순서 보장 순서 보장 순서 보장 없음
혼잡 제어 있음 없음
오버헤드 높음 낮음
전송 속도 높음 낮음
멀티캐스트 및 브로드캐스트 미지원 지원

Reference

Wikipedia - TCP
Wikipedia - UDP
Linkedin - TCP joke
Viran Malaka - Make UDP communication more reliable in NodeJS
SUBSPACE - TCP and UDP Performance