1

摘自《TCP/IP Illustrated, Volume 1 The Protocols》 17.TCP:传输控制协议

标头长度以 32 位字表示标头的长度。这是必需的,因为选项字段的长度是可变的。使用 4 位字段,TCP 仅限于 60 字节的标头。但是,如果没有选项,正常大小是 20 字节。

为什么 TCP 限制为 60 字节的 hader?

在我看来

1) 报头长度以 32 位字表示报头的长度。32 位表示 4 字节。

2)4位字段可以得到16(2^4)。

然后 4 * 16,我们得到 64 而不是 60 字节。我错了吗?

4

1 回答 1

1

此 TCP RFC中,“数据偏移”部分指定“TCP 标头中 32 位字的数量”。这部分有 4 位。就像@Damien_The_Unbeliever 所说,可以存储在 4 位中的最高数字是 15 而不是 16。

最大的数字是 1111 = 2^0 + 2^1 + 2^2 + 2^3 = 15。

TCP 标头中最大 15 * 32 位 = 480 位

TCP 标头中最大 480 位 / 8 = 60 字节

于 2014-11-16T18:42:28.203 回答