linux的tcpdump命令主要用于網絡問題的調試中,通過抓取傳輸過程的數據包進行分析和調試。而wireshark則是一款功能強大,使用方便的數據包分析工具,tcpdump+wireshark組合使用,完美,perfect,讓網絡問題無處遁形。
1 tcpdump及wireshark基本介紹
1.1 tcpdump
tcpdump是基于Unix系統的命令行式的數據包嗅探工具,可以抓取流動在網卡上的數據包。默認情況下,tcpdump不會抓取本機內部通訊的報文。根據網絡協議棧的規定,對于報文,即使是目的地是本機,也需要經過本機的網絡協議層,所以本機通訊肯定是通過API進入了內核,并且完成了路由選擇。
linux抓包原理:
Linux抓包是通過注冊一種虛擬的底層網絡協議來完成對網絡報文(準確的說是網絡設備)消息的處理權。當網卡接收到一個網絡報文之后,它會遍歷系統中所有已經注冊的網絡協議,例如以太網協議、x25協議處理模塊來嘗試進行報文的解析處理,這一點和一些文件系統的掛載相似,就是讓系統中所有的已經注冊的文件系統來進行嘗試掛載,如果哪一個認為自己可以處理,那么就完成掛載。當抓包模塊把自己偽裝成一個網絡協議的時候,系統在收到報文的時候就會給這個偽協議一次機會,讓它來對網卡收到的報文進行一次處理,此時該模塊就會趁機對報文進行窺探,也就是把這個報文完完整整的復制一份,假裝是自己接收到的報文,匯報給抓包模塊。
1.2 wireshark
wireshark是一種數據包分析工具,在各種網絡應用中,比如通過思博倫的Spirent_TestCenter(TC)、Ixia測試儀抓取接口報文或者利用本文介紹的linux自帶的tcpdump監聽抓包工具,抓包后導出報文再導入wireshark工具中進行圖形化分析。
2 tcpdump抓包
2.1 常用命令
2.1.1 默認啟動
# tcpdump
普通情況下,直接啟動tcpdump將監視第一個網絡接口上所有流過的數據包。但是由于linux默認網卡的問題,可能出現下面報錯:
tcpdump: packet printing is not supported for link type NFLOG: use -w
此時,可以通過ifconfig或者ip address命令查看網卡信息,并通過指定網口進行數據抓包
2.1.2 監視指定網絡接口的數據包
# tcpdump -i ens33
2.1.3 監視指定主機的數據包
指定通過網口ens33, 并且進出口IP地址為10.193.12.119的數據包
# tcpdump -i ens33 host 10.193.12.119
指定通過網口ens33, 并且主機10.193.12.12 和主機10.193.17.4 或10.193.12.119之間的通信
# tcpdump -i ens33 -n host 10.193.12.12 and ( 10.193.17.4 or 10.193.12.119 )
指定通過網口ens33, 并且主機10.193.12.12 和非主機10.193.17.4之間的通信
# tcpdump -i ens33 -n host 10.193.12.12 and ! 10.193.17.4
指定通過網口ens33, 并且由主機10.193.12.12發送的所有數據
# tcpdump -i ens33 -n src 10.193.12.12
指定通過網口ens33, 并且由主機10.193.12.12接收的所有數據
# tcpdump -i ens33 -n dst 10.193.12.12
2.1.4 指定抓包數量
指定通過網口ens33, 并且由主機10.193.12.12接收的連續5個數據包
# tcpdump -i ens33 -n dst 10.193.12.12 -c 5
2.1.5 抓包精簡顯示
# tcpdump -i ens33 -n dst 10.193.12.12 -c 5 -q
指定通過網口ens33, 并且由主機10.193.12.12接收的連續5個數據包,并采用精簡顯示,可與上圖進行對比
2.1.6 按照協議類型抓包
以ping為例,我們知道ping的協議類型為icmp,我們可以指定icmp協議類型進行抓包
# tcpdump -i ens33 -n icmp
2.1.7 指定主機和端口號進行抓包
指定網卡ens33,端口號為55555并且ip地址為10.193.12.12的連續10個數據包
# tcpdump -i ens33 -n tcp port 55555 and host 10.193.12.12 -c 10
2.1.8 抓包并保存
抓包并保存package.cap文件,可導出后再導入wireshark進行包分析
# tcpdump -i ens33 -n port 55555 and host 10.193.12.12 -c 10 -w package.cap
2.2 tcpdump詳細參數
-a 嘗試將網絡和廣播地址轉換成名稱。
-c<數據包數目> 收到指定的數據包數目后,就停止進行傾倒操作。
-d 把編譯過的數據包編碼轉換成可閱讀的格式,并傾倒到標準輸出。
-dd 把編譯過的數據包編碼轉換成C語言的格式,并傾倒到標準輸出。
-ddd 把編譯過的數據包編碼轉換成十進制數字的格式,并傾倒到標準輸出。
-e 在每列傾倒資料上顯示連接層級的文件頭。
-f 用數字顯示網際網絡地址。
-F<表達文件> 指定內含表達方式的文件。
-i<網絡界面> 使用指定的網絡截面送出數據包。
-l 使用標準輸出列的緩沖區。
-n 不把主機的網絡地址轉換成名字。
-N 不列出域名。
-O 不將數據包編碼最佳化。
-p 不讓網絡界面進入混雜模式。
-q 快速輸出,僅列出少數的傳輸協議信息。
-r<數據包文件> 從指定的文件讀取數據包數據。
-s<數據包大小> 設置每個數據包的大小。
-S 用絕對而非相對數值列出TCP關聯數。
-t 在每列傾倒資料上不顯示時間戳記。
-tt 在每列傾倒資料上顯示未經格式化的時間戳記。
-T<數據包類型> 強制將表達方式所指定的數據包轉譯成設置的數據包類型。
-v 詳細顯示指令執行過程。
-vv 更詳細顯示指令執行過程。
-x 用十六進制字碼列出數據包資料。
-w<數據包文件> 把數據包數據寫入指定的文件。
3 wireshark導入數據包進行分析
審核編輯:湯梓紅
-
Linux
+關注
關注
87文章
11456瀏覽量
212739 -
命令
+關注
關注
5文章
726瀏覽量
22663 -
數據包
+關注
關注
0文章
269瀏覽量
24867 -
Wireshark
+關注
關注
0文章
49瀏覽量
6698
原文標題:3 wireshark導入數據包進行分析
文章出處:【微信號:網絡技術干貨圈,微信公眾號:網絡技術干貨圈】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
藍牙數據包的抓取與分析!
wireshark抓包數據分析問題
如何使用FRDM-KW41Z devkit和Wireshark創建一個zigbee數據包嗅探器?
基于Jpcap的數據包捕獲器的設計與實現
什么是數據包?
基于數據包長度的網絡隱蔽通道

Wireshark數據抓包網絡協議的分析

評論