我正在使用wireshark来嗅出我上传的数据包,并且我想弄清楚ack是如何初始化的,以及它是如何达到最终数字的。
如果没有透露太多,当我的浏览器首次与服务器通信时,它表示序列号是152461,下一个序列号是152871,它只是152461 +发送的字节数。 152871是浏览器启动与服务器的TCP通信时ack增加的最终数字。然而,当它第一次开始通信时,seq和ack反转,seq = 1和ack = 88705.ack增加到152871.我的问题是,为什么它从88705开始?我知道seq会因发送的每个字节数而增加,但是ack如何增加,为什么它会在88705处专门开始?
答案 0 :(得分:0)
我认为Wireshark显示相对序列和确认号码。
始终将握手显示为[SYN]Seq=0
,[SYN, ACK]Seq=0 Ack=1
,[ACK]Seq=1 Ack=1
。
我不确定您的配置。但是seq = 1和ack = 88705看起来就像是你的浏览器([ACK]
)在TCP握手期间发送的第二个数据包。
我只假设152461和88705是真正的seq&确认号码。
所以152461是客户端的初始随机序列号。 88704是服务器端的初始随机序列号。 (88705 == 88704 + 1)。两者都是随机数。
在TCP握手期间,您的浏览器([ACK]
)发送的第二个数据包应包含序号152462(152461 + 1)和确认号码88705(88704 +1)。
编辑:我不确定您是如何找到真实序列号152461
的。也许您有不同的Wireshark配置或从其他工具获取。
Wireshark通常会显示[ACK]Seq=1 Ack=1
。您找到的seq = 1 and ack = 88705
可能是握手,也可能是之后的下一个数据包。截图应该更清楚。