UDP报文头部固定8字节,由源端口、目的端口、长度、校验和四个16位字段构成;最小数据报长8字节(仅报头),负载占比随数据量增加而提升,小包时开销显著,大包时接近99.5%;相比TCP的20字节头部,UDP在小包场景下负载效率更高。

UDP 报文头部固定为 8 字节,这是其最显著的轻量特征。在实际传输中,这个固定开销会直接影响有效载荷(即应用数据)所占的比例,尤其在小包场景下尤为明显。
UDP 报头结构与最小长度约束
UDP 报头由四个 16 位字段组成:源端口、目的端口、长度、校验和,共 8 字节。其中“长度”字段表示整个 UDP 数据报的总字节数(含报头 + 数据),最小值为 8 —— 即空数据报(仅报头)。这意味着:
- 发送纯控制信息(如 DNS 查询请求)时,若只携带 1 字节数据,总长为 9 字节,负载占比仅约 11%
- 若数据为 7 字节,总长 15 字节,负载占比约 47%
- 只有当数据 ≥ 8 字节时,负载比例才超过 50%
MTU 限制下的典型负载效率
以以太网常见 MTU=1500 字节为例,扣除 IP 报头(通常 20 字节)后,UDP 可用最大净荷为 1472 字节(1500 − 20 − 8)。此时:
- UDP 总长度 = 1480 字节(1472 + 8)
- 负载占比 = 1472 / 1480 ≈ 99.5%
- 头部开销占比不足 0.5%,几乎可忽略
但要注意:实际应用常因分片规避、路径 MTU 探测或协议设计(如 DNS 响应限 512 字节)主动限制 UDP 负载,此时开销占比会显著上升。
对比 TCP 看开销差异
TCP 固定报头至少 20 字节,同样在 1500 MTU 下,可用净荷最多为 1460 字节(1500 − 20 − 20),负载占比约 98.6%。相比之下:
- UDP 比 TCP 少 12 字节固定开销,在小包场景优势更突出
- 例如发送 20 字节应用数据:UDP 总长 28 字节(负载占比 71%),TCP 至少 40 字节(负载占比 50%,且可能含选项进一步压缩)
- 这对高频小包通信(如传感器心跳、VoIP 语音帧)有实质性带宽和延迟收益
校验和对开销的隐性影响
UDP 校验和字段本身是 2 字节,但计算时需构造伪首部(12 字节 IPv4 + 协议号 + UDP 长度),实际校验开销远超字面。不过:
- Linux 默认启用校验和计算,可在 socket 层通过
setsockopt(fd, IPPROTO_UDP, SO_NO_CHECK, &on, sizeof(on))关闭(仅限内网可信环境) - 关闭后虽省去校验逻辑开销,但头部仍占 8 字节,不影响长度字段和负载比例计算
- IPv6 下校验和强制启用,不可跳过


















