我在互联网上找到了两个答案。
我认为它应该是 2 个字节 = 2^16 = 65,536,但在维基百科上写的是 65,535:
字段大小为 UDP 数据报设置了 65,535 字节(8 字节标头 + 65,527 字节数据)的理论限制。
为什么缺少 1 个字节?
我在互联网上找到了两个答案。
我认为它应该是 2 个字节 = 2^16 = 65,536,但在维基百科上写的是 65,535:
字段大小为 UDP 数据报设置了 65,535 字节(8 字节标头 + 65,527 字节数据)的理论限制。
为什么缺少 1 个字节?
雷迪一针见血:https ://stackoverflow.com/questions/42609561/udp-maximum-packet-size
最大 IP 数据包大小为 65,535 字节 (2 16 -1),包括所有标头并且通常需要分段。假设标准头,IPv4 使用 20 字节和 UDP 8 字节。IPv4 上产生的最大 UDP 有效负载大小为 65,507 字节。最大 UDP 数据报包括 UDP 报头,为 65,515 字节。为了完整起见,IPv6 上的 UDP 少了 20 个字节。
如果您尝试利用 65,535 字节的理论最大 UDP 数据报长度,您将无法使用 IP 来传输它。
65,535 是您可以存储在 16 位中的最大值 - 最大数字是二进制
1111 1111 1111 1111
= 十进制 65,535。有 65,536 个不同的值,包括0000 0000 0000 0000
.长度字段是 16 位,因此可以表示 0 到 65535 之间的大小。维基百科和其他人是对的。