Linux 基礎教程 30-tcpdump命令-2
? ? 在上一節講了一些tcpdump常用功能,本期我們繼續學習tcpdump後續功能。
流量過濾
? ? tcpdump不僅支持單個過濾表達式過濾,也還支持多個過濾表達式。但需要注意的是傳入的過濾表達式如含有Shell通配符,需將過濾表達式放在單引號內,以預防Shell對其進行解釋和通配。如果需要深入學習過濾表達式,可以使用以下命令進行查看:
1、只抓取UDP數據包
tcpdump另外還支持如下的協議類型:
2、抓取固定來源的數據包
? ? 對一台主機而言,後台運行的網路有很多個,所連接的伺服器也會有很多個。那如果我們只想查看某一個伺服器和主機的數據包情況了?在tcpdump中也支持這樣的數據包抓包,但需要設置src(source)和dst(destination)就可以了,同時tcpdum也支持各條件間邏輯運算,如and、or等。
? ?如果tcpdump未指定dst和src,則默認全匹配,而不區分是dst還是src
3、抓取特定埠的數據包
tcpdump還支持的過濾類型如下所示:
4、抓取屬於兩台伺服器之間的數據包
常用協議數據報格式
? ? 在此對協議不做深入講解,僅列出TCP/IP的數據報格式,有興趣的話,可以自行查閱相關資料。
IP協議數據報格式如下所示:
常用協議編號如下所示:
TCP協議數據報格式如下所示:
UDP協議數據報格式如下所示:
抓包進階
? ? 在明白各常用協議的數據報格式後,我們先來看看以下幾個示例:
1、抓取本機與百度之間TCP三次握手中的第一個網路包,且排除主機為cnblogs的數據包
2、抓取IP包長度大於500的數據包
proto[expr:size]詳細解釋如下所示:
proto:就是protocol的縮寫,表示協議的名稱。可以指定的協議類型大致如下:
expr:用來指定數據包偏移量,表示從某個協議數據包的第多個位開始提取內容,默認起始位置為0
size:表示從expr之後提取多少個位元組
比較運算符:常用的比較運算符如下所示:
為了增加可讀性,TCP協議數據報頭中有6個tcpflags標誌欄位域,在tcpdump中可以用以下方式進行表達:
邏輯運算符:如果一個過濾表達式中包含多個過濾表達式,則可以使用邏輯運算符進行串聯
要詳細理解上面的這些示例,需要對常用協議的數據報格式有足夠的了解和掌握。
[參考資料]
1.計算機網路(第七版) 謝希仁


TAG:笑傲測試 |