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

(1) 幾個概念介紹

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

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

甲:發送「seq:x,len:y」給乙;緩存

乙:回覆的確認號,x+y,表示它收到了x+y以前的全部字節;網絡

小結:

綜合上面SEQ和ACK的計算,能夠發現:tcp

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

(2)TCP的確認是能夠累積的;優化

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

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

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

 

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

 

4 TCP窗口

 

1)存在乎義

 

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

 

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

 

 

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

 

 

 

4「接收方處理數據的速度」與「接收數據的速度」之間的關係對「接收窗口」的影響:

 

 

 

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

 

6關於擁塞窗口的維護

 

                      

 

 「慢啓動擁塞避免臨界窗口值的概念

 

7)超時重傳

 

  

 

超時重傳對性能的影響:

 

   

8TCP DUP ACK與快速重傳

Tcp Dup Ack xxx#y 表明了數據段丟失的TCP狀態,xxx表明數據丟失的位置,#後表明第幾回丟失文;ci

快速重傳的概念

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個字節沒有收到;

故:

 

相關文章
相關標籤/搜索