UDP

基本信息

User Datagram Protocol 用户数据报协议

基于IP的简单协议,不可靠的协议。

优点:简单,轻量化。
缺点:没有流控制,没有应答确认机制,不能解决丢包、重发、错序问题。

应用程序可以自己实现可靠的数据传输

报文结构

Ports 端口

数量理论上最多有:2^16个,端口号范围在0~65535。

端口 0 是保留的,但如果发送进程不需要响应消息,则端口 0 是允许的源端口值。

Length 长度

此字段 表示 header 和 data 的总长度,单位为 字节

最小长度为 8 个字节,即 header 的长度。

理论限制最大值为 65535 字节(8 字节标头 + 65,527 字节数据)。

但是,IPv4 协议施加的数据长度的实际限制为 65,507 字节(65,535 字节 - 8 字节 UDP header - 20 字节 IP header )

使用 IPv6 jumbograms 可以拥有大小大于 65,535 字节的 UDP 数据报。如果 UDP 标头加上 UDP 数据的长度大于 65,535,则 Length 字段设置为零。

Checksum 校验和

校验和字段可用于对 头部和数据 进行错误检查(整个报文都参与校验和计算)。

此字段在 IPv4 中是可选的,在 IPv6 中在大多数情况下是必需的。

如果未使用,则该字段带有全零。

IPv4 pseudo header - IPv4 伪头部

pseudo header 不是真正用于发送的 header,他仅用于校验和计算。

源地址和目标地址是 IPv4 头部中的地址。
协议是 UDP 的协议:17 (0x11)(List of IP protocol numbers)

IPv6 pseudo header - IPv6 伪头部