这是维基百科对UDP标题长度字段的解释:
长度
一个字段,指定UDP标头的字节长度 和UDP数据。最小长度为8个字节,因为这是长度 标题。字段大小设置理论限制为65,535字节 (8字节标题+ 65,527字节的数据)用于UDP数据报。该 对基础的数据长度的实际限制 IPv4协议是65,507字节(65,535 - 8字节UDP报头 - 20字节IP 头)。
数据长度的实际限制应减去20字节的IP标头,为什么会这样?
答案 0 :(得分:3)
在此链接上仔细查看IP标头的说明: https://www.ietf.org/rfc/rfc791.txt
我引述: 总长度:16位
总长度是数据报的长度,以八位字节为单位,包括互联网标题和数据。该字段允许数据报的长度达到65,535个八位字节。对于大多数主机和网络而言,这种长数据报是不切实际的。所有主机必须准备接受最多576个八位字节的数据报(无论它们是全部还是碎片到达)。如果主机确保目标已准备好接受较大的数据报,则建议主机仅发送大于576个八位字节的数据报。 选择数字576以允许除了所需的标题信息之外还发送合理大小的数据块。例如,该大小允许512个八位字节的数据块加上64个头部八位字节以适合数据报。最大互联网标题是60个八位字节,典型的互联网标题是20个八位字节,允许更高级别协议标题的余量。
因此最大总长度为65535,但这包括IP标头本身。 因此,您的IP有效负载可以是65535 - 20 = 65515。
但在你的情况下,IP的有效载荷是UDP,UDP有自己的头,这是8个字节。因此,您达到UDP数据包有效负载的theoretical
限制:65,535 - 8字节UDP标头 - 20字节IP标头
注意使用理论而不是实际。 UDP分组的实际限制考虑了分段的可能性,因此考虑了网络层的mtu。上面的链接也有一个有趣的句子,包含值576. 576 - 20 - 8 = 548这不是很好534但接近。这可以解释这个实际限制。
答案 1 :(得分:1)
因为UDP数据包封装在IP数据包中,所以标头是20个字节。您无法在没有封装的IP数据包的情况下发送UDP数据包。通常实际限制较少,它取决于传输UDP数据包的两个端点之间路由器的MTU。
答案 2 :(得分:1)
因为IP报头必须(a)发送,(b)计入16位长度字。请参阅RFC 791 #3.1。
然而,实际实际限制通常被接受为534字节,以避免IP层碎片化,这增加了数据报丢失的风险。