抓包工具 - Wireshark(详细介绍与TCP三次握手数据分析)
功能使用的詳細介紹
   wireshark(官方下載網站: http://www.wireshark.org/),是用來獲取網絡數據封包,可以截取各種網絡封包,顯示網絡封包的詳細信息,包括http,TCP,UDP,等網絡協議包。注:wireshark只能查看封包,而不能修改封包的內容,或者發送封包。
一、開始界面
   開始界面,如圖1所示:
圖1(wireshark開始界面)
點擊Caputre->Interfaces,出現圖2所示對話框,選擇需要捕獲網絡包的網卡,點擊start按鈕開始抓包。
注:如果點擊interfaces時彈出提示如下:“There are no interfaces on which a capture can be done.” ->解決方法:用管理員身份運行即可
圖2(capture interfaces)
二、窗口界面介紹
   如圖3所示,是抓包后的窗口界面及自己所添加的界面描述:
 
圖3(wireshark窗口)
1、Filter(過濾規則介紹)
   使用過濾是非常重要的,在捕獲的數據中會有大量的冗余信息,所以過濾功能會幫我們過濾掉不符合條件的包,提高我們的分析效率。
過濾器有兩種:
1)顯示過濾器,就是圖3中的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中選擇,如圖4所示:
圖4(expression設置)
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 #接口idEncapsulation 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 #生存期TTLProtocol: TCP (6) #此包內封裝的上層協議為TCPHeader 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三次握手過程,如圖5所示:
圖5(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)
 
 圖6(TCP包的具體內容)
3、下面用實例講下wireshark中的tcp三次握手過程:
1)打開wireshark后,在瀏覽器輸入訪問地址:http://www.cnblogs.com/Chilam007/,wireshark自動捕獲數據包,然后過濾自己需要分析的數據,這里是過濾與主機通信的記錄,
過濾規則為:ip.addr == 116.211.169.93 ,過濾后的數據如圖7所示
 
圖7(過濾后的數據包顯示,注:這里不知道為什么數據包是重復的)
574幀是客戶端向服務器發送TCP請求建立連接。標識為SYN。
619幀是服務器得到請求后向客戶端回應確認包的過程。標識為SYN,ACK。
 620幀是客戶端回應服務器發送確認包的過程,將于服務器建立連接。標識為ACK。
663幀是客戶端向服務器發送HTTP請求內容的過程。標識為GET。
667幀是服務器響應客戶端請求的過程,收到請求。標識為ACK。
674幀是服務器向客戶端回應內容的過程。
2)TCP三次握手分析:
第一次握手數據包,客戶端發送一個TCP,標志位為SYN,序列號為0, 代表客戶端請求建立連接,如圖8所示
 
圖8(第一次握手)
第二次握手的數據包,服務器發回確認包, 標志位為 SYN,ACK. 將確認序號(Acknowledgement Number)設置為客戶的I S N加1以.即0+1=1,如圖9所示
 
圖9(第二次握手)
第三次握手的數據包,客戶端再次發送確認包(ACK) SYN標志位為0,ACK標志位為1.并且把服務器發來ACK的序號字段+1,放在確定字段中發送給對方.并且在數據段放寫ISN的+1,如圖10所示
圖10(第三次握手)
以上就是 wireshark中的tcp三次握手過程。
轉載自https://www.cnblogs.com/Chilam007/p/6973990.html
總結
以上是生活随笔為你收集整理的抓包工具 - Wireshark(详细介绍与TCP三次握手数据分析)的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 第六届360前端星计划_深入CSS
- 下一篇: input苹果6点击事件无效
