WireShark中 TCP傳輸分析

以下圖爲例,簡單總結wireshark工具抓到的TCP包中各個字段的名稱及含義。

wireshark數據區列表中,第一列爲NO., 即包序;第二列是相對時間,第三列是數據源IP,第四列爲接受端IP,第五列是協議類型,最後一列是數據info。

第一:三次握手

        一般單個數據包的開始便是三次握手階段。在TCP中,一般server端處於被動打開狀態,時刻監聽着client過來連接。當client發起連接時會先發送一個SYN報文段給server,稱爲第一次握手;server收到SYN後會返回一個SYN ACK報文,表示連接請求已收到,做好連接準備,爲第二次握手;最後client再發送ACK通知server開始連接,三次握手結束。

第二:數據發送

        數據發送的情況會根據不同協議或者協議的不同實現而不同。一般情況是client先發出請求,server對應給出響應。圖中client端先發送了PSH ACK報文,表示開始向server 發送請求。正常情況是server端收到請求後開始互相發送ACK報文收發數據。圖中NO.1876發出後,在RTT(Round-trip time一次往返傳輸的時間)時間內未收到server端的ACK,認爲1876發送失敗,開始自動Retransmission過程。

        TCP Dup xxxx#x 表示出現丟包,其中xxxx表示所丟包的序號,x表示該包第幾次丟。發現丟包後TCP會自動重發該包。

第三:連接斷開

        連接可以由server或者client發起斷開。首先發起連接斷開的一方向另一方發送FIN報文,而另一方回覆SYN ACK表示確認。

 

其它字段基本含義:

Seq:sequence number 在TCP的連接創建狀態,兩個主機的TCP層間要交換初始序號(ISN:initial sequence number)。這些序號用於標識字節流中的數據,並且還是對應用層的數據字節進行記數的整數。通常在每個TCP報文段中都有一對序號和確認號。確認號爲序列號加1.

Win:window 類似緩衝區,用以告訴對方自己下一次最多可以接收多大字節的數據,如果超過則會溢出。

Len:length 表示本次發送數據區長度

MSS:Maximum Segment Size 表示單個TCP區段的最大數據字節長

TSV:TimeStamp value 表示發送該報文時虛擬時鐘的時間戳

TSER:TimeStamp Echo Reply 該值會記錄最近一次收到的報文中TSV的值,用以判斷RTT

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章