TCP vs UDP

기술노트

TCP vs UDP

개요

TCP(Transmission Control Protocol)와 UDP(User Datagram Protocol)는 인터넷 프로토콜 스위트(TCP/IP)의 전송 계층에서 사용되는 두 가지 주요 프로토콜입니다. 두 프로토콜은 데이터 전송 방식과 신뢰성 측면에서 근본적인 차이를 가지고 있으며, 각각 다른 용도에 최적화되어 있습니다.

TCP (Transmission Control Protocol)

특징

  • 연결 지향적 (Connection-oriented): 데이터 전송 전 연결 설정 필요
  • 신뢰성 보장: 패킷 손실 시 재전송 메커니즘 제공
  • 순서 보장: 데이터 패킷이 전송된 순서대로 도착 보장
  • 흐름 제어: 수신자의 처리 속도에 맞게 데이터 전송 속도 조절
  • 혼잡 제어: 네트워크 상황에 따라 전송 속도 자동 조절
  • 오류 검출 및 복구: 체크섬을 통한 데이터 무결성 검증

TCP 연결 과정 (3-way Handshake)

  1. SYN: 클라이언트가 서버에 연결 요청 (시퀀스 번호 전송)
  2. SYN-ACK: 서버가 클라이언트의 요청 수락 (시퀀스 번호 및 ACK 전송)
  3. ACK: 클라이언트가 서버의 응답 확인 (연결 설정 완료)

TCP 연결 종료 과정 (4-way Handshake)

  1. FIN: 클라이언트가 연결 종료 요청
  2. ACK: 서버가 종료 요청 확인
  3. FIN: 서버가 연결 종료 요청
  4. ACK: 클라이언트가 종료 요청 확인

사용 사례

  • 웹 브라우징 (HTTP/HTTPS)
  • 이메일 (SMTP, POP3, IMAP)
  • 파일 전송 (FTP)
  • 원격 접속 (SSH, Telnet)
  • 데이터베이스 접속 (MySQL, PostgreSQL)

UDP (User Datagram Protocol)

특징

  • 비연결형 (Connectionless): 연결 설정 없이 데이터 전송
  • 신뢰성 없음: 패킷 손실 시 재전송 메커니즘 없음
  • 순서 보장 없음: 패킷이 보낸 순서와 다르게 도착할 수 있음
  • 헤더 크기 작음: TCP보다 오버헤드가 적음 (8바이트 vs TCP 20바이트)
  • 속도 우선: 지연 시간이 적고 빠른 전송 가능
  • 단순한 오류 검출: 기본적인 체크섬만 제공

UDP 통신 과정

  • 연결 설정 없이 바로 데이터그램(패킷) 전송
  • 수신 확인(ACK) 없음
  • 패킷 손실 시 애플리케이션 레벨에서 처리 필요

사용 사례

  • 실시간 스트리밍 (비디오, 오디오)
  • 온라인 게임
  • VoIP (Voice over IP)
  • DNS 쿼리
  • IoT (사물인터넷) 통신
  • 방송 프로토콜 (DHCP, SNMP)

TCP와 UDP의 비교

TCP vs UDP 비교
특성 TCP UDP
연결 방식 연결 지향적 비연결형
신뢰성 높음 (패킷 손실 복구) 낮음 (패킷 손실 가능)
데이터 순서 보장 보장하지 않음
속도 상대적으로 느림 빠름
헤더 크기 20-60 바이트 8 바이트
혼잡 제어 지원 지원하지 않음
데이터 경계 스트림 기반 (경계 없음) 메시지 기반 (데이터그램)
적합한 용도 신뢰성이 중요한 데이터 전송 실시간 통신, 속도가 중요한 경우

선택 기준

TCP 선택 시 고려사항

  • 데이터의 정확한 전달이 중요한 경우
  • 순서대로 데이터를 수신해야 하는 경우
  • 네트워크 상태가 불안정할 수 있는 경우
  • 대용량 데이터 전송 시

UDP 선택 시 고려사항

  • 빠른 응답 시간이 필요한 경우
  • 일부 데이터 손실이 허용되는 경우
  • 단순한 요청-응답 패턴의 통신
  • 실시간 미디어 스트리밍

하이브리드 접근 방식

일부 애플리케이션은 TCP와 UDP의 장점을 결합하거나 상황에 따라 선택적으로 사용합니다:

  • QUIC (Quick UDP Internet Connections): UDP 기반이지만 TCP와 유사한 기능 제공
  • WebRTC: 미디어 스트리밍에는 UDP, 시그널링에는 TCP 사용
  • SRT (Secure Reliable Transport): UDP 기반이지만 신뢰성 추가

네트워크 레이어에서의 위치

TCP와 UDP는 TCP/IP 모델의 전송 계층에 위치하며, 네트워크 계층(IP)과 애플리케이션 계층 사이에서 동작합니다:

  1. 애플리케이션 계층 (HTTP, SMTP, FTP 등)
  2. 전송 계층 (TCP, UDP)
  3. 인터넷 계층 (IP)
  4. 네트워크 액세스 계층 (이더넷, Wi-Fi 등)

성능 최적화

TCP 최적화 기법

  • 윈도우 크기 조정
  • Nagle 알고리즘 비활성화 (필요 시)
  • TCP Fast Open 사용
  • TCP 타임아웃 및 재전송 설정 조정

UDP 최적화 기법

  • 애플리케이션 레벨 확인 응답 구현
  • 적절한 패킷 크기 설정
  • 패킷 손실 처리 로직 구현
  • 혼잡 제어 로직 추가 (필요 시)

관련 주제

  • OSI 7계층 모델
  • IP (Internet Protocol)
  • 소켓 프로그래밍
  • 네트워크 보안
  • QoS (Quality of Service)
  • 방화벽 및 NAT 환경에서의 TCP/UDP