轉(zhuǎn):關(guān)于wireshark抓包的那點(diǎn)事兒

轉(zhuǎn)自51CTO博客作者lihongweibj,原文地址:https://blog.51cto.com/lihongweibj/1690518
工作中分析包時(shí)看到的一篇文章,轉(zhuǎn)發(fā)收藏下,以便下次使用

三次握手

172.18.254.177為客戶(hù) 111.13.2.158為服務(wù)端

1、主動(dòng)打開(kāi)。發(fā)送SYN,協(xié)商window size 、TCP MSS seq=0 len=0 MSS=1460 win=65535最大窗口大小

客戶(hù)端為syn_sent

服務(wù)端為syn_recv

2、接收到syn?;貜?fù)syn ack seq=0 ack=1=0+1 確認(rèn)自己的最大win=14480 MSS=1460

客戶(hù)端為established

服務(wù)端為syn_recv

3、接到到syn 回復(fù)ack seq=1 ack=1=0+1 至此三次握手成功建立。

客戶(hù)端為established

服務(wù)端為established

四次斷開(kāi)

1、主動(dòng)關(guān)閉,發(fā)送fin。Seq=328

服務(wù)端狀態(tài)為fin_wait1

客戶(hù)端狀態(tài)為closed_wait

2、客戶(hù)端發(fā)送確認(rèn)ack ack=329=328+1

服務(wù)端狀態(tài)為fin_wait2

3、客戶(hù)端發(fā)送fin seq=133

客戶(hù)端狀態(tài)為last_ack

服務(wù)端狀態(tài)為time_wait

4、服務(wù)端發(fā)送ack ack=134=133+1

客戶(hù)端狀態(tài)closed

服務(wù)端狀態(tài)closed

數(shù)據(jù)包ACK=segment len+seq = 下一個(gè)要接收的數(shù)據(jù)包的seq

圖1

圖2

圖3

由圖1 數(shù)據(jù)包情況可以看出 359 seq=1441 segment len=1440 所以下一個(gè)回包的ack=1441+1440=2881 從圖2中可以確認(rèn)ack確實(shí)為2881.

圖2 數(shù)據(jù)包情況可以看出 360 seq=349 segment len=0 所以下一個(gè)回包的ack=349+0=349,從圖3可以確認(rèn)ack確實(shí)為349.

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

一條完整會(huì)話(session)指的是,相同的傳輸協(xié)議中兩個(gè)不同IP之間的兩個(gè)不同端口的互相通信,如果IP或端口變化剛屬于不同的會(huì)話,其seq和ack也是相互獨(dú)立的,沒(méi)有任何關(guān)聯(lián)。

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

分段的數(shù)據(jù)包的ACKnum相同,

當(dāng)請(qǐng)求的數(shù)據(jù)包大于TCP MSS時(shí)會(huì)將數(shù)據(jù)分為多個(gè)數(shù)據(jù)包進(jìn)行傳輸。

局域網(wǎng)內(nèi)的TCP MSS大小為1460=1500-20(IP包頭)-20(TCP包頭)

server=124.192.132.36 client=192.168.10.111

(378、381、384、387) seq=349不變,ack一直增加。說(shuō)明client端一直在接收server端的數(shù)據(jù),且一直在給client應(yīng)答。

server=124.192.132.36 client=192.168.10.111

(376、377、379) ack=349沒(méi)有變化。seq不斷增加,說(shuō)明server端一直在向client發(fā)送數(shù)據(jù)包,不用給client應(yīng)答,而是等待client端的應(yīng)答。

由以上可以看出client不用對(duì)server端的每一個(gè)包都做一一應(yīng)答,可以接收幾個(gè)包后統(tǒng)一做應(yīng)答。

TCP window update (TCP 窗口更新)

TCP zero window

TCP window full

是TCP通信中的一個(gè)狀態(tài),它可以發(fā)生的原因有很多,但最終歸結(jié)于發(fā)送者傳輸數(shù)據(jù)的速度比接收者讀取的數(shù)據(jù)還快,這使得接受端的在緩沖區(qū)必須釋放一部分空間來(lái)裝發(fā)送過(guò)來(lái)的數(shù)據(jù),然后向發(fā)送者發(fā)送Windows Update,告訴給發(fā)送者應(yīng)該以多大的速度發(fā)送數(shù)據(jù),從而使得數(shù)據(jù)傳輸與接受恢復(fù)正常。

或者一個(gè)TCP Window變?yōu)?了, 或者接近0了, 這就會(huì)警告數(shù)據(jù)發(fā)送方?jīng)]有更多空間來(lái)接受更多數(shù)據(jù)了.文件傳輸會(huì)停止, 直到收到一個(gè)update說(shuō)buffer已經(jīng)清空了.

Tcp window full :服務(wù)端向客戶(hù)端發(fā)送的一種窗口警告。

Tcp zero window:客戶(hù)端向服務(wù)端發(fā)送的一種窗口警告。

Tcp keep-alive: 會(huì)話保持,一般由服務(wù)端發(fā)出。

以下是針對(duì)上圖的數(shù)據(jù)包進(jìn)行分析

客戶(hù)端:192.168.10.111 服務(wù)端:42.250.12.36

131:服務(wù)端向客戶(hù)端發(fā)出tcp window full,表示無(wú)法再接受新的數(shù)據(jù),

132:客戶(hù)端向服務(wù)端發(fā)送tcp zero window ,表示沒(méi)有window可以接收新數(shù)據(jù)

137:服務(wù)端向客戶(hù)端發(fā)送keep-live,保持會(huì)話,直至客戶(hù)端有足夠的window可以再次接收數(shù)據(jù)。

138:客戶(hù)端再次向服務(wù)端發(fā)送 tcp zere window ,提示服務(wù)端目前沒(méi)有足夠的window可以接收新數(shù)據(jù)。

139:客戶(hù)端向服務(wù)端發(fā)送 tcp window update,表示buffer已經(jīng)清空。并提示服務(wù)端現(xiàn)在已經(jīng)有足夠的window 大小為 17280。

140:由于收到了客戶(hù)端發(fā)送的window buffer已經(jīng)清空,所以繼續(xù)發(fā)送數(shù)據(jù)。

TCP DUP ACK (重復(fù)的ACK)

表示數(shù)據(jù)段已丟失, 574是數(shù)據(jù)丟失的位置,#1 代表丟失一次。

一般情況下,當(dāng)網(wǎng)絡(luò)延時(shí)增大導(dǎo)致網(wǎng)絡(luò)速度變慢,是產(chǎn)生重復(fù)ACK的一個(gè)主要原因。或者是服務(wù)端或者客戶(hù)端響應(yīng)速度變慢或者沒(méi)沒(méi)有響應(yīng)。

TCP out-of-order

由于收到的數(shù)據(jù)包亂序,有可能是網(wǎng)絡(luò)擁塞或者路由上存在負(fù)載分擔(dān)的情況,導(dǎo)致后發(fā)送的數(shù)據(jù)包先達(dá)到。

TCP Restransmission 重傳

170號(hào)數(shù)據(jù)包是為167號(hào)數(shù)據(jù)包做的重傳操作,所以seq ack都是一樣的,seq=2070 ack=6264

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

說(shuō)明亂序了,未收到之前的數(shù)據(jù)包,也要進(jìn)行重傳,1932的ack=83066,也就是要求server端下次發(fā)送seq=83066的包,結(jié)果 1933發(fā)送的數(shù)據(jù)包seq=85946.說(shuō)明server端收到過(guò)client端發(fā)送的數(shù)據(jù)包ack=85946,則判斷之前的一個(gè)數(shù)據(jù)包未收到。在1934 對(duì)1932數(shù)據(jù)包進(jìn)行重傳操作。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 標(biāo)簽(空格分隔): wireshark數(shù)據(jù)包分析過(guò)程 DNS解析 TCP三次握手 題外話:正值白色情人節(jié),她說(shuō)...
    遲凝丶捏米么閱讀 35,868評(píng)論 0 10
  • 目錄 準(zhǔn)備 分析2.1. 三次握手2.2. 創(chuàng)建 HTTP 代理(非必要)2.3. TLS/SSL 握手2.4. ...
    RunAlgorithm閱讀 39,040評(píng)論 12 117
  • wireshark 的使用小技巧。wireshark 在抓包過(guò)程中經(jīng)常有一些英文提示,通常以醒目的顏色標(biāo)注,讓人注...
    OOM_Killer閱讀 7,743評(píng)論 0 0
  • Wireshark是非常流行的網(wǎng)絡(luò)封包分析軟件,可以截取各種網(wǎng)絡(luò)數(shù)據(jù)包,并顯示數(shù)據(jù)包詳細(xì)信息。常用于開(kāi)發(fā)測(cè)試過(guò)程...
    Pippo_6ef8閱讀 745評(píng)論 6 1
  • Wireshark是非常流行的網(wǎng)絡(luò)封包分析軟件,可以截取各種網(wǎng)絡(luò)數(shù)據(jù)包,并顯示數(shù)據(jù)包詳細(xì)信息。常用于開(kāi)發(fā)測(cè)試過(guò)程各...
    969f13eda4ec閱讀 431評(píng)論 0 0

友情鏈接更多精彩內(nèi)容