TCP와 UDP

기술노트

TCP와 UDP (Transmission Control Protocol & User Datagram Protocol)

TCP와 UDP는 OSI 7계층 중 전송 계층(Transport Layer)에서 동작하는 핵심 프로토콜입니다. 두 프로토콜은 IP(Internet Protocol) 위에서 동작하며, 포트(Port) 번호를 사용하여 특정 애플리케이션에 데이터를 전달하는 역할을 하지만, 데이터를 전송하는 방식과 우선순위에서 근본적인 차이를 보입니다.


🤝 TCP (Transmission Control Protocol)의 특징

TCP는 연결 지향(Connection-oriented) 프로토콜로, 데이터 전송의 신뢰성을 보장하는 데 중점을 둡니다.

  • 연결 지향 : 데이터 전송 전에 3-way handshake를 통해 송신자와 수신자 간의 논리적인 연결을 설정하고, 전송이 끝나면 4-way handshake를 통해 연결을 해제합니다.
  • 높은 신뢰성 : 데이터의 순서를 보장하고(Sequencing), 데이터가 올바르게 수신되었는지 확인(Acknowledgement)하며, 데이터가 손실된 경우 재전송(Retransmission)하는 메커니즘을 갖추고 있습니다.
  • 흐름 제어 (Flow Control) : 수신 측의 처리 능력을 고려하여 송신 측이 데이터 전송량을 조절합니다 (Sliding Window 방식).
  • 혼잡 제어 (Congestion Control) : 네트워크의 혼잡 상태를 파악하고, 데이터 전송량을 조절하여 네트워크 붕괴를 방지합니다.
  • 사용 예시 : HTTP/HTTPS, FTP, SMTP, SSH 등 신뢰성이 중요한 대부분의 애플리케이션에서 사용됩니다.

🚀 UDP (User Datagram Protocol)의 특징

UDP는 비연결 지향(Connectionless) 프로토콜로, 데이터 전송의 속도실시간성을 우선시합니다.

  • 비연결 지향 : 연결 설정 과정 없이, 송신 측이 일방적으로 데이터를 전송합니다. (Datagram 방식)
  • 낮은 신뢰성 : 데이터의 순서나 도착 여부를 보장하지 않으며, 손실된 데이터를 재전송하지 않습니다. 신뢰성 확보는 애플리케이션 계층에서 직접 처리해야 합니다.
  • 최소한의 오버헤드 : TCP의 복잡한 기능들이 없어 헤더가 단순하고(8 bytes), 그만큼 전송 속도가 빠릅니다.
  • 브로드캐스트 및 멀티캐스트 : 1:1 통신(Unicast)만 가능한 TCP와 달리, 1:N(Broadcast) 또는 1:M(Multicast) 통신이 가능합니다.
  • 사용 예시 : DNS, DHCP, 실시간 스트리밍(VoIP, 비디오), 온라인 게임 등 속도가 중요한 애플리케이션에서 사용됩니다.

💡 개발자 핵심 Point

  • TCP는 신뢰성이 중요한 파일 전송, UDP는 약간의 손실이 있어도 괜찮은 실시간 영상처럼, 서비스의 특징에 따라 적절한 프로토콜을 선택하는 것이 중요합니다.
  • TCP는 '전화 통화'에, UDP는 '우편 엽서'에 비유할 수 있습니다. 전화는 상대방과 연결이 보장된 상태에서 대화가 오가지만, 엽서는 상대방이 받았는지, 여러 장을 보냈을 때 순서대로 도착했는지 보장할 수 없습니다.
  • 최근에는 UDP를 기반으로 TCP의 신뢰성 기능을 일부 구현한 QUIC(Quick UDP Internet Connections) 프로토콜이 주목받고 있습니다. HTTP/3의 기반이 되는 프로토콜로, TCP의 연결 설정 지연(Handshake 과정)과 같은 단점을 개선했습니다.
  • 면접에서 '3-way handshake'와 '4-way handshake'의 과정(SYN, ACK, FIN 플래그의 교환)에 대한 질문이 자주 등장하므로, 각 단계의 의미를 정확히 이해하는 것이 중요합니다.