Tan Kim

UDP (User Datagram Protocol)

UDP는 비연결(connectionless) 전송 계층 프로토콜이다. 연결 수립 없이 데이터그램을 전송하며, 신뢰성 보장 없이 속도를 우선시한다.

TCP vs UDP 비교

항목 TCP UDP
연결 연결 지향 (3-way handshake) 비연결
신뢰성 보장 (재전송, 순서 보장) 미보장
속도 느림 빠름
헤더 크기 20~60 bytes 8 bytes
흐름/혼잡 제어 있음 없음
사용 사례 HTTP, FTP, SSH, DB DNS, 스트리밍, 게임, WebRTC

UDP 헤더 구조

 0      7 8     15 16    23 24    31
┌────────┬────────┬────────┬────────┐
│ Source Port    │ Destination Port │
├────────────────┼──────────────────┤
│    Length      │    Checksum      │
└────────────────┴──────────────────┘
│               Data               │
└──────────────────────────────────┘
필드 크기 설명
Source Port 16 bit 출발지 포트 (선택적)
Destination Port 16 bit 목적지 포트
Length 16 bit UDP 헤더 + 데이터 전체 길이
Checksum 16 bit 오류 감지 (선택적)

주요 사용 사례

DNS (포트 53)

  • 빠른 단일 요청-응답 구조에 적합
  • 재전송이 필요하면 클라이언트가 직접 재시도

스트리밍 / VoIP

  • 일부 패킷 손실보다 지연 최소화가 더 중요한 경우
  • 누락된 프레임은 건너뛰는 방식으로 처리

온라인 게임

  • 실시간성이 최우선 — 오래된 위치 정보는 무의미
  • 게임 자체 로직에서 신뢰성 처리

WebRTC

  • 브라우저 간 P2P 실시간 통신
  • UDP 위에서 자체적으로 SRTP(암호화), RTCP(통계) 구현

QUIC / HTTP/3

  • UDP 위에서 동작하는 구글이 개발한 전송 프로토콜
  • TCP의 HOL(Head-of-Line) Blocking 문제 해결
  • 연결 수립 시간 단축 (0-RTT / 1-RTT)

UDP 주요 포트

포트 프로토콜
53 DNS
67/68 DHCP
123 NTP
161 SNMP
443 QUIC (HTTP/3)
51820 WireGuard

UDP의 신뢰성을 보완하는 방법

UDP 자체는 신뢰성이 없지만, 애플리케이션 레이어에서 필요한 만큼만 구현하는 방식으로 보완한다.

  • 시퀀스 번호: 패킷 순서 보장
  • ACK + 재전송: 손실 감지 후 재요청
  • FEC (Forward Error Correction): 수신 측에서 손실 복원
  • ARQ (Automatic Repeat reQuest): 손실 시 자동 재전송

메모

이 글에 대해 물어보기