Skip to main content UDP (User Datagram Protocol)
1️⃣ 전송 계층
- 송수신자를 연결하는 통신 서비스를 제공하는 계층.
- 데이터의 전달을 담당
- 프로토콜 : TCP, UDP

2️⃣ UDP란?
- 데이터를
데이터그램
단위로 처리 - 데이터그램 : UDP 헤더 + 실제 UDP 데이터
비연결형
프로토콜 - 각각의 패킷은 다른 경로로 전송되고, 각 패킷은 독립적인 관계를 가짐
- 송신자는 수신자가 준비되었는지 확인X
- 낮은 신뢰성
- 데이터 손실이나 오류가 발생하면 애플리케이션이 처리
- 순서 보장X
- TCP보다 빠른 속도
- 패킷 크기 제한
- 한 패킷당 최대 65,535byte의 데이터 전송 가능
- 정리
- 장점 : 속도, 간단한 구현
- 단점 : 낮은 신뢰성, 순서 보장X
| TCP | UDP |
연결 방식 | 연결형 | 비연결형 |
데이터 수신 여부 | O | X |
전송 순서 보장 | O | X |
신뢰성 | 높음 | 낮음 |
속도 | 비교적 느림 | 비교적 빠름 |
패킷 교환 방식 | 가상 회선 | 데이터그램 |
헤더 길이 | 20 byte | 8 byte |
통신 방식 | 1:1 | 1:1, 1:N, N:M |

3️⃣ UDP 패킷
- UDP 패킷 : 헤더 + 페이로드(실제 데이터 내용)
- UDP 헤더
- 길이 : 8바이트
- 구성
- 출발지 포트
- 목적지 포트
- 길이
- 응용 계층에서 생성한 UDP
페이로드
와 전송 계층에서 생성한 UDP 헤더
가 더해진 데이터그램
길이
- 오류 검사(CheckSum)
- 패킷의 무결성을 검사
- 최소한의 오류만을 검출
- 일반적으로 비활성 상태 - IPv6에서는 체크섬이 필수
- 계산 방법
- UDP 헤더와 페이로드를 연결하여 하나의 데이터를 만든다.
- 데이터를 16비트 단위로 나눈다.
- 각 16비트 단위의 값을 모두 더한다.
- 이렇게 계산된 값의 하위 16비트를 구한다.
- 최종적으로 Checksum은 하위 16비트 값의 보수(ones’ complement)를 취하여 얻는다.

4️⃣ UDP 서버
- TCP와 달리 핸드셰이크 과정이 없음
- 연결 자체가 없기 때문에(connect 함수 존재x), 서버/클라이언트 소켓의 구분x
- 소켓을 활용해 IP와 PORT 기반으로 데이터 전송
- 서버와 클라이언트는 1:1, 1:N, N:M으로 연결 가능 ⇒ 브로드캐스트, 멀티캐스트
- 데이터그램(메시지) 단위로 전송되며, 그 크기는 65535 byte. 크기가 초과되면 잘라서 전송
- 흐름 제어X ⇒ 패킷의 전송/오류 여부를 확인 X
- 참고사항
- 흐름제어 : 데이터의 송수신 데이터 처리 속도를 조절하여, 수신자의 버퍼 오버플로우를 조절
- 혼잡제어 : 네트워크 내의 패킷 수가 넘치지 않도록 방지
5️⃣ UDP 용도
- 실시간 데이터 전송
- 음성 통화와 스트리밍에서는 빠른 전송이 중요하고, 약간의 데이터 손실 허용
- 여러 상대에게 같은 내용의 데이터 전송
- 신뢰성이 필요하지 않은 소량의 데이터 전송