UDP(User Datagram Protocol)는 비연결형(connectionless) 전송 계층 프로토콜로, 데이터를 데이터그램(datagram) 단위로 전송한다. 이는 TCP(Transmission Control Protocol)와는 달리 연결을 설정하지 않고 데이터를 송수신하는 방식이다.
비연결형 (Connectionless)
통신 전에 연결을 설정하지 않으며, 수신자의 응답 여부를 확인하지 않는다.
비신뢰성 (Unreliable)
패킷의 손실(loss), 중복(duplication), 순서 뒤바뀜(out-of-order)에 대한 보장을 하지 않는다.
빠른 속도 (Low Latency)
연결 설정 및 오류 제어 과정이 없으므로 전송 지연(latency)이 매우 낮다.
헤더가 작음 (Lightweight)
UDP 헤더는 8바이트로 TCP보다 훨씬 작아 오버헤드가 적다.
UDP 헤더는 다음과 같은 필드들로 구성되며, 총 8바이트의 고정 크기를 가진다.
| 필드명 | 크기(Bytes) | 설명 |
|---|---|---|
| Source Port | 2 | 송신자의 포트 번호 |
| Destination Port | 2 | 수신자의 포트 번호 |
| Length | 2 | 헤더 + 데이터 전체 길이 |
| Checksum | 2 | 오류 검출용 체크섬 (선택적 사용) |
UDP는 다음과 같은 실시간성이 중요한 응용에서 널리 사용된다.
| 항목 | TCP | UDP |
|---|---|---|
| 연결 방식 | 연결형 (Connection-Oriented) | 비연결형 (Connectionless) |
| 신뢰성 | 보장 (재전송, 순서, 흐름 제어 포함) | 비보장 (손실, 순서 뒤바뀔 수 있음) |
| 속도 | 느림 | 빠름 |
| 헤더 크기 | 최소 20바이트 | 8바이트 |
| 사용 예시 | 웹, 이메일, 파일 전송 | 스트리밍, 게임, DNS 등 |
UDP에서는 다음과 같이 데이터그램 단위로 전송이 이루어진다.
UDP는 신뢰성을 포기하고 속도와 단순성을 추구하는 프로토콜로, 오류 복구보다 빠른 전송이 중요한 경우에 적합하다. 응용 수준에서 신뢰성을 자체적으로 구현할 수 있으며, 네트워크 부하를 최소화하면서도 빠른 데이터 전달이 가능하다는 장점이 있다.