5種常用的網絡協議,網絡協議和Netty(7):常用的網絡抓包工具 Wireshark

 2023-12-06 阅读 32 评论 0

摘要:目錄 Wireshark的使用 1.下載 2.安裝 數據包的捕獲和基本用法 過濾器 捕獲過濾器 捕獲過濾器的 BPF 語法 顯示過濾器 比較操作符和邏輯操作符 預定義過濾器? 前言:前面三次握手和四次揮手用的抓包工具就是Wireshark,本節主要介紹其簡單的使用,不用死記硬

目錄

Wireshark的使用

1.下載

2.安裝

數據包的捕獲和基本用法

過濾器

捕獲過濾器

捕獲過濾器的 BPF 語法

顯示過濾器

比較操作符和邏輯操作符

預定義過濾器?


前言:前面三次握手和四次揮手用的抓包工具就是Wireshark,本節主要介紹其簡單的使用,不用死記硬背,知道大概的使用方法就行,至于命令搞個專門記錄命令的文檔記錄,用的時候直接用就好了。

提問:為什么要抓包?

5種常用的網絡協議、解答:

1、定位網絡問題;
2、分析接口數據;
3、學習網絡協議,使用抓包工具分析網絡數據更直觀。
大部分場合都可以通過程序調試來定位問題,但有些場景使用抓包來定位接口問題更準
確、更方便,如以下場景:
1、你發送數據給后臺,但后臺沒有收到,可以對接口進行抓包分析,看是后臺處理有
問題,還是沒有將數據發出去,或是發送數據格式有誤;
2、你和后臺接口聯調測通,但業務數據對不上,你認為是后臺問題,后臺認為是你發
的問題,可以抓包確認問題所在;
3、線上出現 bug 需要定位,但你沒在公司,沒有代碼可調試,可直接抓包分析;
4、系統性能不佳,抓包看下接口響應時長,是不是后臺出現性能問題。
常用的抓包工具有:F12(瀏覽器自帶的抓包工具)、Fiddler、Charles,Wireshark。而
Wireshark 在支持的協議,用戶友好度、價格(開源)、程序支持、支持的操作系統上都很
好,所以 Wireshark 也是我們最常用的抓包工具和報文分析工具。

Wireshark的使用

1.下載

官網下載:https://www.wireshark.org/download.html

網絡抓包工具wireshark,

根據自己筆記本的配置,選擇對應的配置下載就好

2.安裝

基本上都是默認選項,也可以根據自己需求選擇。

網絡協議的組成、需要注意的是在當彈出是否需要安裝 Npcap/WinPcap 的對話框時, 務必確保 Install。

WinPcap 驅動是 Windows對于 pcap 數據包捕獲的通用程序接口(APT)的實現,簡單來說就是這個驅動能夠通過操作系統捕捉原始數據包、應用過濾器,并能夠讓網卡切入或切出混雜模式。[ 混雜模式就是接收所有經過網卡的數據包,包括不是發給本機的包,即不驗證 MAC 地址。普通模式下網卡只接收發給本機的包(包括廣播包)傳遞給上層程序,其它的包一律丟棄。一般來說,混雜模式不會影響網卡的正常工作,多在網絡監聽工具上使用。

USBPcap 就沒必要安裝了。

數據包的捕獲和基本用法

網絡協議類型。

?進入程序后,我們發現有活躍的網絡(紅框處),雙擊這一行,Wireshark 開始捕獲數據,并在窗口中顯示,可以看見隨著時間前進,窗口中不斷刷新。等上幾秒鐘,結束捕獲,單機工具欄中的
按鈕,或者“捕獲”下拉菜單中選擇“停止”選項即可。

筆者點擊Adapter for loopback traffic capture ,這個時候可以看見,Wireshark 窗口中顯示了大量的數據,數據內容分布如下:

數據包列表:最上面的面板用表格顯示了當前捕獲文件中的所有數據包,其中包括了數據包序號、數據包被捕獲的相對時間、數據包的源地址和目標地址、數據包的協議以及在數據包中找到的概況信息等列。
包詳情:中間的面板分層次地顯示了一個數據包中的內容,并且可以通過展開或是收縮來顯示這個數據包中所捕獲到的全部內容。
包數據的字節形式顯示:最下面的面板顯示了一個數據包未經處理的原始樣子,也就是其在鏈路上傳播時的樣子。這些原始數據當然不容易理解。

在數據包列表中,可以很明顯看見每行的五顏六色,這些顏色其實是 Wireshark 用來區分不同的協議的。可以通過 Coloring Rules (著色規則)窗口可以很容易地查看或修改每個協議所對應的顏色。如果想要打開這個窗口,可以在“視圖”下拉菜單中選擇的“著色規則”選項即可。

同時捕獲的數據包可以導出為文件,也可以將數據包文件導入 Wireshark 進行分析。

過濾器

過濾器可以讓你找出你所希望進行分析的數據包。簡單來說,一個過濾器就是定義了一定條件,用來包含或者排除數據包的表達式。如果你不希望看到一些數據包,你可以寫一個過濾器來屏蔽它們。如果你希望只看到某些數據包,你可以寫一個只顯示這些數據包的過濾器。

例如:我們只想抓mysql端口的數據包就可以 設置捕獲規則 port 3306 這樣就能抓到我們想要的包了。

Wireshark 主要提供兩種主要的過濾器。

  • ·捕獲過濾器:

當進行數據包捕獲時,只有那些滿足給定的包含/排除表達式的數據包會被捕獲。

  • 顯示過濾器:

該過濾器根據指定的表達式用于在一個已捕獲的數據包集合中,隱藏不想顯示的數據包,或者只顯示那些需要的數據包。

捕獲過濾器

捕獲過濾器用于進行數據包捕獲的實際場合,使用它的一個主要原因就是性能。如果你
知道你并不需要分析某個類型的流量,你可以簡單地使用捕獲過濾器過濾掉它,從而節省那
些會被用來捕獲這些數據包的資源。
比如,我們現在要捕獲我們機器上所有 TCP類型的數據包,怎么做?在“捕獲”下拉
菜單中選擇“選項”,彈出窗口中:

點擊開始:

我們發現捕獲到所有的TCP協議

捕獲過濾器的 BPF 語法

捕獲過濾器應用于 WinPcap/NPcap,并使用 Berkeley Packet Filter(BPF)語法。
這個語法被廣泛用于多種數據包嗅探軟件,主要因為大部分數據包嗅探軟件都依賴于使
用 BPF 的 libpcap/WinPcap 庫。掌握 BPF 語法對你在數據包層級更深入地探索網絡來說,
非常關鍵。
使用 BPF 語法創建的過濾器被稱為表達式,并且每個表達式包含一個或多個原語。每
個原語包含一個或多個限定詞,然后跟著一個 ID 名字或者數字
Type 指出名字或數字所代表的意,例如: host、port
Dir 指明傳輸方向是前往還是來自 例如:src、dst
Proto 限定所要匹配的協議 例如:ether、ip、tcp、udp、http、ftp
例如:
dst host 192.168.0.10 && tcp port 80
這是一個捕獲過濾器樣例,其中“dst host 192.168.0.10”就構成了一個原語,我們的樣
例里有兩個原語,兩個原語用邏輯運算符“&&”組合了起來。邏輯運算符共有三個:
連接運算符: 與 (&&)
選擇運算符: 或 (||)
否定運算符: 非 (!)
對我們的樣例來說,表示捕獲的數據包應該滿足條件為:目的主機是 192.168.0.10,通
信協議是 tcp,源端口或者目的端口是 80。

主機名和地址過濾器

我們所創建的大多數過濾器都會關注于一個或一些特定的網絡設備。根據這個情況,可
以根據設備的 MAC 地址、IPv4 地址、IPv6 地址或者 DNS 主機名配置過濾規則。比如:
捕獲所有和主機 IPv4 地址相關的流量:
host 192.168.0.10
捕獲所有和主機 Ipv6 地址相關的流量:
host fe80::1945:cbf1:1393:8f17
使用基于一臺設備的主機名 host 限定詞進行過濾:
host remoteserver
考慮到一臺主機的 IP 地址可能會變化,你可以通過加入 ether 協議限定詞,對它的 MAC
地址進行過濾:
Ether host 24-41-8C-26-04-9F
當然還可在 host 之前加 src 或者 dst 進行傳輸方向的限定。
端口和協議過濾器
只對 8080 端口進行流量捕獲:
port 8080
想要捕獲除 8080 端口外的所有流量
!port 8080
端口過濾器一樣和傳輸方向限定符一起使用,比如:
dst port 80
協議過濾器可以讓我們基于特定協議進行數據包過濾。BPF 語法甚至提供給我們的一項
強大功能,就是我們可以通過檢查協議頭中的每一字節來創建基于那些數據的特殊過濾器。
比如:
tcp[13]&4=4
表示捕獲的數據是 tcp 協議的數據包,且 tcp 數據包中第 13 個字節的第 4 位被設置了。

顯示過濾器

顯示過濾器應用于捕獲文件,用來告訴 Wireshark 只顯示那些符合過濾條件的數據包。
你可以在包列表面板上方的 Filter 文本框中,輸入一個顯示過濾器。

?

顯示過濾器的語法不同于捕獲過濾器,比如我們通過捕獲功能,捕獲了本機所有的數據包?

我們不需要TCP

輸入 !TCP 確認

我們發現TCP協議的數據包已經沒了

現在我們多加一個限定,只顯示 ip 地址為 192.168.18.1的數據包

我們看見,顯示的數據包就變為:不是 TCP 數據包,同時源地址或者目的地址是192.168.18.1。

比較操作符和邏輯操作符

在我們上面的過濾條件“!udp and ip.addr==40.90.189.152”中,牽涉到了過濾條件的比
較操作符和邏輯操作符:比較操作符可以讓你進行值的比較。

舉例來說,當你在檢查一個 TCP/P 網絡中的問題
時,你可能經常需要檢查和某一個 IP 地址相關的數據包。等于操作符可以讓你創建一個只
顯示 192.168.0.1 這個 IP 地址相關數據包的過濾器。
ip.addr==192.168.0.1
比較操作符還有:
等于 ==
不等于 !=
大于 >
小于 <
大于或等于 >=
小于或等于 <=
邏輯操作符有:
and 兩個條件需同時滿足
or 其中一個條件被滿足
xor 有且僅有一個條件被滿足
not 沒有條件被滿足
盡管在理論上編寫過濾器表達式很簡單,但針對不同問題創建過濾器時,依然需要許多
特定的關鍵詞與操作符。可以到 Wireshark 的官網查看:
https://www.wireshark.org/docs/dfref
?

?比如 tcp 相關的,可以通過單擊具體條目查看更多:

?

預定義過濾器?

過濾器可以事先設置好,不需要每次使用時都重新輸入,捕獲過濾器在菜單“捕獲”-“捕獲過濾器”中設置,顯示過濾器在菜單“分析”-“Display Filters” 中設置。

?捕獲過濾器

?顯示過濾器

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://808629.com/192386.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 86后生记录生活 Inc. 保留所有权利。

底部版权信息