【linux】【tcpdump】linux之tcpdump抓包及wireshark分析详解
linux的tcpdump命令主要用于網絡問題的調試中,通過抓取傳輸過程的數據包進行分析和調試。而wireshark則是一款功能強大,使用方便的數據包分析工具,tcpdump+wireshark組合使用,完美,perfect,讓網絡問題無處遁形。
目錄
1 tcpdump及wireshark基本介紹
1.1 tcpdump
1.2 wireshark
2 tcpdump抓包
2.1 常用命令
2.1.1 默認啟動
2.1.2 監視指定網絡接口的數據包?
2.1.3?監視指定主機的數據包
2.1.4 指定抓包數量
2.1.5 抓包精簡顯示
2.1.6 按照協議類型抓包
2.1.7?指定主機和端口號進行抓包
2.1.8 抓包并保存
2.2 tcpdump詳細參數
3 wireshark導入數據包進行分析
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】【tcpdump】linux之tcpdump抓包及wireshark分析详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 手机照片怎么恢复 恢复微信图片教程介绍
- 下一篇: hadoop3.2.1和java1.7版