UDP(用户数据报协议)
基本特点
UDP 是一种无连接的、不可靠的运输层协议,提供最简单的传输服务。
主要特点: - 无连接:发送前不需要建立连接 - 不保证可靠交付:不重传、不排序 - 无拥塞控制:网络拥塞时不降低发送速率 - 保留报文边界:面向报文,应用层每次调用产生一个UDP数据报 - 开销小:首部仅 8字节(TCP最小20字节) - 支持多播和广播:TCP只支持单播
首部格式
┌─────────────────┬─────────────────┐
│ 源端口(16) │ 目的端口(16) │
├─────────────────┼─────────────────┤
│ 长度(16) │ 检验和(16) │
└─────────────────┴─────────────────┘
│ 数据... │
- 长度:UDP数据报总长度(首部+数据),最小8(仅首部)
- 检验和:覆盖伪首部+首部+数据,检验传输中的差错(可选)
伪首部(不传输,只用于计算检验和):
源IP | 目的IP | 0 | 协议号(17) | UDP长度
UDP适合的应用场景
| 场景 | 原因 |
|---|---|
| DNS查询 | 请求/应答简单,超时自行重试 |
| DHCP | 广播发现,不需要连接 |
| 视频/音频流 | 实时性>可靠性,少量丢包可接受 |
| 游戏 | 低延迟优先,重传无意义 |
| SNMP | 简单管理查询 |
| RTP | 实时传输协议基于UDP |
UDP vs TCP
| 特性 | UDP | TCP |
|---|---|---|
| 连接 | 无 | 有(三次握手) |
| 可靠性 | 不保证 | 保证(ACK+重传) |
| 顺序 | 不保证 | 保证 |
| 流量控制 | 无 | 有(rwnd) |
| 拥塞控制 | 无 | 有(cwnd) |
| 首部开销 | 8字节 | 20~60字节 |
| 传输模式 | 报文 | 字节流 |
| 广播/多播 | 支持 | 不支持 |
QUIC:基于UDP重构TCP功能
Google设计的QUIC协议(HTTP/3底层)在UDP上实现了: - 多路复用(解决TCP队头阻塞) - 0-RTT连接(缓存会话密钥) - 连接迁移(IP变化时不断连接)
参见
- [[05-运输层]] — 运输层完整介绍
- [[TCP三次握手]] — TCP连接建立
- [[06-应用层]] — DNS/DHCP等使用UDP
- [[08-音视频服务]] — RTP基于UDP