2016-12-14 132 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