数据报包的最大长度是 65,536 还是 65,535?

数据报包的最大长度是 65,536 还是 65,535?

我在网上找到了这两个答案。

我认为应该是 2 字节 = 2^16 = 65,536,但是维基百科记载的是 65,535:

该字段大小为 UDP 数据报设置了理论限制,为 65,535 字节(8 字节报头 + 65,527 字节数据)。

为什么缺少1个字节?

答案1

Reddy 的回答一针见血: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 字节。

如果您尝试利用理论上最大 UDP 数据报长度 65,535 字节,则不能使用 IP 来传输它。

65,535 是 16 位中可以存储的最大值 - 最大数字是二进制1111 1111 1111 1111= 十进制 65,535。有 65,536 个不同的值,包括0000 0000 0000 0000

答案2

长度字段为 16 位,因此可以表示 0 到 65535 之间的大小。维基百科和其他人是正确的。

相关内容