Wireshark 使用教程:網絡分析從入門到精通

一、引言

在網絡技術的廣闊領域中,網絡協議分析是一項至關重要的技能。Wireshark 作為一款開源且功能強大的網絡協議分析工具,被廣泛應用于網絡故障排查、網絡安全檢測以及網絡協議研究等諸多方面。本文將深入且詳細地介紹 Wireshark 的使用方法,幫助你快速掌握這一強大工具。

二、Wireshark 簡介

Wireshark 是一個免費且開源的網絡協議分析器,它能夠深入捕獲和分析網絡數據包。無論是學習網絡技術的新手,還是經驗豐富的網絡工程師,Wireshark 都能為他們提供深入了解網絡運行機制的能力。通過直觀的圖形界面,用戶可以輕松地查看網絡數據包的詳細信息,包括源地址、目的地址、協議類型以及數據包內容等。

三、安裝與啟動

(一)安裝

  1. 首先,訪問 Wireshark 官方網站(https://www.wireshark.org/download.html),根據你的操作系統下載對應的安裝包。Wireshark 支持 Windows、Mac OS、Linux 等多種主流操作系統,確保選擇與你系統匹配的版本。
  1. 下載完成后,運行安裝程序,按照安裝向導的提示進行操作。在安裝過程中,你會遇到一些可選擇的設置:
    • 安裝路徑:默認情況下,Wireshark 會安裝在系統盤的特定目錄下,如 Windows 系統的 “C:\Program Files\Wireshark” 。你可以點擊 “瀏覽” 按鈕選擇其他磁盤和目錄進行安裝,比如安裝在空間充足的 D 盤,以避免系統盤空間不足影響系統性能。
    • 組件選擇:通常有 Wireshark 主程序、TShark(Wireshark 的命令行版本)、USBpcap(用于捕獲 USB 數據包,一般用戶較少用到)等組件。一般保持默認勾選的組件即可滿足大多數用戶的日常使用需求。若你對命令行操作有一定了解且可能會在命令行環境下使用 Wireshark,可勾選 TShark 組件。完成設置后,直接點擊 “下一步” 即可完成安裝。

(二)啟動

安裝完成后,在開始菜單(Windows 系統)或應用程序列表(Mac 系統)中找到 Wireshark 的快捷方式,點擊即可啟動。啟動后,你將看到 Wireshark 的主界面。

四、界面介紹

(一)菜單欄

菜單欄包含了各種操作選項,如文件的打開、保存,數據包的捕獲、分析設置等。通過菜單欄,你可以完成幾乎所有的 Wireshark 操作。例如:

  • 文件(File):在此菜單下可以進行打開已有的捕獲文件(.pcapng 或.pcap 格式)、保存當前捕獲的數據包、打印數據包等操作。
  • 捕獲(Capture):包含開始捕獲、停止捕獲、設置捕獲選項等功能。
  • 分析(Analyze):用于設置分析相關的參數,如啟用或禁用特定協議的分析、設置顯示過濾器等。

(二)工具欄

工具欄提供了一些常用功能的快捷按鈕,例如開始捕獲、停止捕獲、打開已捕獲文件等。這些按鈕使得你可以快速執行常見操作,提高工作效率。其中:

  • 綠色三角形圖標為 “開始捕獲” 按鈕,點擊它可直接開始在選定接口上捕獲數據包。
  • 紅色正方形圖標是 “停止捕獲” 按鈕,用于停止正在進行的數據包捕獲。
  • 文件夾圖標用于 “打開已捕獲文件”,方便你快速加載之前保存的數據包文件進行分析。

(三)接口列表

在 Wireshark 主界面的中間部分,你會看到一個接口列表。這里列出了計算機上所有可用的網絡接口,包括以太網接口、無線網絡接口等。在進行數據包捕獲之前,需要選擇一個要捕獲數據包的接口。每個接口都有其對應的名稱和描述,例如 “Ethernet0” 可能是計算機的有線網絡接口,“Wi-Fi” 則是無線網絡接口。選擇時需根據實際需要捕獲數據包的網絡環境來確定,如你要分析家庭無線網絡中的數據包,就應選擇 “Wi-Fi” 接口。

(四)數據包列表窗格

當你開始捕獲數據包后,捕獲到的數據包會以列表形式顯示在這個窗格中。每個數據包都有一行記錄,顯示了數據包的編號、捕獲時間、源地址、目的地址、協議類型以及數據包的簡要信息。其中:

  • 數據包編號:按照捕獲的先后順序對數據包進行編號,方便在大量數據包中定位特定數據包。
  • 捕獲時間:精確記錄數據包被捕獲的時間,對于分析網絡事件的時間順序非常重要。
  • 源地址和目的地址:顯示數據包發送方和接收方的 IP 地址或 MAC 地址,有助于判斷數據的流向和通信雙方。
  • 協議類型:明確數據包所使用的網絡協議,如 TCP、UDP、HTTP、DNS 等。
  • 數據包簡要信息:根據協議類型顯示數據包的關鍵信息,如 HTTP 數據包可能顯示請求的 URL 或響應狀態碼。

(五)數據包詳細信息窗格

當你在數據包列表窗格中選擇一個數據包時,這個窗格會顯示該數據包的詳細信息。包括數據包的各個協議層的結構、字段值以及對應的解釋。這對于深入分析數據包的內容和協議結構非常有幫助。例如,對于一個 TCP 數據包,你可以看到:

  • 源端口(Source Port):標識發送方應用程序使用的端口號,不同的應用程序通常使用特定的端口號,如 HTTP 協議默認使用 80 端口,HTTPS 使用 443 端口。
  • 目的端口(Destination Port):標識接收方應用程序使用的端口號。
  • 序列號(Sequence Number):用于標識 TCP 數據包在數據流中的位置,確保數據包按正確順序重組。
  • 確認號(Acknowledgment Number):用于確認已收到對方發送的數據包,保證數據傳輸的可靠性。

對于一個 HTTP 數據包,你可以查看其:

  • 請求方法(Request Method):常見的有 GET(用于獲取資源)、POST(用于提交數據)等。
  • 請求 URL(Request URL):顯示請求的具體資源路徑。
  • 響應狀態碼(Response Status Code):如 200 表示請求成功,404 表示資源未找到等。

(六)數據包字節數據窗格

此窗格顯示了數據包的原始字節數據。對于需要查看數據包原始內容的高級用戶來說,這個窗格提供了最直接的方式。在這里,你可以看到數據包以十六進制和 ASCII 碼兩種形式呈現的數據,通過分析這些原始數據,可以更深入地了解數據包的構成和內容,特別是在分析一些自定義協議或排查網絡安全問題時非常有用。

五、捕獲數據包

(一)選擇捕獲接口

在開始捕獲數據包之前,首先要選擇一個要捕獲數據包的接口。在接口列表中,找到你想要捕獲數據包的網絡接口,例如以太網接口 “Ethernet0” 或者無線網絡接口 “Wi-Fi”。點擊該接口,然后點擊工具欄上的 “開始捕獲” 按鈕(通常是一個綠色的三角形圖標),或者選擇菜單欄中的 “捕獲”->“開始”。

(二)設置捕獲選項

在開始捕獲之前,你還可以對捕獲選項進行一些設置。點擊菜單欄中的 “捕獲”->“選項”,彈出 “捕獲選項” 對話框。在這里,你可以設置捕獲的接口、捕獲文件的保存位置、捕獲過濾器等。

  1. 捕獲文件:設置捕獲的數據包保存的文件路徑和文件名。如果不設置,捕獲的數據包將只顯示在 Wireshark 界面中,不會保存到文件。你可以點擊 “瀏覽” 按鈕選擇保存的目錄,文件名可以自行命名,建議使用有意義的名稱,如 “20241201 - office - network - capture.pcapng” ,方便后續查找和識別。
  1. 捕獲過濾器:使用捕獲過濾器可以只捕獲符合特定條件的數據包。例如,你只想捕獲來自某個 IP 地址的數據包,可以設置捕獲過濾器為 “ip.src == 192.168.1.100”。捕獲過濾器的語法有多種規則:
    • 協議過濾:如 “tcp” 表示只捕獲 TCP 協議的數據包,“udp” 表示只捕獲 UDP 協議的數據包。
    • IP 地址過濾:“ip.src == 192.168.1.100” 表示只捕獲源 IP 地址為 192.168.1.100 的數據包,“ip.dst == 192.168.1.200” 表示只捕獲目的 IP 地址為 192.168.1.200 的數據包。
    • 端口過濾:“tcp.srcport == 8080” 表示只捕獲源端口為 8080 的 TCP 數據包,“udp.dstport == 53” 表示只捕獲目的端口為 53(DNS 協議常用端口)的 UDP 數據包。
    • 邏輯運算符:“&&” 表示與,如 “ip.src == 192.168.1.100 && tcp.dstport == 80” 表示只捕獲源 IP 地址為 192.168.1.100 且目的端口為 80 的數據包;“||” 表示或,如 “ip.src == 192.168.1.100 || ip.src == 192.168.1.101” 表示捕獲源 IP 地址為 192.168.1.100 或者 192.168.1.101 的數據包;“!” 表示非,如 “!http” 表示捕獲除 HTTP 協議之外的數據包。

(三)開始捕獲

完成上述設置后,點擊 “開始” 按鈕,Wireshark 就會開始捕獲所選接口上的數據包。捕獲過程中,數據包列表窗格會實時顯示捕獲到的數據包。當你想要停止捕獲時,點擊工具欄上的 “停止捕獲” 按鈕(通常是一個紅色的正方形圖標),或者選擇菜單欄中的 “捕獲”->“停止”。

六、分析數據包

(一)使用顯示過濾器

顯示過濾器是 Wireshark 中非常強大的功能,它可以幫助你從大量的捕獲數據包中快速篩選出符合特定條件的數據包。顯示過濾器的語法與捕獲過濾器類似,但功能更加強大。在 Wireshark 界面的左上角有一個 “顯示過濾器” 輸入框,你可以在其中輸入過濾器表達式。

例如:

  • 顯示所有 TCP 協議的數據包:tcp
  • 顯示源 IP 地址為 192.168.1.100 的數據包:ip.src == 192.168.1.100
  • 顯示目的端口為 80 的 HTTP 協議數據包:http && tcp.dstport == 80

顯示過濾器除了基本的協議、地址、端口過濾和邏輯運算外,還支持更復雜的過濾規則。比如,你可以通過 “frame.len> 1000” 來顯示長度大于 1000 字節的數據包,這對于分析網絡中大數據包的傳輸情況很有幫助;還可以使用 “ip.addr == 192.168.1.100” 來顯示與 192.168.1.100 這個 IP 地址相關的所有數據包,包括源地址或目的地址是該 IP 的數據包。

(二)查看數據包詳細信息

在數據包列表窗格中選擇一個數據包后,數據包詳細信息窗格會顯示該數據包的詳細內容。你可以展開各個協議層,查看每個字段的具體值和含義。例如,對于一個 TCP 數據包,你可以查看其源端口、目的端口、序列號、確認號等信息;對于一個 HTTP 數據包,你可以查看其請求方法(GET、POST 等)、請求 URL、響應狀態碼等信息。此外,還可以查看數據包的其他詳細信息,如 TCP 的窗口大小(Window Size),它表示發送方能夠接收的字節數,反映了網絡的擁塞情況;HTTP 的頭部字段(Header Fields),如 User - Agent(用于標識客戶端的類型和版本)、Content - Type(用于指定數據的類型,如 application/json 表示數據是 JSON 格式)等,這些信息對于深入分析網絡通信和排查問題都非常關鍵。

(三)跟蹤流

在分析網絡連接時,跟蹤流功能非常有用。當你選擇一個 TCP 或 UDP 數據包后,右鍵點擊該數據包,在彈出的菜單中選擇 “追蹤流”->“TCP 流” 或 “UDP 流”。Wireshark 會將該連接的所有數據包按順序排列,并以文本形式顯示在一個新的窗口中,方便你查看整個連接的通信過程。在跟蹤流的窗口中,你可以清晰地看到數據的發送和接收順序,以及請求和響應的具體內容。例如,對于 HTTP 協議的 TCP 流,你可以看到完整的 HTTP 請求和響應消息,包括請求頭、請求體、響應頭和響應體,這對于分析 Web 應用的交互過程和排查相關問題非常直觀和有效。

七、常用過濾器語法

(一)協議過濾器

  • 顯示所有 HTTP 協議的數據包:http
  • 顯示所有 DNS 協議的數據包:dns
  • 顯示所有 ARP 協議的數據包:arp

(二)IP 地址過濾器

  • 顯示源 IP 地址為 192.168.1.100 的數據包:ip.src == 192.168.1.100
  • 顯示目的 IP 地址為 192.168.1.200 的數據包:ip.dst == 192.168.1.200

(三)端口過濾器

  • 顯示源端口為 8080 的數據包:tcp.srcport == 8080
  • 顯示目的端口為 22 的數據包:tcp.dstport == 22

(四)邏輯運算符

  • 與(&&):用于連接多個條件,只有所有條件都滿足時才顯示數據包。例如,顯示源 IP 地址為 192.168.1.100 且目的端口為 80 的數據包:ip.src == 192.168.1.100 && tcp.dstport == 80
  • 或(||):用于連接多個條件,只要有一個條件滿足就顯示數據包。例如,顯示源 IP 地址為 192.168.1.100 或目的 IP 地址為 192.168.1.200 的數據包:ip.src == 192.168.1.100 || ip.dst == 192.168.1.200
  • 非(!):用于取反條件。例如,顯示不是 HTTP 協議的數據包:!http

此外,還有一些其他的過濾語法,如針對以太網幀的過濾,“eth.src == 00:11:22:33:44:55” 可以顯示源 MAC 地址為 00:11:22:33:44:55 的以太網幀;針對 ICMP 協議的過濾,“icmp.type == 8” 可以顯示 ICMP 請求(類型 8)的數據包,“icmp.type == 0” 則顯示 ICMP 響應(類型 0)的數據包。

八、保存與導出捕獲數據

(一)保存捕獲文件

在捕獲完成后,你可以將捕獲的數據包保存為文件,以便后續分析。選擇菜單欄中的 “文件”->“保存” 或 “文件”->“另存為”,選擇保存的文件路徑和文件名。Wireshark 默認的保存文件格式為.pcapng,這種格式可以完整地保存捕獲的數據包信息,包括數據包的原始數據、捕獲時間、接口信息等。如果你需要與其他工具或用戶共享捕獲數據,也可以選擇保存為.pcap 格式,該格式是一種更通用的數據包捕獲文件格式,被許多網絡分析工具所支持。

(二)導出特定數據包

如果你只需要導出部分數據包,可以使用顯示過濾器篩選出這些數據包,然后選擇菜單欄中的 “文件”->“導出分組”->“作為”。在彈出的對話框中,選擇保存的文件路徑和文件名,同時可以選擇導出的文件格式,如文本文件、CSV 文件等。導出為文本文件時,數據包的內容會以文本形式呈現,便于查看和編輯;導出為 CSV 文件則適合用于數據分析和統計,你可以將其導入到 Excel 等軟件中進行進一步處理,例如統計不同協議的數據包數量、分析數據包的大小分布等。

九、總結

通過本文的詳細介紹,相信你已經對 Wireshark 的基本使用方法有了較為全面的了解。從安裝啟動、界面認識,到數據包的捕獲與分析,再到過濾器的使用以及數據的保存導出,Wireshark 提供了豐富而強大的功能來幫助我們深入研究網絡協議和排查網絡問題。隨著不斷的學習和實踐,你將能夠更加熟練地運用 Wireshark,挖掘網絡數據包背后的更多信息。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/66180.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/66180.shtml
英文地址,請注明出處:http://en.pswp.cn/web/66180.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Java 面試題 - ArrayList 和 LinkedList 的區別,哪個集合是線程安全的?

Java 面試題 - ArrayList 和 LinkedList 的區別,哪個集合是線程安全的? 在 Java 開發中,ArrayList和LinkedList是兩個常用的集合類,它們在數據結構和性能上有諸多不同,同時線程安全性也各有特點。深入理解這些差異&am…

nvim 打造成可用的IDE(2)

上一個 文章寫的太長了, 后來再寫東西 就一卡一卡的,所以新開一個。 主要是關于 bufferline的。 之前我的界面是這樣的。 這個圖標很不舒服有。 后來發現是在這里進行配置。 我也不知道,這個配置 我是從哪 抄過來的。 測試結果&#xff1…

升級 SpringBoot3 全項目講解 — 為什么 SpringBoot3 應該拋棄 Maven,搭配 Gradle 來使用?

學會這款 🔥全新設計的 Java 腳手架 ,從此面試不再怕! 隨著 Spring Boot 3 的發布,許多開發者開始考慮如何將現有項目升級到最新版本。Spring Boot 3 帶來了許多新特性,包括對 Java 17 的支持、更好的性能優化以及對 G…

Java學習筆記(二十三)

1 CacheEvict CacheEvict是Spring框架中用于清空緩存的注解。以下是對CacheEvict注解的詳細介紹: 1.1 作用 CacheEvict注解的主要作用是刪除緩存中的數據。在方法執行后或執行前(根據配置),它可以清空指定的緩存項或整個緩存區…

如何優化Elasticsearch大文檔查詢?

記錄一次業務復雜場景下DSL優化的過程 背景 B端商城業務有一個場景就是客戶可見的產品列表是需要N多閘口及各種其它邏輯組合過濾的,各種閘口數據及產品數據都是存儲在ES的(有的是獨立索引,有的是作為產品屬性存儲在產品文檔上)。 在實際使用的過程中&a…

openCvSharp 計算機視覺圖片找茬

一、安裝包 <PackageReference Include"OpenCvSharp4" Version"4.10.0.20241108" /> <PackageReference Include"OpenCvSharp4.runtime.win" Version"4.10.0.20241108" /> 二、準備兩張圖片 三、編寫代碼 using OpenCv…

實戰:FRP內網穿透部署-支持ssh、web訪問

目錄 1 準備工作2 公網服務器部署server端2.1 frps.ini配置 3 內網客戶端部署client端3.1 frpc.ini配置&#xff08;內網服務器01&#xff09;3.2 frpc.ini配置&#xff08;內網服務器02&#xff09; 4 服務啟動腳本4.1 公網服務器 server4.2 內網服務器 client 2 systemctl常見…

Uniapp中實現加載更多、下拉刷新、返回頂部功能

一、加載更多&#xff1a; 在到達底部時&#xff0c;將新請求過來的數據追加到原來的數組即可&#xff1a; import {onReachBottom } from "dcloudio/uni-app";const pets ref([]); // 顯示數據function network() {uni.request({url: "https://api.thecatap…

C# 多線程 Task TPL任務并行

先總結一下 之前發展過程的要點 1&#xff1a; 為了保證多線程正確順序執行 線程同步 2&#xff1a; 為了節省操作系統線程資源 線程池 異步 方式管理 正常來講 使用這倆個要點 進行使用 多線程可以滿足開發使用需求 但是 新的問題產生了 那就是 多個異步操作 需要編寫大量的代…

C++單例模式的設計

單例模式&#xff08;Singleton Pattern&#xff09;是一種設計模式&#xff0c;用于確保一個類只有一個實例&#xff0c;并提供一個全局訪問點來訪問該實例。在C中&#xff0c;單例模式通常用于管理全局資源或共享狀態。 以下是C中實現單例模式的幾種常見方式&#xff1a; 懶…

HBASE學習(一)

1.HBASE基礎架構&#xff0c; 1.1 參考&#xff1a; HBase集群架構與讀寫優化&#xff1a;理解核心機制與性能提升-CSDN博客 1.2問題&#xff1a; 1.FLUSH對hbase的影響 2. HLog和memstore的區別 hlog中存儲的是操作記錄&#xff0c;比如寫、刪除。而memstor中存儲的是寫入…

Flutter:封裝ActionSheet 操作菜單

演示效果圖 action_sheet_util.dart import package:ducafe_ui_core/ducafe_ui_core.dart; import package:flutter/material.dart; import package:demo/common/index.dart;class ActionSheetUtil {/// 底部操作表/// [context] 上下文/// [title] 標題/// [items] 選項列表 …

【Rust練習】28.use and pub

練習題來自&#xff1a;https://practice-zh.course.rs/crate-module/use-pub.html 1 使用 use 可以將兩個同名類型引入到當前作用域中&#xff0c;但是別忘了 as 關鍵字. use std::fmt::Result; use std::io::Result;fn main() {}利用as可以將重名的內容取別名&#xff1a;…

Nginx 可觀測性最佳實踐

Nginx 介紹 Nginx 是一個開源、輕量級、高性能的 HTTP 和反向代理服務器&#xff0c;也可以用于 IMAP/POP3 代理服務器。Nginx 因其采用的異步非阻塞工作模型&#xff0c;使其具備高并發、低資源消耗的特性。高度模塊化設計也使得 Nginx 具備很好的擴展性&#xff0c;在處理靜…

《汽車維護與修理》是什么級別的期刊?是正規期刊嗎?能評職稱嗎?

?問題解答&#xff1a; 問&#xff1a;《汽車維護與修理》是不是核心期刊&#xff1f; 答&#xff1a;不是&#xff0c;是知網收錄的正規學術期刊。 問&#xff1a;《汽車維護與修理》級別&#xff1f; 答&#xff1a;國家級。主管單位&#xff1a;中國汽車維修行業協會 …

PHP智慧小區物業管理小程序

&#x1f31f;智慧小區物業管理小程序&#xff1a;重塑社區生活&#xff0c;開啟便捷高效新篇章 &#x1f31f; 智慧小區物業管理小程序是一款基于PHPUniApp精心雕琢的智慧小區物業管理小程序&#xff0c;它猶如一股清新的科技之風&#xff0c;吹進了現代智慧小區的每一個角落…

洛谷P4868 Preprefix sum

洛谷傳送門 題目描述 前綴和&#xff08;prefix sum&#xff09;&#x1d446;&#x1d456;。 前前綴和&#xff08;preprefix sum&#xff09;則把 &#x1d446;&#x1d456; 作為原序列再進行前綴和。記再次求得前綴和第 &#x1d456; 個是 &#x1d446;&#x1d446…

機器學習中的凸函數和梯度下降法

一、凸函數 在機器學習中&#xff0c;凸函數 和 凸優化 是優化問題中的重要概念&#xff0c;許多機器學習算法的目標是優化一個凸函數。這些概念的核心思想圍繞著優化問題的簡化和求解效率。下面從簡單直觀的角度來解釋。 1. 什么是凸函數&#xff1f; 數學定義 一個函數 f…

vue3使用vue-native-websocket-vue3通訊

vue3使用vue-native-websocket-vue3通訊 插件使用一、啟用Vuex集成1.在mian.js中2.store/index.js文件中3.要websocket使用的頁面 二、啟用Piain集成1.在mian.js中2.根目錄下創建store文件夾&#xff0c;分別創建PiniaType.ts&#xff0c;store.ts&#xff0c;useSocketStore.t…

Windows圖形界面(GUI)-QT-C/C++ - Qt控件與布局系統詳解

公開視頻 -> 鏈接點擊跳轉公開課程博客首頁 -> ???鏈接點擊跳轉博客主頁 目錄 Qt布局系統(Layouts) 布局管理器基礎 高級布局技巧 嵌套布局 設置間距和邊距 常用控件詳解 按鈕類控件 QPushButton (標準按鈕) QRadioButton (單選按鈕) QCheckBox (復選框) …