2010-12-19 123 views
1

在觀察中的Wireshark網絡流量,我看到的Wireshark重新組裝分組,如:重新組裝的TCP段

[Reassembled TCP Segments (4233 bytes): #1279(2133), #1278(2100)] 

Packet #1278: blahblah, Seq: 1538, Ack:3074, Len: 2133 
Packet #1279: blahblah, Seq: 2998, Ack:3074, Len: 2100 

(長度是虛構的值)

進出口尋找重新組合,我通過sharppcap

接收TCP數據包

wireshark是否使用Ack知道哪些片段屬於彼此?

Seq值是指什麼?

如果不是,它是如何重新組裝它們的?

+0

http://wiki.wireshark.org/TCP_Reassembly並看到http://wiki.wireshark.org/TcpPduTime – 2010-12-19 06:45:25

+0

這真的解釋瞭如何知道什麼數據包屬於對方重組它們,這些網頁只是說,你可以用wireshark和tcp.pdu.time重新組裝tcp數據包跟蹤內部。 – Dacto 2010-12-19 06:53:32

回答

3

SEQ值是以字節爲單位計算的,所以如果您收到一個帶有SEQ == 5的100字節段,那麼您知道序列中的下一個段將有一個SEQ == 105

ACK指示發件人期望從其對等方看到的下一個SEQ值。所以你在多個數據包中看到相同的ACK值的唯一原因是因爲只有一方正在傳輸數據。通過保持ACK相同,每次傳輸,主機基本上都說它沒有收到任何新東西。

0

序列號標識段中的第一個字節。作爲連接建立的一部分,每個對等點爲它將發送的第一個字節選擇一個隨機序列號。此後,下一個序列號是前一個序列號加上前一個分段的字節數。

我不明白你的問題,Wireshark是否使用Ack重新組裝段。

+0

從wireshark中看起來像是什麼,所有具有相同ack的數據包都會重新組合在一起......我認爲 – Dacto 2010-12-19 07:22:50

0

我可能是錯的, TCP不重新組裝PDU .. TCP的工作是確保tcp段按順序到達(seq,ack),它不關心上層協議。 。

eg一個很長的HTTP響應(假設你正在下載一些大文件),TCP不知道(請不要關心)請求結束的地方,因爲這是HTTP的工作

+0

你已經將它倒過來了realdreams。網絡堆棧保證應用程序tcp段將以正確的順序到達。 tcp應用程序永遠不會處理錯誤的分組數據。這是一些拒絕服務攻擊的工作原理。他們會在開始或接近開始時產生大量的數據流,但缺少大塊數據。這會迫使接收網絡堆棧將其緩衝直至其耗盡空間。 udp應用程序必須但是。網絡堆棧不保證udp有效負載按順序到達,或者它們到達。 – FirefighterBlu3 2013-12-15 02:31:14