为什么TCP数据包的序列低但确认号高?

时间:2018-08-07 10:05:48

标签: tcp wireshark tcp-ip

Low TCP sequence num but have a high ack num

就像wireshark的输出一样,我捕获了两个TCP数据包,一个TCP数据包的序列号为149483和ack 149453,一个TCP数据包的序列号为149491和ack 146685。

我认为seq编号为149483的数据包首先发送(因为它的序列号较低),被确认为149453。
然后发送seq num 149491,但是为什么此数据包确认了已被第一个数据包确认的146685?

1 个答案:

答案 0 :(得分:0)

从TCP的角度来看,序列号和确认号都是序列号,但是您必须记住,每侧都从32位空间中选择一个随机的初始序列号。换句话说,序列号和确认号之间没有关系。

主机A和主机B建立连接的方式。主机A将选择一个随机ISN,并在初始SYN中将其发送给B。主机B将确认该号码(RFC加上1)并选择自己的随机ISN。主机A将确认(再次加1)。从现在开始,序列号与段中发送的数据总量结合使用,以根据序列号重新组合段,其中序列号有效地用于跟踪在每个方向上发送的字节数TCP连接。

因为这是这样工作的,所以最好将确认号“低”和序列号“高”一起使用。拥有几乎可以想象的其他任何组合也是很好的选择。