天天看點

【抓包工具】Wireshark(詳細介紹與TCP三向交握資料分析)

  wireshark(官方下載下傳網站: http://www.wireshark.org/),是用來擷取網絡資料封包,可以截取各種網絡封包,顯示網絡封包的詳細資訊,包括http,TCP,UDP,等網絡協定包。注:wireshark隻能檢視封包,而不能修改封包的内容,或者發送封包。

一、開始界面

  開始界面,如圖所示:

【抓包工具】Wireshark(詳細介紹與TCP三向交握資料分析)

點選Caputre->Interfaces,出現圖2所示對話框,選擇需要捕獲網絡包的網卡,點選start按鈕開始抓包。

注:如果點選interfaces時彈出提示如下:“There are no interfaces on which a capture can be done.” ->解決方法:用管理者身份運作即可。

【抓包工具】Wireshark(詳細介紹與TCP三向交握資料分析)

二、視窗界面介紹

  如圖所示,是抓包後的視窗界面及自己所添加的界面描述:

【抓包工具】Wireshark(詳細介紹與TCP三向交握資料分析)

1、Filter(過濾規則介紹)

  使用過濾是非常重要的,在捕獲的資料中會有大量的備援資訊,是以過濾功能會幫我們過濾掉不符合條件的包,提高我們的分析效率。

過濾器有兩種:

1)顯示過濾器,就是圖中的Filter,用來過濾在捕獲的記錄中找到所需要的記錄,過濾後,可以點選save按鈕,然後在filter欄上就多了個剛剛儲存的資料按鈕;

比如:

    tcp->隻顯示TCP協定的記錄;

    http->隻看HTTP協定的記錄;

    ip.src ==192.168.1.102 ->顯示源位址為192.168.1.102的記錄;

    ip.dst==192.168.1.102 ->目标位址為192.168.1.10的記錄;

    ip.addr == 42.121.252.58 ->隻顯示與某主機的通信;

    tcp.port ==80->端口為80的;

    tcp.srcport == 80 ->隻顯示TCP協定的源端口為80的;

    http.request.method==”GET” ->隻顯示HTTP GET方法的;

    eth.type == 0x806->隻顯示ARP封包,這個字段的值表示是ARP封包,如果是ip封包此值為0x8000

注:Type後面的值記不住的話,可以在Expression中選擇,如圖所示:

 

【抓包工具】Wireshark(詳細介紹與TCP三向交握資料分析)

2)捕獲過濾器(Capture -> Capture Filters),用來過濾捕獲的封包,以免捕獲太多的記錄。

2、封包清單(Packet List Pane)

  封包清單的面闆中顯示,編号,時間戳,源位址,目标位址,協定,長度,以及封包資訊。 可以看到不同的協定用了不同的顔色顯示,當然也可以在View ->Coloring Rules中修改顯示顔色的規則。

3、封包詳細資訊(Packet Details Pane)

  這是最重要的資訊,用來檢視協定中的每一個字段。而OSI七層模型分别為:實體層、資料鍊路層、網絡層、傳輸層、會話層、表示層、應用層。

在封包資訊中,每行對應的含義及在OSI模型中的對應關系如下:

  Frame: 實體層的資料幀概況 ->對應OSI七層模型中的【實體層】

  Ethernet II: 資料鍊路層以太網幀頭部資訊 ->對應OSI七層模型中的【資料鍊路層】

  Internet Protocol Version 4: 網際網路層IP標頭部資訊 ->對應OSI七層模型中的【網絡層】

  Transmission Control Protocol: 傳輸層T的資料段頭部資訊,此處是TCP ->對應OSI七層模型中的【傳輸層】

  Hypertext Transfer Protocol: 應用層的資訊,此處是HTTP協定 ->對應OSI七層模型中的【應用層】

每層的封包詳細含義如下:

下面的封包資料解析來源于部落格:https://my.oschina.net/u/1585857/blog/479306

(1)實體層的資料幀概況

Frame 5: 268 bytes on wire (2144 bits), 268 bytes captured (2144 bits) on interface 0 #5号幀,線路268位元組,實際捕獲268位元組

Interface id: 0 #接口id

Encapsulation type: Ethernet (1) #封裝類型

Arrival Time: Jun 11, 2015 05:12:18.469086000 中國标準時間 #捕獲日期和時間

[Time shift for this packet: 0.000000000 seconds]

Epoch Time: 1402449138.469086000 seconds

[Time delta from previous captured frame: 0.025257000 seconds] #此包與前一包的時間間隔

[Time since reference or first frame: 0.537138000 seconds] #此包與第一幀的時間間隔

Frame Number: 5 #幀序号

Frame Length: 268 bytes (2144 bits) #幀長度

Capture Length: 268 bytes (2144 bits) #捕獲長度

[Frame is marked: False] #此幀是否做了标記:否

[Frame is ignored: False] #此幀是否被忽略:否

[Protocols in frame: eth:ip:tcp:http] #幀内封裝的協定層次結構

[Number of per-protocol-data: 2] #

[Hypertext Transfer Protocol, key 0]

[Transmission Control Protocol, key 0]

[Coloring Rule Name: HTTP] #着色标記的協定名稱

[Coloring Rule String: http || tcp.port == 80] #着色規則顯示的字元串

(2)資料鍊路層以太網幀頭部資訊

Ethernet II, Src: Giga-Byt_c8:4c:89 (1c:6f:65:c8:4c:89), Dst: Tp-LinkT_f9:3c:c0 (6c:e8:73:f9:3c:c0)

Destination: Tp-LinkT_f9:3c:c0 (6c:e8:73:f9:3c:c0) #目标MAC位址

Source: Giga-Byt_c8:4c:89 (1c:6f:65:c8:4c:89) #源MAC位址

Type: IP (0x0800)

(3)網際網路層IP標頭部資訊

Internet Protocol Version 4, Src: 192.168.0.104 (192.168.0.104), Dst: 61.182.140.146 (61.182.140.146)

Version: 4 #網際網路協定IPv4

Header length: 20 bytes #IP標頭部長度

Differentiated Services Field: 0x00 (DSCP 0x00: Default; ECN: 0x00: Not-ECT (Not ECN-Capable Transport)) #差分服務字段

Total Length: 254 #IP包的總長度

Identification: 0x5bb5 (23477) #标志字段

Flags: 0x02 (Don’t Fragment) #标記字段

Fragment offset: 0 #分的偏移量

Time to live: 64 #生存期TTL

Protocol: TCP (6) #此包内封裝的上層協定為TCP

Header checksum: 0x52ec [validation disabled] #頭部資料的校驗和

Source: 192.168.0.104 (192.168.0.104) #源IP位址

Destination: 61.182.140.146 (61.182.140.146) #目标IP位址

(4)傳輸層TCP資料段頭部資訊

Transmission Control Protocol, Src Port: 51833 (51833), Dst Port: http (80), Seq: 1, Ack: 1, Len: 214

Source port: 51833 (51833) #源端口号

Destination port: http (80) #目标端口号

Sequence number: 1 (relative sequence number) #序列号(相對序列号)

[Next sequence number: 215 (relative sequence number)] #下一個序列号

Acknowledgment number: 1 (relative ack number) #确認序列号

Header length: 20 bytes #頭部長度

Flags: 0x018 (PSH, ACK) #TCP标記字段

Window size value: 64800 #流量控制的視窗大小

Checksum: 0x677e [validation disabled] #TCP資料段的校驗和

結合抓包資料分析TCP三向交握過程

1、首先要清楚TCP三向交握過程,如圖所示:

【抓包工具】Wireshark(詳細介紹與TCP三向交握資料分析)

百度百科解釋TCP三向交握過程如下:

  第一次握手:建立連接配接時,用戶端發送syn包(syn=j)到伺服器,并進入SYN SENT狀态,等待伺服器确認;SYN:即是同步序列編号(Synchronize Sequence Numbers);

  第二次握手:伺服器收到syn包,必須确認客戶的SYN(ack=j+1),同時自己也發送一個SYN包(syn=k),即SYN+ACK包,此時伺服器進入SYN RECV狀态;

  第三次握手:用戶端收到伺服器的SYN+ACK包,向伺服器發送确認包ACK(ack=k+1),此包發送完畢,用戶端和伺服器進入ESTABLISHED(TCP連接配接成功)狀态,完成三次握手。

  

2、要清楚TCP包中的具體内容如圖6所示:(TCP包的具體内容圖來源于部落格:http://www.cnblogs.com/TankXiao/archive/2012/10/10/2711777.html)

  

【抓包工具】Wireshark(詳細介紹與TCP三向交握資料分析)

3、下面用執行個體講下wireshark中的tcp三次握手過程:

1)打開wireshark後,在浏覽器輸入通路位址:http://www.cnblogs.com/Chilam007/,wireshark自動捕獲資料包,然後過濾自己需要分析的資料,這裡是過濾與主機通信的記錄,過濾規則為:ip.addr == 116.211.169.93 ,過濾後的資料如圖所示

【抓包工具】Wireshark(詳細介紹與TCP三向交握資料分析)

574幀是用戶端向伺服器發送TCP請求建立連接配接。辨別為SYN。

619幀是伺服器得到請求後向用戶端回應确認包的過程。辨別為SYN,ACK。

620幀是用戶端回應伺服器發送确認包的過程,将于伺服器建立連接配接。辨別為ACK。

663幀是用戶端向伺服器發送HTTP請求内容的過程。辨別為GET。

667幀是伺服器響應用戶端請求的過程,收到請求。辨別為ACK。

674幀是伺服器向用戶端回應内容的過程。

2)TCP三向交握分析:

第一次握手資料包,用戶端發送一個TCP,标志位為SYN,序列号為0, 代表用戶端請求建立連接配接,如圖所示

 

【抓包工具】Wireshark(詳細介紹與TCP三向交握資料分析)

第二次握手的資料包,伺服器發回确認包, 标志位為 SYN,ACK. 将确認序号(Acknowledgement Number)設定為客戶的I S N加1以.即0+1=1,如圖所示

 

【抓包工具】Wireshark(詳細介紹與TCP三向交握資料分析)

第三次握手的資料包,用戶端再次發送确認包(ACK) SYN标志位為0,ACK标志位為1.并且把伺服器發來ACK的序号字段+1,放在确定字段中發送給對方.并且在資料段放寫ISN的+1,如圖所示

  

【抓包工具】Wireshark(詳細介紹與TCP三向交握資料分析)

以上就是 wireshark中的tcp三次握手過程。