三向握手和序列号

Hex*_*Hex 3 networking tcp

查看下图,摘自 Ilya Grigorik - High Performance Browser Networking 一书中,我可以理解 SYN 数据包选择一个随机序列号,该序列号在 SYN ACK 数据包 (N+1) 中递增。最后,在 ACK 数据包中,序列 (N+1) 和确认 (N+1) 编号都递增。

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

在此处输入图片说明

Mic*_*ton 5

RFC 793点的状态反复该确认号是的序列号的下一个分组为此期望接收。因此它总是高于序列号。

例如,在第 2.6 节中:

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

在第 3.1 节中:

确认编号:32 位

如果设置了 ACK 控制位,则该字段包含该段的发送方期望接收的下一个序列号的值。一旦建立了连接,这总是被发送。

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