tcpdump使用詳解

2021-06-07 18:21:06 字數 4022 閱讀 8887

tcpdump採用命令列方式,它的命令格式為: 

tcpdump [ -adeflnnopqstvx ] [ -c 數量 ] [ -f 檔名 ] 

[ -i 網路介面 ] [ -r 檔名] [ -s snaplen ] 

[ -t 型別 ] [ -w 檔名 ] [表示式 ] 

1. tcpdump的選項介紹 

-a    將網路位址和廣播位址轉變成名字; 

-d    將匹配資訊包的**以人們能夠理解的彙編格式給出; 

-dd    將匹配資訊包的**以c語言程式段的格式給出; 

-ddd    將匹配資訊包的**以十進位制的形式給出; 

-e    在輸出行列印出資料鏈路層的頭部資訊; 

-f    將外部的internet位址以數字的形式列印出來; 

-l    使標準輸出變為緩衝行形式; 

-n    不把網路位址轉換成名字; 

-t    在輸出的每一行不列印時間戳; 

-v    輸出乙個稍微詳細的資訊,例如在ip包中可以包括ttl和服務型別的資訊; 

-vv    輸出詳細的報文資訊; 

-c    在收到指定的包的數目後,tcpdump就會停止; 

-f    從指定的檔案中讀取表示式,忽略其它的表示式; 

-i    指定監聽的網路介面; 

-r    從指定的檔案中讀取包(這些包一般通過-w選項產生); 

-w    直接將包寫入檔案中,並不分析和列印出來; 

-t    將監聽到的包直接解釋為指定的型別的報文,常見的型別有rpc (遠端過程 

呼叫)和snmp(簡單       網路管理協議;) 

2. tcpdump的表示式介紹 

表示式是乙個正規表示式,tcpdump利用它作為過濾報文的條件,如果乙個報文滿足表 

達式的條件,則這個報文將會**獲。如果沒有給出任何條件,則網路上所有的資訊包將會 

被截獲。 

在表示式中一般如下幾種型別的關鍵字,一種是關於型別的關鍵字,主要包括host, 

net,port, 例如 host 210.27.48.2,指明 210.27.48.2是一台主機,net 202.0.0.0 指明 

202.0.0.0是乙個網路位址,port 23 指明埠號是23。如果沒有指定型別,預設的型別是 

host. 

第二種是確定傳輸方向的關鍵字,主要包括src , dst ,dst or src, dst and src , 

這些關鍵字指明了傳輸的方向。舉例說明,src 210.27.48.2 ,指明ip包中源位址是210.27. 

48.2 , dst net 202.0.0.0 指明目的網路位址是202.0.0.0 。如果沒有指明方向關鍵字,則 

預設是src or dst關鍵字。 

第三種是協議的關鍵字,主要包括fddi,ip ,arp,rarp,tcp,udp等型別。fddi指明是在 

fddi(分布式光纖資料介面網路)上的特定的網路協議,實際上它是"ether"的別名,fddi和e 

ther具有類似的源位址和目的位址,所以可以將fddi協議包當作ether的包進行處理和分析。 

其他的幾個關鍵字就是指明了監聽的包的協議內容。如果沒有指定任何協議,則tcpdump將會 

監聽所有協議的資訊包。 

除了這三種型別的關鍵字之外,其他重要的關鍵字如下:gateway, broadcast,less, 

greater,還有三種邏輯運算,取非運算是 'not ' '! ', 與運算是'and','&&';或運算 是'o 

r' ,'||'; 

這些關鍵字可以組合起來構成強大的組合條件來滿足人們的需要,下面舉幾個例子來 

說明。 

(1)想要截獲所有210.27.48.1 的主機收到的和發出的所有的資料報: 

#tcpdump host 210.27.48.1  

(2) 想要截獲主機210.27.48.1 和主機210.27.48.2 或210.27.48.3的通訊,使用命令 

:(在命令列中適用   括號時,一定要 

#tcpdump host 210.27.48.1 and \ (210.27.48.2 or 210.27.48.3 \)  

(3) 如果想要獲取主機210.27.48.1除了和主機210.27.48.2之外所有主機通訊的ip包 

,使用命令: 

#tcpdump ip host 210.27.48.1 and ! 210.27.48.2 

(4)如果想要獲取主機210.27.48.1接收或發出的telnet包,使用如下命令: 

#tcpdump tcp port 23 host 210.27.48.1  

3. tcpdump 的輸出結果介紹 

下面我們介紹幾種典型的tcpdump命令的輸出資訊 

(1) 資料鏈路層頭資訊 

使用命令#tcpdump --e host ice 

ice 是一台裝有linux的主機,她的mac位址是0:90:27:58:af:1a 

h219是一台裝有solaric的sun工作站,它的mac位址是8:0:20:79:5b:46;上一條 

命令的輸出結果如下所示: 

21:50:12.847509 eth0 < 8:0:20:79:5b:46 0:90:27:58:af:1a ip 60: h219.33357 >; ice. 

telne 

t 0:0(0) ack 22535 win 8760 (df) 

分析:21:50:12是顯示的時間, 847509是id號,eth0 《表示從網路介面eth0 接受該 

資料報,eth0 >;表示從網路介面裝置傳送資料報, 8:0:20:79:5b:46是主機h219的mac位址,它 

表明是從源位址h219發來的資料報. 0:90:27:58:af:1a是主機ice的mac位址,表示該資料報的 

目的位址是ice . ip 是表明該資料報是ip資料報,60 是資料報的長度, h219.33357 >; ice. 

telnet 表明該資料報是從主機h219的33357埠發往主機ice的telnet(23)埠. ack 22535 

表明對序列號是222535的包進行響應. win 8760表明傳送視窗的大小是8760. 

(2) arp包的tcpdump輸出資訊 

使用命令#tcpdump arp  

得到的輸出結果是: 

22:32:42.802509 eth0 >; arp who-has route tell ice (0:90:27:58:af:1a) 

22:32:42.802902 eth0 < arp reply route is-at 0:90:27:12:10:66 (0:90:27:58:af 

:1a) 

分析: 22:32:42是時間戳, 802509是id號, eth0 >;表明從主機發出該資料報, arp表明是 

arp請求包, who-has route tell ice表明是主機ice請求主機route的mac位址。 0:90:27:5 

8:af:1a是主機ice的mac位址。 

(3) tcp包的輸出資訊 

用tcpdump捕獲的tcp包的一般輸出資訊是: 

src >; dst: flags data-seqno ack window urgent options 

src >; dst:表明從源位址到目的位址, flags是tcp包中的標誌資訊,s 是syn標誌, f (f 

in), p (push) , r (rst) "." (沒有標記); data-seqno是資料報中的資料的順序號, ack是 

下次期望的順序號, window是接收快取的視窗大小, urgent表明資料報中是否有緊急指標.  

options是選項. 

(4) udp包的輸出資訊 

用tcpdump捕獲的udp包的一般輸出資訊是: 

route.port1 >; ice.port2: udp lenth 

udp十分簡單,上面的輸出行表明從主機route的port1埠發出的乙個udp資料報到主機 

ice的port2埠,型別是udp, 包的長度是lenth

tcpdump指令詳解

第一種是關於型別的關鍵字,主要包括host,net,port,例如 host 210.27.48.2,指明 210.27.48.2是一台主機,net 202.0.0.0 指明 202.0.0.0是乙個網路位址,port 23 指明埠號是23。如果沒有指定型別,預設的型別是host.第二種是確定傳輸方...

Tcpdump用法詳解

第一種是關於型別的關鍵字,主要包括host,net,port,例如 host 210.27.48.2,指明 210.27.48.2是一台主機,net 202.0.0.0 指明 202.0.0.0是乙個網路位址,port 23 指明埠號是23。如果沒有指定型別,預設的型別是host.第二種是確定傳輸方...

tcpdump使用詳解與學習 綜合整理

老規矩。先占個地。過後整理發布。tcpdump很給力的乙個工具。呵呵 2012.06.08 現在來把它整理發布一下。2012.06.10 tcpdump採用命令列方式,它的命令格式為 tcpdump adeflnnopqstvx c 數量 f 檔名 i 網路介面 r 檔名 s snaplen t 型...