三次握手和序列号

三次握手和序列号

看看下面的图片,取自 Ilya Grigorik 的书《高性能浏览器网络》,我可以理解 SYN 数据包会选择一个随机序列号,该序列号在 SYN ACK 数据包 (N+1) 中递增。最后,在 ACK 数据包中,序列号 (N+1) 和确认号 (N+1) 都会递增。

使用 Wireshark 测试时,我收到的 ACK 数据包的确认号为 N+1,但序列号 = N。作者说在 ACK 数据包中序列号和确认号都会增加,这是错误吗?

在此处输入图片描述

答案1

RFC 793状态反复确认号是该端希望接收的下一个数据包. 因此它将始终高于序列号。

例如,在第 2.6 节中:

段还携带一个确认号,该号是反向传输的下一个预期数据八位字节的序列号。

在第 3.1 节中:

确认号:32位

如果设置了 ACK 控制位,此字段包含段发送方期望接收的下一个序列号的值。一旦建立连接,此字段始终会被发送。

第 3.3 节详细解释了序列号的工作原理以及它们为什么这样工作。您可能会发现它比您的书更有启发性。

相关内容