본문으로 건너뛰기
김신건의 로그

UDP

· 수정 · 📖 약 1분 · 534자/단어 #network #protocol #transport-layer
User Datagram Protocol, udp

정의

UDP (User Datagram Protocol)는 비연결·비신뢰 전송 계층 프로토콜이다. RFC 768 (1980) 로 정의되었다. TCP 와 대비된다.

“보내고 잊는다(fire-and-forget)”, 송신측은 패킷을 던지고 끝, 받았는지 안 받았는지 확인하지 않는다.

핵심 특성

  • 비연결(Connectionless): 핸드셰이크 없음, 즉시 송신
  • 비순서: 수신 순서 보장 없음
  • 비신뢰: 손실되어도 재전송 없음
  • 가벼움: 헤더 8 bytes (TCP 의 20+ bytes 와 비교)
  • 단순함: 흐름 제어 / 혼잡 제어 없음

헤더 구조

UDP 패킷 헤더는 총 8 bytes (TCP 의 20+ bytes 와 대비).

필드크기설명
Source Port2 bytes송신측 포트
Destination Port2 bytes수신측 포트
Length2 bytes헤더 + 데이터 길이
Checksum2 bytes무결성 검증

전송 방식, Fire-and-Forget

UDP 는 핸드셰이크 없이 즉시 송신한다. ACK 없음, 손실되어도 송신측은 알 수 없다.

언제 UDP 를 쓰는가

신뢰성보다 저지연·저오버헤드가 더 중요할 때.

  • DNS: 작은 질의·응답, 응답 안 오면 재시도하면 됨
  • 실시간 미디어: 비디오 통화에서 1 프레임 손실은 재전송할 시간이 없음, 다음 프레임이 더 중요
  • 게임: 위치 업데이트가 1 패킷 잃어도 다음 패킷이 곧 옴
  • DHCP, NTP, SNMP: 단순한 요청·응답
  • QUIC (그리고 HTTP/3): UDP 위에서 신뢰성·순서 보장을 사용자 영역에서 직접 구현

”UDP 위에 신뢰성을 다시 만든다”는 역설

QUIC, WebRTC SCTP, 게임 엔진의 reliable UDP, 모두 UDP 위에서 TCP 와 유사한 기능을 직접 구현한다. 왜?

  • TCP 의 한계를 우회: OS 커널 의존, Head-of-Line Blocking, 연결 변경 시 끊김
  • 선택적 신뢰성: 메시지마다 “ordered / unordered, reliable / unreliable” 선택 가능 (SCTP 의 partial reliability)
  • 빠른 진화: 사용자 영역 구현이라 OS 업데이트 없이 개선

UDP 의 “단순함”은 양날의 검, 직접 구현해야 하지만 그만큼 유연하다.

이 글의 용어 (3개)
[Network] HTTP/3: QUIC 위의 HTTP, 0-RTT, connection migrationnetwork
정의 HTTP/3 (2022, RFC 9114) 는 HTTP 의 전송 레이어를 TCP → QUIC 으로 교체한 버전. UDP 위에 QUIC, QUIC 위에 HTTP. 핵심 동기:…
Head-of-Line Blockingnetwork
정의 Head-of-Line Blocking (HOLB) 은 처리 순서가 정해진 큐에서 맨 앞 항목의 지연이 그 뒤 항목 전체의 지연으로 전파되는 현상이다. 네트워크 프로토콜에서…
TCPnetwork
정의 TCP (Transmission Control Protocol)는 신뢰성 있는 연결 지향 전송 계층 프로토콜이다. RFC 9293 으로 정의되어 있다. HTTP/1.1·2,…

💬 댓글

사이트 검색 / 명령어

검색

스크롤 = 확대/축소 · 드래그 = 이동 · 0 = 원래 크기 · ESC = 닫기