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

Den*_*nis 1 networking udp

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

我认为它应该是 2 个字节 = 2^16 = 65,536,但在维基百科上它被写为 65,535 :

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

为什么少了1个字节?

Zac*_*c67 5

雷迪一针见血:/sf/ask/2982669301/

最大 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.