Wireshark一個強大的功能在于它的統計工具。使用Wireshark的時候,我們有各種類型的工具可供選擇,從簡單的如顯示終端節點和會話到復雜的如Flow和IO圖表。本文將介紹基本網絡統計工具。包括:捕捉文件摘要(Summary),捕捉包的層次結構(Protocol Hirarchy),?會話(Conversations),?終端節點(Endpoints), HTTP。
# 更多信息
**Summary:**
從statistics菜單,選擇**Summary**:

如下圖的截屏所示,你會看到:
File:
捕捉文件的一般信息,如文件名和路徑,長度,等等
Time:
第一個包和最后一個包的時間戳,以及抓包過程持續時間
Capture:
顯示文件捕捉于哪一個接口,以及評論窗口

在窗口的較低部分是**Display**窗口,展示抓包文件統計信息的摘要,包括:
捕捉報文的總數與百分比
顯示報文的數量(加上過濾條件之后)
標記報文的數量

**何時使用:**
這一菜單簡單收集所有抓包數據,在定義了過濾條件的時候,將呈現過濾后的數據。當想要知道每秒的平均報文數或是字節數時,可以使用此工具。
**Protocol Hierarchy:**
這一部分闡述如何確知網絡運行數據。從statistics菜單,選擇**Protocol Hierarchy**。

這個窗口現實的是捕捉文件包含的所有協議的樹狀分支。如下圖所示:

Protocol Hierarchy窗口有如下字段:
Protocol:
協議名稱
% Packets:
含有該協議的包數目在捕捉文件所有包所占的比例
Packets:
含有該協議的包的數目
Bytes:
含有該協議的字節數
Mbit/s:
抓包時間內的協議帶寬
End Packets:
該協議中的包的數目(作為文件中的最高協議層)
End Bytes:
該協議中的字節數(作為文件中的最高協議層)
End Mbit/s:
抓包時間內的協議帶寬(作為文件中的最高協議層)
**小貼士:**
包通常會包含許多協議,有很多協議會在每個包中被統計。End Packets,End Bytes,End Mbit/s列是該層在抓包中作為最后一層協議的統計數據(也就是說,協議處于報文的頂層,并且沒有更高層信息了)。例如,沒有載荷的TCP報文(例如,SYN報文),這一類沒有負載任何上層信息的報文。這就是為什么在Ethernet層,IPv4層和UDP層報文計數為0,因為沒有接收到以這些協議作為最后一層的幀。
**何時使用:**
值得注意的兩點是:
百分比永遠指的是相同協議層級。例如,
**使用要點:**
1\. Percentage永遠參照的是相同協議層。例如,上例中81.03%是IPv4報文,8.85%是IPv6報文,10.12%是ARP報文。第二層之上的各協議所占百分比總和是100%。
2.?另一方面,TCP占總數據的75.70%,在TCP協議之內,只有12.74%的報文是HTTP,除此之外沒有其他統計。這是由于Wireshark只統計有HTTP頭的報文。它不統計如確認報文或數據報文這樣沒有HTTP頭的報文。
3.?為了使Wireshark同時統計數據報文,例如,TCP報文內部的HTTP報文,關閉**Allow sub-dissector**選項,對TCP數據流重新統計。可在**Preferences**菜單或**Packet Details**面板中右鍵**TCP**來實現。
**Conversations:**
1.?在Statistics菜單中,選擇**Coversations**。

2.?會看到以下窗口:

3.?可以選擇第2層以太網統計數據,第3層IP統計數據,或第4層TCP或UDP統計數據。
4.?可以選擇以下統計工具:
* **On layer 2(Ethernet)**:查找并過濾廣播風暴或
* **On layer 3 or 4(TCP/IP)****:**通過互聯網路由器端口并行連接,查看誰在向ISP傳輸數據
**小貼士:**
如果你看到互聯網上某一IP地址通過端口80(HTTP)向外傳輸大量數據流,你就需要將該地址復制入瀏覽器并且查看你的用戶與哪一個網站通訊最多。
如果沒有得到結果,只需到標準DNS查詢站點(Google一下DNS lookup)查看哪一種流量占用了你的網線。
5.?也可以通過選擇位于窗口左下方的**Limit to display filter**復選框**,**將會話統計信息進行顯示過濾。這樣,僅呈現所有通過顯示過濾條件的統計數據。
6.要查看IP地址對應名稱,可以選擇**Name resolution**復選框。要查看IP名稱解析,進入**View | Name Resolution | Enable for Network layer**進行激活。
7.?對于TCP或UDP,可以在Packet list中對指定報文進行標記,之后從菜單中選擇**Follow TCP Stream**或**Follow UDP Stream**。從而定義一個顯示過濾條件,僅顯示指定數據流。
**使用要點:**
網絡會話是兩個指定終端之間的數據流。例如,IP會話是兩個IP地址之間的所有數據流,TCP會話包含了所有TCP連接。
通過**Conversations**列表,能看出很多網絡問題。
以太網會話統計
在Ethernet conversations statistics中,查找以下問題:
* 大量的廣播風暴:可以看見較輕微的廣播風暴;而對于每秒數千甚至數萬個報文的嚴重廣播風暴,Wireshark會停止顯示數據并且屏幕凍結。只有斷開Wireshark連接時才能看見。
* 如果你看到來自某一MAC地址的大量數據,查看會話第一部分的vendor ID,會給你一些導致問題的線索。即使MAC地址的第一部分標識了vendor,但它并不一定就標識了PC本身。這是由于MAC地址屬于PC上安裝的以太網芯片廠商,而并不一定屬于PC制造商。如果無法識別數據流來源地址,可以ping嫌疑地址并通過ARP獲取它的MAC地址,在交換機中查找該地址,如果有操作系統的話直接用find命令來定位。
IP會話統計
在IP conversations statistics中,查找以下問題:
* 查看收發大量數據流的IP地址。如果是你知道的服務器(你記得服務器的地址或地址范圍),那問題就解決了;但也有可能只是某臺設備正在掃描網絡,或僅是一臺產生過多數據的PC。
* 查看掃描模式(scan pattern)。這可能是一次正常的掃描,如SNMP軟件發送ping報文以查找網絡,但通常掃描都不是好事情。
* 一次典型的掃描模式如下圖所示:

本例中的掃描模式,一個IP地址,192.168.110.58,發送ICMP報文至192.170.3.44, 192.170.3.45, 192.170.3.46, 192.170.3.47,等等(上圖僅顯示掃描的很小一部分)。這種情況下我們有一個蠕蟲病毒感染了網絡上的所有PC,在它感染PC的時候,它就開始產生ICMP請求并將它們發送至網絡。這些窄帶連接(例如:WAN連接)可以很容易地被封鎖。
TCP/UDP會話統計
* 查看帶有太多TCP連接的設備。每一個PC合理的連接數是10到20個,上百個則是不正常的。
* 嘗試查找無法辨識的端口號。它可能是正常的,但也可能是有問題的。下圖顯示了一次典型的TCP掃描:

**Endpoints:**
**1.?**從statistics菜單,選擇**Endpoints**:

2.?出現以下窗口:

3.?此窗口中,能夠看到第2,3,4層的endpoints,也就是以太網,IP, TCP或UDP。
**使用要點:**
這一工具列出了Wireshark發現的所有endpoints上的統計信息。可以是以下任意一種情況:
* 少量以太網endpoints(MAC地址)與大量IP終端節點(IP地址):可能的情況例如,一個路由器從很多遠端設備收發報文,我們會看見路由器的MAC地址及很多IP地址經由此處。
* 少量IP終端節點與大量TCP終端節點:可能的情況是每一臺主機有很多個TCP連接。可能是有很多連接的服務器的一個正常操作,也可能是一種網絡攻擊(如SYN攻擊)。
以下是一個網絡中心的抓包示例,一個內部網絡有四個HP服務器和一個Cisco路由器,MAC地址的第一部分已經解析了廠商名稱:

當我們查看IPv4:191下的endpoints,我們看到有很多來自192.168.10.0, 192.168.30.0,以及其他網絡地址。

**HTTP:**
**1.?**從statistics菜單,選擇**HTTP**,將會出現以下窗口:

在HTTP子菜單中,可以看到以下信息:
Packet Counter:
每一個網站的報文數量。幫助識別有多少響應和請求。
Requests:
各網站的請求分布。
Load Distribution:
各網站的負載分布。
按照以下操作步驟查看**Packet Counter**統計信息:
1.?進入**Statistics | HTTP | Packet Counter。**
2.?顯示以下過濾窗口:

3.?此窗口中,可設置過濾條件以查看符合過濾條件的統計信息。如果想要查看整個抓包文件的統計信息,留白不填。這就會顯示IP層之上的統計信息,也就是所有HTTP報文。
4.?點擊**Create Stat**按鈕,會看到以下窗口:

如果要查看某一特定節點的HTTP統計信息,可以通過display filter的方式配置過濾條件。
按照以下操作步驟查看**HTTP Requests**統計信息:
1.?進入**Statistics | HTTP | Requests,**出現以下窗口:

2.?選擇所需過濾條件。對于所有數據,留白。
3.?點擊**Create Stat**按鈕,會出現以下窗口:

4.?要獲得指定HTTP主機的統計信息,設置過濾條件http.host contains ?或?http.host==。
5.?例如,通過設置過濾條件http.host contains ndi-com.com,可以獲得站點?[www.ndi-com.com](http://www.ndi-com.com/)的統計信息,如下圖所示:

6.?結果如下圖所示:

按照以下操作步驟查看**Load Distribution**統計信息:
1.?進入**Statistics | HTTP | Load Distribution。**
2.出現以下窗口:

3.?選擇所需過濾條件。對于所有數據,留白。
4.?點擊**Create Stat**按鈕,會出現以下窗口:

**使用要點:**
當我們打開一個網頁,通常會向若干個URL發送請求。本例中,我們打開的其中一個網頁是[www.cnn.com,并將我們導向edition.cnn.com](http://www.cnn.xn--com%2Cedition-lx0r784c19zieax92bm2p.cnn.com/)。我們發送了若干個請求:到root URL,到breaking_news URL,以及主頁上兩個其他位置。