UDP (User Datagram Protocol) — TCP·IP 스택 Transport 계층의 비연결형(connectionless) 프로토콜. 연결 설정 없이 데이터를 독립적으로 전송하여 신속성을 우선시하며, 신뢰성은 보장하지 않는다.
주요 특징
- Connectionless — 송·수신 노드가 데이터를 주고받기 전 연결을 미리 약속하지 않음. 메시지에 수신자 IP/Port를 명기.
- Unreliable — 메시지 수신 여부를 확인하지 않음. 유실·순서 뒤바뀜이 발생할 수 있음.
- 신속성 — 헤더가 8 Byte로 최소화되어 빠른 전송에 적합.
- 데이터 경계 유지 — Datagram 단위로 송수신. 3번
sendto()하면 3번recvfrom()해야 함. - 에러 처리: Checksum으로 손상 감지 → 손상된 패킷은 버림, 재전송 요구 없음.
UDP 헤더 구조
총 8 Byte, 2 Byte × 4 필드로 구성:
| 필드 | 크기 | 역할 |
|---|---|---|
| Source Port | 2 Byte | 송신 Application Port 번호 |
| Destination Port | 2 Byte | 수신 Application Port 번호 |
| Total Length | 2 Byte | 전체 Datagram 길이 (헤더 + Data) |
| Checksum | 2 Byte | 헤더 + 데이터 무결성 검증 |
Process-to-Process 통신
- Transport 계층은 프로세스-대-프로세스 통신을 담당.
- IP 주소로 목적 노드 도달 → Port 번호로 노드 내 특정 Process 연결.
- 클라이언트는 서버 IP·Port를 알고 데이터를 전송. 서버는 수신 패킷으로부터 클라이언트 IP·Port 확보.
- 클라이언트 Port는 일반적으로 미사용 임시 번호를 사용.
Well-Known Port (UDP 사용)
주요 Port 번호 (UDP 지원):
| Port | Protocol | 설명 |
|---|---|---|
| 7 | Echo | 수신한 Datagram 반환 |
| 9 | Discard | 수신한 Datagram 폐기 |
| 13 | Daytime | 날짜·시간 반환 |
| 53 | DNS | Domain Name Service |
| 67 | DHCP | Dynamic Host Configuration |
| 69 | TFTP | Trivial File Transfer Protocol |
| 123 | NTP | Network Time Protocol |
| 161 | SNMP | Simple Network Management (서버) |
| 162 | SNMP | Simple Network Management (클라) |
통신 범위 (Types of Communication)
UDP는 세 가지 전송 범위를 지원:
| 방식 | 대상 |
|---|---|
| Unicast | 특정 IP를 가진 단일 노드 |
| Multicast | 멀티캐스트 IP (224.0.1.0~239.255.255.255)에 가입한 노드 |
| Broadcast | 네트워크 내 모든 노드. 192.168.0.255 (서브넷) / 255.255.255.255 (전세계) |
UDP 장단점
단점:
- 데이터 수신 확인 없음 → 누락 인지 불가.
- 송·수신 순서 보장 없음.
장점:
- TCP 대비 헤더·프로토콜이 간단 → 전송 속도 빠르고 CPU·통신 리소스 절약.
- 데이터 정확성보다 시간 민감성이 우선인 응용에 적합 — YouTube, 실시간 비디오 스트리밍 등.
프로그래밍 모델
- 소켓 생성 →
sendto()/recvfrom()— 매 전송마다 목적지 IP·Port 지정. connect()수행 시 소켓에 IP·Port 등록 →send()/recv()사용 가능 (매번 지정 불필요, 효율적).
UDP NM (AUTOSAR 네트워크 관리)
차량 Ethernet에서 사용되는 네트워크 관리(NM) 프로토콜. 기존 CAN 모듈의 NM 기능을 TCP/IP 버전으로 포팅한 것으로, UDP 메시지를 활용해 Sleep/Wake-up 조율을 수행한다.
동작 원리
- CAN NM은 Direct·Indirect 두 방식을 지원하지만, UDP NM은 Direct NM 기법만 사용.
- 네트워크에 참여하는 모든 노드는 브로드캐스트로 주기적 NM 메시지를 전송.
- 특정 제어기가 Sleep으로 천이할 준비가 된 경우, 다른 노드의 NM 메시지를 수신하면 Sleep 천이를 연기.
- 모든 노드가 NM 메시지 전송을 중단하면 네트워크에 연결된 모든 제어기가 Sleep 모드로 천이.
- Partial Network 지원 — 일부 노드만 활성 상태 유지 가능.
State Machine 동작
- Bus-Sleep / Prepare Bus-Sleep 모드에서 천이하여 활성화된 경우 → 즉시 전송 후 주기적 전송.
- Normal Operation / Ready Sleep 상태에서 천이한 경우 → 즉시 전송하지 않고 주기적 전송 (동시 전송 burst 방지).
- 반복 메시지 전송으로 네트워크 내 참여 노드를 지속 확인하며 네트워크 유지.