2016-12-14 33 views
0

我使用wireshark来嗅出我上传的数据包,并试图找出ack是如何初始化的,以及它是如何到达最终数字的。Wireshark,seq和ack号码

没有透露太多,当我的浏览器第一次与服务器通信时,它说序号是152461,下一个序号是152871,这只是152461 +发送的字节数。当浏览器启动与服务器的TCP通信时,152871是ack得到的最终数字。但是,当它第一次开始通信时,seq和ack会相反,seq = 1和ack = 88705. ack增加到152871.我的问题是,为什么它始于88705?我知道每发送几个字节,seq都会增加,但是ack是如何递增的?为什么它会在88705处启动?

回答

0

我认为Wireshark显示相对的序列和确认号码。

它始终显示握手为[SYN]Seq=0,[SYN, ACK]Seq=0 Ack=1,[ACK]Seq=1 Ack=1

我不确定你的配置。但在TCP握手期间,seq = 1和ack = 88705看起来像浏览器发送的第二个数据包([ACK])。

我只是假设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可能是握手,或者可能是之后的下一个数据包。它应该更清晰的截图。

+0

我明白了,所以wireshark会随机分配这些值。 – alex067

+0

@ alex067 Wireshark只能捕获和显示。 Wireshark不会干涉任何事情。您的tcp客户端(浏览器)生成随机序列号。服务器端也会生成另一个随机数。 – cshu

+0

我明白了,它有点像别名吗?它不是真正的确认和序列号,只是一种表示? – alex067