【linux】【tcpdump】linux之tcpdump抓包及wireshark分析详解
linux的tcpdump命令主要用于網(wǎng)絡(luò)問題的調(diào)試中,通過抓取傳輸過程的數(shù)據(jù)包進(jìn)行分析和調(diào)試。而wireshark則是一款功能強大,使用方便的數(shù)據(jù)包分析工具,tcpdump+wireshark組合使用,完美,perfect,讓網(wǎng)絡(luò)問題無處遁形。
目錄
1 tcpdump及wireshark基本介紹
1.1 tcpdump
1.2 wireshark
2 tcpdump抓包
2.1 常用命令
2.1.1 默認(rèn)啟動
2.1.2 監(jiān)視指定網(wǎng)絡(luò)接口的數(shù)據(jù)包?
2.1.3?監(jiān)視指定主機的數(shù)據(jù)包
2.1.4 指定抓包數(shù)量
2.1.5 抓包精簡顯示
2.1.6 按照協(xié)議類型抓包
2.1.7?指定主機和端口號進(jìn)行抓包
2.1.8 抓包并保存
2.2 tcpdump詳細(xì)參數(shù)
3 wireshark導(dǎo)入數(shù)據(jù)包進(jìn)行分析
1 tcpdump及wireshark基本介紹
1.1 tcpdump
tcpdump是基于Unix系統(tǒng)的命令行式的數(shù)據(jù)包嗅探工具,可以抓取流動在網(wǎng)卡上的數(shù)據(jù)包。默認(rèn)情況下,tcpdump不會抓取本機內(nèi)部通訊的報文。根據(jù)網(wǎng)絡(luò)協(xié)議棧的規(guī)定,對于報文,即使是目的地是本機,也需要經(jīng)過本機的網(wǎng)絡(luò)協(xié)議層,所以本機通訊肯定是通過API進(jìn)入了內(nèi)核,并且完成了路由選擇。
linux抓包原理:
Linux抓包是通過注冊一種虛擬的底層網(wǎng)絡(luò)協(xié)議來完成對網(wǎng)絡(luò)報文(準(zhǔn)確的說是網(wǎng)絡(luò)設(shè)備)消息的處理權(quán)。當(dāng)網(wǎng)卡接收到一個網(wǎng)絡(luò)報文之后,它會遍歷系統(tǒng)中所有已經(jīng)注冊的網(wǎng)絡(luò)協(xié)議,例如以太網(wǎng)協(xié)議、x25協(xié)議處理模塊來嘗試進(jìn)行報文的解析處理,這一點和一些文件系統(tǒng)的掛載相似,就是讓系統(tǒng)中所有的已經(jīng)注冊的文件系統(tǒng)來進(jìn)行嘗試掛載,如果哪一個認(rèn)為自己可以處理,那么就完成掛載。當(dāng)抓包模塊把自己偽裝成一個網(wǎng)絡(luò)協(xié)議的時候,系統(tǒng)在收到報文的時候就會給這個偽協(xié)議一次機會,讓它來對網(wǎng)卡收到的報文進(jìn)行一次處理,此時該模塊就會趁機對報文進(jìn)行窺探,也就是把這個報文完完整整的復(fù)制一份,假裝是自己接收到的報文,匯報給抓包模塊。
1.2 wireshark
wireshark是一種數(shù)據(jù)包分析工具,在各種網(wǎng)絡(luò)應(yīng)用中,比如通過思博倫的Spirent_TestCenter(TC)、Ixia測試儀抓取接口報文或者利用本文介紹的linux自帶的tcpdump監(jiān)聽抓包工具,抓包后導(dǎo)出報文再導(dǎo)入wireshark工具中進(jìn)行圖形化分析。
2 tcpdump抓包
2.1 常用命令
2.1.1 默認(rèn)啟動
# tcpdump
普通情況下,直接啟動tcpdump將監(jiān)視第一個網(wǎng)絡(luò)接口上所有流過的數(shù)據(jù)包。但是由于linux默認(rèn)網(wǎng)卡的問題,可能出現(xiàn)下面報錯:
tcpdump: packet printing is not supported for link type NFLOG: use -w
此時,可以通過ifconfig或者ip address命令查看網(wǎng)卡信息,并通過指定網(wǎng)口進(jìn)行數(shù)據(jù)抓包
2.1.2 監(jiān)視指定網(wǎng)絡(luò)接口的數(shù)據(jù)包?
# tcpdump -i ens33
2.1.3?監(jiān)視指定主機的數(shù)據(jù)包
指定通過網(wǎng)口ens33, 并且進(jìn)出口IP地址為10.193.12.119的數(shù)據(jù)包
# tcpdump -i ens33 host 10.193.12.119
指定通過網(wǎng)口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 \)
指定通過網(wǎng)口ens33, 并且主機10.193.12.12 和非主機10.193.17.4之間的通信
# tcpdump -i ens33 -n host 10.193.12.12 and ! 10.193.17.4?
指定通過網(wǎng)口ens33, 并且由主機10.193.12.12發(fā)送的所有數(shù)據(jù)
# tcpdump -i ens33 -n src 10.193.12.12
指定通過網(wǎng)口ens33, 并且由主機10.193.12.12接收的所有數(shù)據(jù)
# tcpdump -i ens33 -n dst 10.193.12.12
2.1.4 指定抓包數(shù)量
指定通過網(wǎng)口ens33, 并且由主機10.193.12.12接收的連續(xù)5個數(shù)據(jù)包
# 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
指定通過網(wǎng)口ens33, 并且由主機10.193.12.12接收的連續(xù)5個數(shù)據(jù)包,并采用精簡顯示,可與上圖進(jìn)行對比
2.1.6 按照協(xié)議類型抓包
以ping為例,我們知道ping的協(xié)議類型為icmp,我們可以指定icmp協(xié)議類型進(jìn)行抓包
# tcpdump -i ens33 -n icmp?
2.1.7?指定主機和端口號進(jìn)行抓包
指定網(wǎng)卡ens33,端口號為55555并且ip地址為10.193.12.12的連續(xù)10個數(shù)據(jù)包
# tcpdump -i ens33 -n tcp port 55555 and host 10.193.12.12 -c 10
2.1.8 抓包并保存
抓包并保存package.cap文件,可導(dǎo)出后再導(dǎo)入wireshark進(jìn)行包分析
# tcpdump -i ens33 -n ?port 55555 and host 10.193.12.12 -c 10 -w package.cap
2.2 tcpdump詳細(xì)參數(shù)
- -a 嘗試將網(wǎng)絡(luò)和廣播地址轉(zhuǎn)換成名稱。
- -c<數(shù)據(jù)包數(shù)目> 收到指定的數(shù)據(jù)包數(shù)目后,就停止進(jìn)行傾倒操作。
- -d 把編譯過的數(shù)據(jù)包編碼轉(zhuǎn)換成可閱讀的格式,并傾倒到標(biāo)準(zhǔn)輸出。
- -dd 把編譯過的數(shù)據(jù)包編碼轉(zhuǎn)換成C語言的格式,并傾倒到標(biāo)準(zhǔn)輸出。
- -ddd 把編譯過的數(shù)據(jù)包編碼轉(zhuǎn)換成十進(jìn)制數(shù)字的格式,并傾倒到標(biāo)準(zhǔn)輸出。
- -e 在每列傾倒資料上顯示連接層級的文件頭。
- -f 用數(shù)字顯示網(wǎng)際網(wǎng)絡(luò)地址。
- -F<表達(dá)文件> 指定內(nèi)含表達(dá)方式的文件。
- -i<網(wǎng)絡(luò)界面> 使用指定的網(wǎng)絡(luò)截面送出數(shù)據(jù)包。
- -l 使用標(biāo)準(zhǔn)輸出列的緩沖區(qū)。
- -n 不把主機的網(wǎng)絡(luò)地址轉(zhuǎn)換成名字。
- -N 不列出域名。
- -O 不將數(shù)據(jù)包編碼最佳化。
- -p 不讓網(wǎng)絡(luò)界面進(jìn)入混雜模式。
- -q 快速輸出,僅列出少數(shù)的傳輸協(xié)議信息。
- -r<數(shù)據(jù)包文件> 從指定的文件讀取數(shù)據(jù)包數(shù)據(jù)。
- -s<數(shù)據(jù)包大小> 設(shè)置每個數(shù)據(jù)包的大小。
- -S 用絕對而非相對數(shù)值列出TCP關(guān)聯(lián)數(shù)。
- -t 在每列傾倒資料上不顯示時間戳記。
- -tt 在每列傾倒資料上顯示未經(jīng)格式化的時間戳記。
- -T<數(shù)據(jù)包類型> 強制將表達(dá)方式所指定的數(shù)據(jù)包轉(zhuǎn)譯成設(shè)置的數(shù)據(jù)包類型。
- -v 詳細(xì)顯示指令執(zhí)行過程。
- -vv 更詳細(xì)顯示指令執(zhí)行過程。
- -x 用十六進(jìn)制字碼列出數(shù)據(jù)包資料。
- -w<數(shù)據(jù)包文件> 把數(shù)據(jù)包數(shù)據(jù)寫入指定的文件。
3 wireshark導(dǎo)入數(shù)據(jù)包進(jìn)行分析
?
?
總結(jié)
以上是生活随笔為你收集整理的【linux】【tcpdump】linux之tcpdump抓包及wireshark分析详解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 手机照片怎么恢复 恢复微信图片教程介绍
- 下一篇: hadoop3.2.1和java1.7版