關於wireshark抓包的那點事兒


關於wireshark抓包的那點事兒網絡

 

三次握手session

wKioL1XlX13xlyMyAAFscNScy5c669.jpg

172.18.254.177爲客戶    111.13.2.158爲服務端tcp

一、主動打開。發送SYN,協商window size TCP MSS seq=0  len=0 MSS=1460 win=65535最大窗口大小ide

 客戶端爲syn_sentspa

 服務端爲syn_recv3d

二、接收到syn。回覆syn ack  seq=0  ack=1=0+1  確認本身的最大win=14480 MSS=1460rest

  客戶端爲establishedorm

  服務端爲syn_recvserver

三、接到到syn 回覆ack seq=1 ack=1=0+1  至此三次握手成功創建。blog

  客戶端爲established

  服務端爲established

 

 

四次斷開

wKioL1XlX2_AUT7YAAGbpSbjH5U362.jpg 

一、主動關閉,發送finSeq=328

   服務端狀態爲fin_wait1

客戶端狀態爲closed_wait

二、客戶端發送確認ack  ack=329=328+1

服務端狀態爲fin_wait2

三、客戶端發送fin seq=133

   客戶端狀態爲last_ack

   服務端狀態爲time_wait

四、服務端發送ack  ack=134=133+1

   客戶端狀態closed

    服務端狀態closed


數據包ACK=segment len+seq = 下一個要接收的數據包的seq


wKioL1Xo956wfPxEAANr3qx7vFo320.jpg

圖1

wKiom1Xo9XqC4Z0tAAKq0Ca2WuM420.jpg

圖2

wKioL1Xo956CwfovAALFFcot3aA172.jpg

圖3

由圖1 數據包狀況能夠看出 359 seq=1441 segment len=1440 因此下一個回包的ack=1441+1440=2881 從圖2中能夠確認ack確實爲2881.

圖2 數據包狀況能夠看出 360  seq=349  segment len=0 因此下一個回包的ack=349+0=349,從圖3能夠確認ack確實爲349.


圖1 359 的ack=349 則圖2 350 的seq=349 ack=2881 推斷圖3 361的seq=2881 . 

 

一條完整會話(session)指的是,相同的傳輸協議中兩個不一樣IP之間的兩個不一樣端口的互相通訊,若是IP或端口變化剛屬於不一樣的會話,其seq和ack也是相互獨立的,沒有任何關聯。


TCP segment of a reassembled PDU (TCP數據包重組的一部分)

wKioL1XlYEHgbu_rAADSnbJx6ak656.jpg

分段的數據包的ACKnum相同,

當請求的數據包大於TCP MSS時會將數據分爲多個數據包進行傳輸。

局域網內的TCP MSS大小爲1460=1500-20IP包頭)-20TCP包頭)


wKiom1XoaJyDscodAAUHKhqnRp4820.jpg

server=124.192.132.36  client=192.168.10.111

(37八、38一、38四、387) seq=349不變,ack一直增長。說明client端一直在接收server端的數據,且一直在給client應答。


wKioL1Xo1jHAQbEQAANJp6mqMxc204.jpg

wKiom1Xo1A2CdixvAALdZxxK7Uc402.jpg

wKioL1Xo1jHwTb2AAAKf7LnUZbE552.jpg

server=124.192.132.36  client=192.168.10.111

(37六、37七、379) ack=349沒有變化。seq不斷增長,說明server端一直在向client發送數據包,不用給client應答,而是等待client端的應答。

由以上能夠看出client不用對server端的每個包都作一一應答,能夠接收幾個包後統一作應答。

 

TCP window update TCP 窗口更新)

TCP zero window

TCP window full

wKioL1XmvTDh1SqAAAGjrU4JZqc299.jpg

wKioL1XmvOzyjnjcAAaVcyp_la0940.jpg


TCP通訊中的一個狀態,它能夠發生的緣由有不少,但最終歸結於發送者傳輸數據的速度比接收者讀取的數據還快,這使得接受端的在緩衝區必須釋放一部分空間來裝發送過來的數據,而後向發送者發送Windows Update,告訴給發送者應該以多大的速度發送數據,從而使得數據傳輸與接受恢復正常。

或者一個TCP Window變爲0或者接近0這就會警告數據發送方沒有更多空間來接受更多數據了.文件傳輸會中止直到收到一個updatebuffer已經清空了.

Tcp window full :服務端向客戶端發送的一種窗口警告。

Tcp zero window:客戶端向服務端發送的一種窗口警告。

Tcp keep-alive: 會話保持,通常由服務端發出。

如下是針對上圖的數據包進行分析

客戶端:192.168.10.111   服務端:42.250.12.36

131:服務端向客戶端發出tcp window full,表示沒法再接受新的數據,

132:客戶端向服務端發送tcp zero window ,表示沒有window能夠接收新數據

137:服務端向客戶端發送keep-live,保持會話,直至客戶端有足夠的window能夠再次接收數據。

138:客戶端再次向服務端發送 tcp zere window ,提示服務端目前沒有足夠的window能夠接收新數據。

139:客戶端向服務端發送 tcp window update,表示buffer已經清空。並提示服務端如今已經有足夠的window 大小爲    17280。

140:因爲收到了客戶端發送的window  buffer已經清空,因此繼續發送數據。

 

TCP DUP ACK  (重複的ACK

wKioL1XlX7LRd2bpAAGTxqoAu84045.jpg 

wKioL1Xlo9OSl5stAAMFqaa8keQ933.jpg

表示數據段已丟失, 574是數據丟失的位置,#1 表明丟失一次。

通常狀況下,當網絡延時增大致使網絡速度變慢,是產生重複ACK的一個主要緣由。或者是服務端或者客戶端響應速度變慢或者沒沒有響應。

 

TCP out-of-order

 wKiom1XlXcCDqfqcAADCxhkH-Ys945.jpg

 wKiom1XlXc-ie_uLAAG86whhBSI904.jpg

因爲收到的數據包亂序,有多是網絡擁塞或者路由上存在負載分擔的狀況,致使後發送的數據包先達到。

 

TCP Restransmission  重傳

wKioL1XlYAHjxAxxAAQHFLqHGJ4246.jpg 

 

170號數據包是爲167號數據包作的重傳操做,因此seq  ack都是同樣的,seq=2070  ack=6264


TCP previous segment not captured  以前的分段未收到

wKiom1XpDFGBi6qLAAPwxDW2DoE290.jpg

說明亂序了,未收到以前的數據包,也要進行重傳,1932的ack=83066,也就是要求server端下次發送seq=83066的包,結果 1933發送的數據包seq=85946.說明server端收到過client端發送的數據包ack=85946,則判斷以前的一個數據包未收到。在1934 對1932數據包進行重傳操做。

相關文章
相關標籤/搜索