Wireshark詳細介紹和TCP三次握手

jopen 11年前發布 | 23K 次閱讀 Wireshark 網絡工具包

一.什么是Wireshark及其發展

Wireshark(前稱Ethereal)是一個網絡數據包分析軟件。網絡數據包分析軟件的功能是截取網絡數據包,并盡可能顯示出最為詳細的網絡數據包數據。

在過去,網絡數據包分析軟件是非常昂貴,或是專門屬于營利用的軟件,Wireshark的出現改變了這一切。在GNU GPL通用許可證的保障范圍底下,用戶可以以免費的代價取得軟件與其代碼,并擁有針對其源代碼修改及定制化的權利。Wireshark是目前全世界最廣泛的網絡數據包分析軟件之一。

 

1997年底,Gerald Combs需要一個能夠追蹤網絡流量的工具軟件作為其工作上的輔助。因此他開始撰寫Ethereal軟件。

Ethereal 在經過幾次中斷開發的事件過后,終于在1998年7月發布其第一個版本 v0.2.0。自此之后,Combs收到了來自全世界的補丁、錯誤回報與鼓勵信件。Ethereal的發展就此開始。不久之后,Gilbert Ramirez 看到了這套軟件的開發潛力并開始參予低級程序的開發。1998年10月,來自 Network Appliance 公司的 Guy Harris 在查找一套比 tcpview(另外一套網絡數據包截取程序)更好的軟件。于是他也開始參與Ethereal的開發工作。

1998年底,一位在教授 TCP/IP 課程的講師 Richard Sharpe,看到了這套軟件的發展潛力,而后開始參與開發與加入新協議的功能。在當時,新的通信協議的制定并不復雜,因此他開始在Ethereal上新增的數據包截取功能,幾乎包含了當時所有通信協議。

自此之后,數以千計的人開始參與Ethereal的開發,多半是因為希望能讓Ethereal截取特定的,尚未包含在Ethereal默認的網絡協議的數據包而參予新的開發。

2006年6月,因為商目標問題,Ethereal更名為Wireshark。

 

二.Wireshark使用目的

以下是一些使用Wireshark目的的例子:

  • 網絡管理員使用Wireshark來檢測網絡問題
  • 網絡安全工程師使用Wireshark來檢查信息安全相關問題
  • 開發者使用Wireshark來為新的通信協議除錯
  • 普通用戶使用Wireshark來學習網絡協議的相關知識

 

三.Wireshark開始抓包

Wireshark詳細介紹和TCP三次握手

wireshark是捕獲機器上的某一塊網卡的網絡包,當你的機器上有多塊網卡的時候,你需要選擇一個網卡。

點擊Caputre->Interfaces.. 出現下面對話框,選擇正確的網卡。然后點擊"Start"按鈕, 開始抓包

Wireshark詳細介紹和TCP三次握手

 

四.窗口介紹

Wireshark詳細介紹和TCP三次握手

WireShark 主要分為這幾個界面

1. Display Filter(顯示過濾器),  用于過濾

2. Packet List Pane(封包列表), 顯示捕獲到的封包, 有源地址和目標地址,端口號。 顏色不同,代表

3. Packet Details Pane(封包詳細信息), 顯示封包中的字段

4. Dissector Pane(16進制數據)

5. Miscellanous(地址欄,雜項)

 

五、Wireshark過濾

1.顯示過濾

Wireshark詳細介紹和TCP三次握手

 

使用過濾是非常重要的, 初學者使用wireshark時,將會得到大量的冗余信息,在幾千甚至幾萬條記錄中,以至于很難找到自己需要的部分。搞得暈頭轉向。

過濾器會幫助我們在大量的數據中迅速找到我們需要的信息。

過濾器有兩種,

一種是顯示過濾器,就是主界面上那個,用來在捕獲的記錄中找到所需要的記錄

一種是捕獲過濾器,用來過濾捕獲的封包,以免捕獲太多的記錄。 在Capture -> Capture Filters 中設置

2.保存過濾

在Filter欄上,填好Filter的表達式后,點擊Save按鈕, 取個名字。比如"Filter 102"

Wireshark詳細介紹和TCP三次握手

Filter欄上就多了個"Filter 102" 的按鈕

Wireshark詳細介紹和TCP三次握手

3.過濾表達式

 

表達式規則

 1. 協議過濾

比如TCP,只顯示TCP協議。

2. IP 過濾

比如 ip.src ==192.168.1.102 顯示源地址為192.168.1.102,

ip.dst==192.168.1.102, 目標地址為192.168.1.102

3. 端口過濾

tcp.port ==80,  端口為80的

tcp.srcport == 80,  只顯示TCP協議的愿端口為80的。

4. Http模式過濾

http.request.method=="GET",   只顯示HTTP GET方法的。

5. 邏輯運算符為 AND/ OR

常用的過濾表達式

Wireshark詳細介紹和TCP三次握手

 

六、封包的列表

封包列表的面板中顯示,編號,時間戳,源地址,目標地址,協議,長度,以及封包信息。 你可以看到不同的協議用了不同的顏色顯示。

你也可以修改這些顯示顏色的規則,  View ->Coloring Rules.

Wireshark詳細介紹和TCP三次握手

 

七、封包的詳細信息

Frame:   物理層的數據幀概況

Ethernet II: 數據鏈路層以太網幀頭部信息

Internet Protocol Version 4: 互聯網層IP包頭部信息

Transmission Control Protocol:  傳輸層T的數據段頭部信息,此處是TCP

Hypertext Transfer Protocol:  應用層的信息,此處是HTTP協議

Wireshark對應的OSI七層模型

Wireshark詳細介紹和TCP三次握手

從下圖可以看到wireshark捕獲到的TCP包中的每個字段。

Wireshark詳細介紹和TCP三次握手

實例分析tcp三次握手過程

看到這, 基本上對wireshak有了初步了解, 現在我們看一個TCP三次握手的實例

Wireshark詳細介紹和TCP三次握手

 

打開wireshark, 打開瀏覽器輸入 http://www.cnblogs.com/tankxiao

在wireshark中輸入http過濾, 然后選中GET /tankxiao HTTP/1.1的那條記錄,右鍵然后點擊"Follow TCP Stream",

這樣做的目的是為了得到與瀏覽器打開網站相關的數據包,將得到如下圖

Wireshark詳細介紹和TCP三次握手

圖中可以看到wireshark截獲到了三次握手的三個數據包。第四個包才是HTTP的, 這說明HTTP的確是使用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三次握手

 

就這樣通過了TCP三次握手,建立了連接

 

轉自:http://www.cnblogs.com/TankXiao/archive/2012/10/10/2711777.html

參考:http://zh.wikipedia.org/wiki/Wireshark

參考:http://blog.csdn.net/xmphoenix/article/details/6546022

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!