Wireshark數據包分析三板斧

閱讀本文大約需要15分鐘,您可以先關注我們或收藏,避免無法找到該文章。

Wireshark數據包分析三板斧

引言

Wireshark是IT技術人員必備大殺器,Wireshark分析數據包的能力十分強大,能夠分析IT界的各種數據包。 本運維老狗利用和業務同學撕逼的空隙,總結了Wireshark數據包分析三板斧。

咱們以理服人,通過數據包的分析來證明系統沒問題、網絡沒問題。每板斧都能砍透甩鍋同學的腦門,讓撕逼從此優雅從容。

好了,廢話不多說,下面來展示三板斧。


第一板斧:參數設置功能使用

Wireshark默認的參數設置能夠滿足絕大多數的場景需求,但是咱們不能滿足於此對吧,下面第一板斧介紹一些參數優化設置,讓數據分析更深入。

1.協議參數的優化

Wireshark數據包分析三板斧

A.相對序列號:系統默認使用相對序列號是為了在分析會話時,易讀易看。

但這也會同學們帶來困惑:序列號不是由隨機生成的32bit數值作為初始值麼,技術書中都是這麼說的,怎麼看到seq都是從1開始的呢?

咱們這裡可以可通過去掉勾選,看到真實的序列號,達到書中的效果。

B.計算會話時間戳:開啟後會顯示首幀距此幀,上一幀距此幀的時間間隔。適用於排查業務超時類故障。

Wireshark數據包分析三板斧

2.顯示時間的調整

A.不同的同學可根據自己的閱讀習慣具體調整每幀顯示的時間格式及時間精度。

Wireshark數據包分析三板斧

B.設置參考時間,將某幀設置為參考時間,後續的幀以此幀為基準時間。適用於排查業務超時類故障。

Wireshark數據包分析三板斧

第二板斧:查找數據包、顯示過濾器

Wireshark的功能強大的原因之一就是因為它有豐富的過濾條件表達式,能夠準確過濾和分析出想要的數據信息。下面就第二板斧做詳細介紹。

1.查找數據包

該模塊只顯示分組,並不進行過濾。點擊"放大鏡"按鈕,出現顯示過濾器的下拉框,下面給同學們展示下拉框中的四種過濾條件。

A."顯示過濾器":查找包含符合過濾規則的幀。具體過濾條件在捕獲過濾器中介紹。

Wireshark數據包分析三板斧

B."十六進制":查找包含相應十六進制的幀。比如查找MAC地址。

Wireshark數據包分析三板斧

C."字符串":查找包含相應字符串的幀。比如在報文中查找域名。

Wireshark數據包分析三板斧

D."正則表達式":查找包含相應正則表達式的幀。正則表達式的詳細用法,這裡不做介紹,有興趣的同學可移步百度自行學習。

Wireshark數據包分析三板斧

E.標記數據包:對特定數據包進行標記。

下圖中使用黑底白字標記了2233和2236兩幀,方便在整個數據包查找。

Wireshark數據包分析三板斧

同時,標記的數據包可以進行具體導出。也可導出兩標記之間的數據包。如下圖所示。

Wireshark數據包分析三板斧


2.顯示過濾器

顯示過濾器會過濾出來符合條件的數據包,並加以顯示。為了讓同學們更好的掌握顯示過濾器的用法,下面按照TCP/IP層級模型歸類了常用的過濾器。

A.以太網過濾器

eth.addr == e8:fc:af:f7:7e:35 #顯示指定MAC地址的數據幀

eth.src == e8:fc:af:f7:7e:35 #顯示指定源MAC地址的數據幀

eth.dst == e8:fc:af:f7:7e:35 #顯示指定目的MAC地址的數據幀

eth.type == 0x0800 #顯示指定類型(這裡顯示TCP)的幀

B.IP過濾器

ip #顯示網絡層為IP類型的數據包

ip.addr = 192.168.0.1 #顯示包含指定IP地址的數據包

ip.src == 192.168.0.1 #顯示包含指定源IP地址的數據包

ip.dst == 192.168.0.1 #顯示包含指定目的IP地址的數據包

ip.len == 40 #顯示包含指定長度(IP首部+數據部分)的IP數據包

Wireshark數據包分析三板斧

C.傳輸層過濾器

tcp #顯示網絡層為IP類型的數據包

tcp.port == 80 #顯示指定TCP端口的數據包

tcp.src == 80 #顯示指定TCP端口的數據包

tcp.dst == 80 #顯示指定TCP端口的數據包

tcp.analysis.retransmission #顯示TCP重傳數據包

tcp.analysis.duplicate_ack #顯示TCP重複確認數據包

tcp.analysis.zero_window #顯示包含零窗口通告信息的TCP數據包

tcp.connection.syn #顯示TCP會話第一個包

tcp.connection.rst #顯示TCP會話的RST包

tcp.flags.syn ==1 #顯示TCP會話中SYN置位的包

tcp.flags.reset ==1 #顯示TCP會話中RST置位的包

tcp.window_size < 100 #顯示TCP窗口小於指定大小的包

tcp.stream eq 10 #顯示特定TCP流

tcp.len == 20 #顯示包含指定長度(TCP中的數據部分的長度)的TCP數據包

D.應用層過濾(以HTTP為例)

http contains "XXXXX" #顯示HTTP包中包含指定內容的數據包

http.request.uri contains "XXXXX" #顯示HTTP請求包中包含指定內容的數據包

http.time >=0.1 #顯示HTTP響應時間大於等於指定時間的數據包

http.request #顯示HTTP請求數據包

http.respone #顯示HTTP應答數據包

http.response.code == 404 #顯示代碼為404的HTTP響應數據包

http.content_length < 10 #顯示HTTP的內容長度小於指定長度的數據包

E.按時間過濾

frame.time == "May 27, 2019 15:23:57.932344000"

#顯示特定時間的數據包

frame.time >= "May 27, 2019 15:23:57.0" && frame.time < "May 27, 2019 15:23:58.0"

#顯示時間間隔的數據包

F.比較運算符

上面介紹了過濾器多用的是"==",其實還可以擴展,使用以下運算符。

eq 或 == #等於

ne 或 != #不等於

gt 或 > #大於

lt 或 < #小於

ge 或 >= #大於等於

le 或 <= #小於等於

第三板斧:統計與專家信息

前面兩板斧都屬於精準定位,是在有明確目標的情況下進行的。比如說咱們知道TCP有重傳問題,咱們就用過濾器過濾出現RST包進行分析。

第三板斧屬於整體的分析,通過統計和專家信息來判斷數據包存在哪方面的問題,然後再用前兩板斧進行精細診斷。

下面咱們具體學習第三板斧的使用。

1. 統計->已解析地址

如果咱們排查的是和公網通信的問題,可通過"已解析地址"查看地址對應的域名情況。

Wireshark數據包分析三板斧

2.統計->對話

通過"對話"查找會話兩端的IP地址,並可進行數據包的統計,確定不同會話的通信量。

Wireshark數據包分析三板斧

3. 統計->I/O圖表

通過"I/O圖表"可以判斷出數據包中整個會話週期或者特定時間段內的數據包情況,比如默認定義的數據包量的情況、錯報的情況。也可自定義查詢條件,個性化分析,比如下圖就自定義了TCP重置的情況(下圖紅線部分)。

Wireshark數據包分析三板斧

4. 統計->流量圖

"流量圖"可查看會話的流量情況。特別適合分析丟包、重傳、重複ACK等情況。

Wireshark數據包分析三板斧

5. 統計->HTTP->分組計數器

"分組計數器"可展示HTTP應答的情況,並進行數量統計。比如說200 OK的數量,404的數量等。非常直觀的就能看到HTTP會話的應答情況。

Wireshark數據包分析三板斧

6. 統計->TCP流圖形

通過"TCP流圖形"可以判斷出數據包中整個會話週期或者特定時間段內會話的吞吐量、往返時間、窗口尺寸等情況。

下圖展示了窗口尺寸,能夠直觀的看出在會話週期內接收窗口的大小和發出字節之間的變化情況。

Wireshark數據包分析三板斧

7.定位TCP流

我們在分析數據包時,找到了有問題的一幀,想看看此幀所屬的TCP流的情況。鼠標落在此幀上右擊,找到"追蹤流",選中"TCP流"即可過濾出此幀所屬的TCP會話。

Wireshark數據包分析三板斧

8.分析->專家信息

通過調試"專家信息",可展示出數據包所有分組的問題,並自動進行問題分級,便於查看數據包的錯誤情況。

找到相應的錯誤後,右擊"作為過濾器應用"->"選中",即可過濾出該類型的所有數據包。下圖過濾出了重複序列號的所有數據包。

Wireshark數據包分析三板斧

總結

通過三板斧的學習,同學們一定迫不及待的想小試牛刀了吧。但又有同學會發現三板斧拿到手了,但TCPIP的原理不太精通,不知道如何使用好斧頭。

這裡就要做一下硬廣了,運維老狗也同時推出了講解TCPIP的文章《一文秒懂 TCP/IP實際五層結構》,有興趣的同學可以到IT管理局搜索並學習。

--喜歡的同學請點擊關注哦--

相關閱讀:


分享到:


相關文章: