5.1 Wireshark基礎功能--捕獲實時網絡數據
捕獲實時網絡數據是Wireshark的主要功能之一。
Wireshark捕獲引擎提供以下功能:
- 從不同種類的網絡硬件(例如以太網或802.11)中捕獲。
- 從多個網絡接口同時捕獲。
- 在不同的觸發器上停止捕獲,例如捕獲的數據量,經過的時間或數據包的數量。
- 在捕獲Wireshark的同時顯示解碼的數據包。
- 過濾數據包,減少要捕獲的數據量。請參見 5.1.9 捕獲時過濾。
- 在進行長期捕獲時,將數據包保存在多個文件中,可以選擇輪流瀏覽固定數量的文件(“環形緩沖區”)。請參見 5.1.7 捕獲文件和文件模式。
捕獲引擎仍然缺少以下功能:
- 根據捕獲的數據停止捕獲(或執行其他操作)。
5.1.1 先決條件
設置Wireshark首次捕獲數據包可能很棘手。
以下是一些常見問題:
- 您可能需要特殊特權才能開始實時捕獲。
- 您需要選擇正確的網絡接口來捕獲數據包數據。
- 您需要在網絡中的正確位置進行捕獲,以查看要查看的流量。
5.1.2 開始捕捉
可以使用以下方法開始使用Wireshark捕獲數據包:
- 您可以在歡迎屏幕中雙擊一個界面。
- 您可以在歡迎屏幕中選擇一個界面,然后選擇
Capture→Start或單擊第一個工具欄按鈕。 - 從 5.1.4 “捕獲選項” 對話框(
Capture→Options…)你可以得到關于使用可用的接口更詳細的信息。 - 如果您已經知道捕獲接口的名稱,則可以從命令行啟動Wireshark:
這將開始在接口上捕獲Wireshark$ wirehark -i eth0 -keth0。更多詳細信息,請參見8.1.1 從命令行啟動 Wireshark。
5.1.3 歡迎屏幕的“捕獲”部分
當您打開Wireshark而沒有開始捕獲或打開捕獲文件時,它將顯示“歡迎屏幕”,其中列出了所有最近打開的捕獲文件和可用的捕獲界面。每個接口的網絡活動將顯示在接口名稱旁邊的迷你圖中。可以選擇多個接口并同時從它們中捕獲。
圖5.1。在Microsoft Windows上捕獲界面

圖5.2。在macOS上捕獲接口
一些接口允許或要求在捕獲之前進行配置。這將由
接口名稱左側的配置圖標()指示。單擊該圖標將顯示該界面的配置對話框。
將鼠標懸停在接口上將顯示任何關聯的IPv4和IPv6地址及其捕獲過濾器。
Wireshark不僅限于網絡接口-在大多數系統上,您還可以捕獲USB,藍牙和其他類型的數據包。另請注意,如果Wireshark無法訪問該接口,或者如5.1.5 “管理接口” 對話框所述,該接口已被隱藏,則該接口可能被隱藏。
5.1.4 “捕獲選項”對話框
當您選擇捕捉 → 選項…(或主工具欄中使用相應的項目),Wireshark的彈出的“捕捉選項”對話框,如圖 5.3“中的‘捕捉選項’選項卡中輸入”。如果不確定在此對話框中選擇哪些選項,則在許多情況下,將默認設置保留為原樣即可。
圖5.3。“捕獲選項”輸入選項卡
“輸入”選項卡包含“接口”表,該表顯示以下列:
Interface:接口名稱。
Traffic:隨時間推移顯示網絡活動的迷你圖。
Link-layer Header:該接口捕獲的數據包類型。在某些情況下,可以更改此設置。有關更多詳細信息,請參見5.1.8 鏈路層報頭類型。
Promiscuous:使您可以在捕獲時將此接口置于混雜模式。請注意,另一個應用程序可能會覆蓋此設置。
Snaplen:快照長度,或每個數據包要捕獲的字節數。您可以根據需要設置明確的長度,例如出于性能或隱私原因。
Buffer:保留用于捕獲數據包的內核緩沖區的大小。您可以根據需要增加或減少它,但是默認值通常就足夠了。
Monitor Mode:使您可以捕獲完整的原始802.11標頭。是否支持取決于接口類型,硬件,驅動程序和操作系統。請注意,啟用此選項可能會使您與無線網絡斷開連接。
Capture Filter:捕獲過濾器應用于此接口。您可以通過雙擊過濾器來對其進行編輯。有關捕獲過濾器的更多詳細信息,請參見5.1.9 捕獲時過濾。
將鼠標懸停在接口上或對其進行擴展將顯示任何關聯的IPv4和IPv6地址。
如果啟用了“在所有接口上啟用混雜模式”,則上面的各個混雜模式設置將被覆蓋。
“用于選定接口的捕獲過濾器”可用于同時為多個接口設置過濾器。
Manage Interfaces將打開圖5.6“管理接口”對話框,可在其中定義管道,掃描或隱藏本地接口,或添加遠程接口。
Compile Selected BPFs將打開圖5.7,““已編譯的過濾器輸出”對話框”,其中顯示了捕獲過濾器的已編譯字節碼。這有助于更好地了解您創建的捕獲過濾器。
- Linux高級用戶技巧
通過執行以下命令打開BPF即時編譯,可以在Linux上加快BPF的執行:$ echo 1 >/proc/sys/net/core/bpf_jit_enable,如啟動失敗,可以使用 sysfsutils。
圖5.4。“捕獲選項”輸出選項卡
“輸出”選項卡顯示以下信息:
Capture to a permanent file
File
該字段允許您指定將用于捕獲文件的文件名。默認情況下保留為空白。如果保留為空白,則捕獲數據將存儲在一個臨時文件中。有關詳細信息,請參見5.1.7 捕獲文件和文件模式。您也可以單擊此字段右側的按鈕來瀏覽文件系統。Output format
允許您設置捕獲文件的格式。pcapng是默認設置,比pcap更靈活。可能需要pcapng,例如,選擇了多個接口進行捕獲。
Create a new file automatically…
設置切換新捕獲文件的條件。可以根據以下條件創建一個新的捕獲文件:
- 捕獲文件中的數據包數。
- 捕獲文件的大小。
- 捕獲文件的持續時間。
- 掛鐘時間。
Use a ring buffer with
僅多個文件。用給定數量的文件形成捕獲文件的環形緩沖區。
有關捕獲文件的更多詳細信息,請參見5.1.7 捕獲文件和文件模式。
圖5.5。“捕獲選項”選項選項卡
“選項”選項卡顯示以下信息:
顯示選項
Update list of packets in real-time
捕獲期間實時更新數據包列表窗格。如果不啟用此功能,Wireshark在停止捕獲之前將不會顯示任何數據包。選中此選項時,Wireshark會在一個單獨的過程中捕獲并將捕獲的內容饋送到顯示過程。Automatically scroll during live capture
隨著新數據包的進入,滾動數據包列表窗格,因此您總是在查看最新的數據包。如果未指定此選項,則Wireshark會將新的數據包添加到數據包列表,但不會滾動數據包列表窗格。如果禁用了“實時更新數據包列表”,則此選項顯示為灰色。Show capture information during capture
如果啟用此選項,則在捕獲數據包時將顯示5.1.10 當 Capture 運行時描述的捕獲信息對話框 。
名稱解析
Resolve MAC addresses:將MAC地址轉換為名稱。
Resolve network names:將網絡地址轉換為名稱。
Resolve transport names:翻譯運輸名稱(端口號)。
有關每個選項的更多詳細信息,請參見6.1.7 名稱解析。
可以根據以下條件停止捕獲:
- 捕獲文件中的數據包數。
- 捕獲文件的數量。
- 捕獲文件的大小。
- 捕獲文件的持續時間。
您可以從任何選項卡單擊Start開始捕獲,或單擊Cancel關閉對話框。
5.1.5 “管理接口”對話框
圖5.6。“管理界面”對話框

“Manage Interfaces”對話框最初顯示“Local Interfaces” 選項卡,可用于管理以下內容:
Show:在歡迎屏幕和“Capture Options” 對話框中是否顯示或隱藏此界面。
Friendly Name:易于理解的接口名稱。
Interface Name:接口的設備名稱。
Comment:可用于為界面添加描述性注釋。
“Pipes”選項卡使您可以從命名管道捕獲。要成功添加管道,必須已創建其關聯的命名管道。單擊+并鍵入管道的名稱,包括其路徑。或者,可以使用Browse找到管道。
要從接口列表中刪除管道,請選擇它,然后按-。
在Microsoft Windows上,“Remote Interfaces”選項卡使您可以從另一臺計算機上的接口捕獲。在Wireshark可以連接到它之前,必須先在目標平臺上運行“遠程數據包捕獲協議”服務。最簡單的方法是從目標上的{npcap-download-url}安裝Npcap。安裝完成后,轉到“服務”控制面板,找到“遠程數據包捕獲協議”服務并啟動它。
在Linux或Unix上,您可以通過SSH隧道捕獲(并更安全地捕獲)。
要添加新的remore捕獲界面,請單擊+并指定以下內容:
Host:遠程數據包捕獲協議服務正在偵聽的目標平臺的IP地址或主機名。下拉列表包含先前已成功聯系的主機。可以通過從下拉列表中選擇“清除列表”來清空列表。
Port:設置遠程數據包捕獲協議服務正在偵聽的端口號。保留空白以使用默認端口(2002)。
Null authentication:如果不需要身份驗證即可啟動遠程捕獲,請選擇此選項。這取決于目標平臺。這和它看起來一樣安全,即根本不安全。
Password authentication:使您可以指定連接到“遠程數據包捕獲協議”服務所需的用戶名和密碼。
每個界面都可以選擇隱藏。與本地接口相反,它們不保存在preferences文件中。
- tip
確保您可以從外部訪問目標平臺上的端口2002。這是遠程數據包捕獲協議服務使用的默認端口。
要從列表中刪除包含所有接口的主機,請單擊-按鈕。
5.1.6 “編譯的過濾器輸出”對話框
該圖顯示了為所選接口編譯BPF過濾器的結果。
圖5.7。“編譯的過濾器輸出”對話框
在左側的列表中,列出了接口名稱。右側顯示了為所選接口編譯過濾器的結果。
5.1.7 捕獲文件和文件模式
捕獲底層的libpcap捕獲引擎時,它將捕獲網卡中的數據包,并將數據包數據保留在(相對)小的內核緩沖區中。Wireshark讀取此數據并將其保存到捕獲文件中。
默認情況下,Wireshark將數據包保存到一個臨時文件中。您還可以告訴Wireshark保存到特定(“永久”)文件,并在給定時間過去或捕獲到給定數量的數據包后切換到其他文件。這些選項在“Capture Options”“對話框的“Output” 選項卡中控制。
圖5.8。捕獲輸出選項

- tip
使用大文件(幾百MB)可能會很慢。如果您打算進行長期捕獲或從高流量網絡捕獲,請考慮使用 “Multiple files” 選項之一。這會將捕獲的數據包散布到幾個較小的文件中,使用它們可能會更加愉快。
使用 “Multiple files” 選項可能會剪切上下文相關的信息。Wireshark保留已加載數據包數據的上下文信息,因此它可以報告上下文相關的問題(例如流錯誤),并保留有關上下文相關協議的信息(例如,在建立階段交換數據并且僅在以后的數據包中引用該數據)。因為它僅保留有關已加載文件的信息,所以使用多個文件模式之一可能會切斷這些上下文。如果建立階段保存在一個文件中,而您希望看到的內容保存在另一個文件中,則可能看不到一些有價值的上下文相關信息。
有關用于捕獲文件的文件夾的信息,請參見 附錄B Wireshark文件和文件夾。
表5.1。捕獲選項選擇的捕獲文件模式
| 文檔名稱 | 「建立新檔案…」 | 「使用環形緩沖區…」 | 模式 | 使用的結果文件名 |
|---|---|---|---|---|
| – | – | – | Single temporary file | wireharkXXXXXX(其中XXXXXX是唯一號碼) |
| foo.cap | – | – | Single named file | foo.cap |
| foo.cap | X | – | Multiple files, continuous | foo_00001_20200714110102.cap,foo_00002_20200714110318.cap,… |
| foo.cap | X | X | Multiple files, ring buffer | foo_00001_20200714110102.cap,foo_00002_20200714110318.cap,… |
Single temporary file:將創建并使用一個臨時文件(這是默認設置)。停止捕獲后,可以稍后以用戶指定的名稱保存該文件。
Single named file:將使用一個捕獲文件。如果要將新的捕獲文件放置在特定的文件夾中,請選擇此模式。
Multiple files, continuous:類似于“Single named file” 模式,但是在達到多個文件切換條件之一(“每個…下一個文件”值之一)之后,將創建并使用一個新文件。
Multiple files, ring buffer:就像““Multiple files continuous”一樣,達到多個文件切換條件之一(“每個……下一個文件”值之一)將切換到下一個文件。如果未達到“Ring buffer with n files”的值,它將是一個新創建的文件,否則它將替換最舊的以前使用的文件(因此形成一個“ring”)。
此模式將限制最大磁盤使用量,即使對于無限數量的捕獲輸入數據,也僅保留最新捕獲的數據。
5.1.8 鏈路層報頭類型
在大多數情況下,您不必修改鏈接層標題類型。一些例外如下:
如果您正在以太網設備上進行捕獲,則可能會選擇“Ethernet”或“ DOCSIS”。如果要從Cisco電纜調制解調器終端系統捕獲流量,該系統會將DOCSIS流量放到要捕獲的以太網上,請選擇“ DOCSIS”,否則選擇“ Ethernet”。
如果要在某些版本的BSD上的802.11設備上進行捕獲,則可能會選擇“Ethernet”或“ 802.11”。“Ethernet”將導致捕獲的數據包具有偽(“cooked”)以太網頭。“ 802.11”將使它們具有完整的IEEE 802.11標頭。除非捕獲需要由不支持802.11標頭的應用讀取,否則應選擇“ 802.11”。
如果要捕獲連接到同步串行線路的Endace DAG卡,則可能會選擇“ PPP over Serial”或“ Cisco HDLC”。如果串行線路上的協議是PPP,請選擇“ PPP over serial”,如果串行線路上的協議是Cisco HDLC,請選擇“ Cisco HDLC”。
如果要捕獲連接到ATM網絡的Endace DAG卡,則可能會選擇“ RFC 1483 IP-over-ATM”或“ Sun raw ATM”。如果唯一捕獲的流量是RFC 1483 LLC封裝的IP,或者捕獲需要由不支持SunATM標頭的應用程序讀取,請選擇“ RFC 1483 IP-over-ATM”,否則選擇“ Sun raw ATM” ”。
5.1.9 捕獲時過濾
Wireshark支持將數據包捕獲限制為與捕獲過濾器匹配的數據包 。Wireshark捕獲過濾器使用libpcap過濾器語言編寫。以下是libpcap過濾器語言語法的簡要概述。
將捕獲過濾器輸入到Wireshark“捕獲選項”對話框的“過濾器”字段中,如本文圖5.3““捕獲選項”輸入選項卡”所示。
捕獲過濾器采用一系列通過連接符(和/或)連接的原始表達式的形式,并可選地以not開頭:
[not] primitive [and|or [not] primitive ...]
示例4.1中的示例顯示為“用于telnet的捕獲過濾器,該捕獲過濾器捕獲來往于特定主機的流量和來自特定主機的流量”。
示例4.1 telnet的捕獲過濾器,捕獲與特定主機之間的流量tcp port 23 and host 10.0.0.5
此示例捕獲了往返于主機10.0.0.5的telnet流量,并顯示了如何使用兩個原語以及and連詞。示例4.2“捕獲不是來自10.0.0.5的所有telnet流量”中]顯示了另一個示例,并顯示了如何捕獲10.0.0.5之外的所有telnet流量。
示例4.2 捕獲不是從10.0.0.5起的所有telnet流量
TCP端口23而非src主機10.0.0.5tcp port 23 and not src host 10.0.0.5
[src|dst] host <host>
該原語使您可以篩選主機IP地址或名稱。您可以選擇在原語之前加上關鍵字src | dst,以指定您僅對源地址或目標地址感興趣。如果不存在,將選擇指定地址作為源地址或目標地址出現的數據包。ether [src|dst] host <ehost>
該原語允許您過濾以太網主機地址。您可以選擇在關鍵字ether和host之間包含關鍵字src | dst, 以指定您僅對源地址或目標地址感興趣。如果不存在,則將選擇在源地址或目標地址中出現指定地址的數據包。gateway host <host>
該原語允許您篩選使用主機作為網關的數據包。也就是說,在以太網源或目標為主機但源IP地址或目標IP地址都不為host的情況下。[src|dst] net <net> [{mask <mask>}|{len <len>}]
此原語允許您過濾網絡號。您可以選擇在此原語之前加上關鍵字src | dst,以指定您僅對源或目標網絡感興趣。如果這些都不存在,則將選擇在源或目標地址中具有指定網絡的數據包。此外,如果網絡掩碼或CIDR前綴與您自己的不同,則可以為其指定網絡掩碼或CIDR前綴。[tcp|udp] [src|dst] port <port>
此原語允許您篩選TCP和UDP端口號。您可以選擇在此原語之前加上關鍵字src | dst和tcp | udp ,這些關鍵字允許您指定僅對源或目標端口以及TCP或UDP數據包感興趣。關鍵字tcp | udp必須出現在src | dst之前。
如果未指定,則將為TCP和UDP協議以及當指定的地址出現在源或目標端口字段中時選擇數據包。less|greater <length>
使用該原語,可以分別過濾長度小于或等于指定長度或大于或等于指定長度的數據包。ip|ether proto <protocol>
該原語允許您在以太網層或IP層上根據指定的協議進行過濾。ether|ip broadcast|multicast
該原語使您可以過濾Ethernet 或 IP 單播或多播。<expr> relop <expr>
此原語允許您創建復雜的過濾器表達式,以選擇數據包中的字節或字節范圍。
5.1.9.1 自動遠程流量過濾
如果Wireshark正在遠程運行(例如使用SSH,導出X11 window,終端服務器等),則必須通過網絡傳輸遠程內容,從而將許多(通常不重要的)數據包添加到實際流量中。
為了避免這種情況,Wireshark嘗試找出它是否是遠程連接的(通過查看一些特定的環境變量),并自動創建一個匹配連接方面的捕獲篩選器。
分析以下環境變量:
SSH_CONNECTION (ssh)
<remote IP> <remote port> <local IP> <local port>
SSH_CLIENT (ssh)
<remote IP> <remote port> <local port>
REMOTEHOST (tcsh, others?)
<remote name>
DISPLAY (x11)
[remote name]:<display num>
SESSIONNAME (terminal server)
<remote name>
在Windows上,它詢問操作系統是否在遠程桌面服務環境中運行。
5.1.10 當Capture運行時…
捕獲運行時,您可能會看到以下對話框:
圖5.9。“捕獲信息”對話框

此對話框顯示協議列表及其隨時間的活動。可以通過“Advanced” 首選項中的“ capture.show_info”設置啟用。
5.1.10.1 停止正在運行的捕獲
正在運行的捕獲會話將通過以下方式之一停止:
- “Capture Information” 對話框的
Stop Capture按鈕。 - 菜單項
Capture→Stop。 - 工具欄
Stop按鈕。 Ctrl+E。- 如果滿足Stop Conditions條件之一(例如,已捕獲最大數據量),則捕獲將自動停止。
5.1.10.2 重新啟動正在運行的捕獲
可以使用與上次相同的捕獲選項重新啟動運行中的捕獲會話,這將刪除先前捕獲的所有數據包。如果捕獲了一些不感興趣的數據包并且無需保留它們,這將很有用。
重新啟動是一項便利功能,等效于立即停止捕獲。可以通過以下方式之一觸發重新啟動:
- 使用菜單項
Capture→Restart。 - 使用工具欄
Restart按鈕。
Wireshark中文使用教程(用戶版)
推薦文章: