如何利用wireshark對TCP消息進行分析


(1) 幾個概念介紹

1 seq:數據段的序號,計算方法或者增長方式:seq2=seq1+len1len僅僅是數據段的長度,不包括TCP頭)(同一個發送方的tcp報文序號的計算方法)

ACK:確認號的計算方法,接收方的ACK號與發送方的SEQLEN之間的關系:

甲:發送“seq:x,len:y”給乙;

乙:回復的確認號,x+y,表示它收到了x+y之前的所有字節;

小結:

綜合上面SEQ和ACK的計算,可以發現:

(1)理論上,接收方回復的Ack恰好就等於發送方的下一個seq號;

(2)TCP的確認是可以累積的;

(3)這幾個參數的意義:

  包亂序時,接收方只要根據Seq號從小到大重新排好就行了,保證了TCP的有序性;

  有包丟失時,接收方判斷丟了哪些包的方法:通過前一個Seq+Len的值與下一個Seq的差,保證了TCP的可靠性;

 

3 TCP頭附帶的幾個標識位:SYNFINRST

 

4 TCP窗口

 

1)存在意義

 

現實中存在一些限制,如接收方的緩存(接收窗口)可能一下子接受不了這么多數據,而網絡的帶寬也不一定足夠大,一口氣發太多會導致丟包事故,TCP的發送窗口就是發送方一口氣可以發送的數據量。

 

2發送窗口對性能的影響以及發送窗口與擁塞的關系:

 

 

3)如何在包中看出發送窗口的大小

 

 

 

4“接收方處理數據的速度”與“接收數據的速度”之間的關系對“接收窗口”的影響:

 

 

 

5TCP頭中的window sizecalculated window sizewindow size scaling factor這三個參數的含義

 

6關於擁塞窗口的維護

 

                      

 

 “慢啟動擁塞避免臨界窗口值的概念

 

7)超時重傳

 

  

 

超時重傳對性能的影響:

 

   

8TCP DUP ACK與快速重傳

Tcp Dup Ack xxx#y 代表了數據段丟失的TCP狀態,xxx代表數據丟失的位置,#后代表第幾次丟失文;

快速重傳的概念

Tcp Dup Ack規定湊滿3個時,啟動快速重傳的原因分析:(目的:避免由於亂序而導致的快速重傳)

                       

 

9)快速重傳與超時重傳的區別

快速重傳是對超時重傳的優化,當觸發3個及以上dup ack包時,會觸發重傳;但是如果丟了報,且沒有觸發快速重傳,就只能等待超時重傳了。

下面是丟包對大文件和小文件影響的區別,原因就在於上面一段的描述:

 

10Previous Segment not capured

說明亂序了,前一個包沒有收到,收到后面的包了。

2 wireshark分析實例

下面抓包來自於手機利用FTP下載文件速率小的案例。

1 TCP重復確認的案例

tcp重復確認:表示該ACK包發生了丟失,導致發送方對包進行了重傳,網關測抓包,發現,最嚴重的一個丟包是,一個包重傳了37次:(同一個包的dup ack的時間間隔約10ms,可以以725這個包為例分析,該包重傳了37次);

                       

“連續多個包丟失”的場景

“SACK方案”

同樣對網關測抓包TCP頭中的sack信息進行分析:

一個dup ack包,725#3,是725號包的第三次重傳ack,內容如下:

 

 

分析:

SACK=32121~33581和35041~37961,而ACK=29201,這樣,FTP server就會知道:

32121~33581和35041~37961都已經收到了,而前面的29201~32120之間的2920個字節沒有收到;

故:

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM