tcpdump help命令引數詳解

2021-04-12 21:44:08 字數 3752 閱讀 2698

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 , 這些關鍵字指明了傳輸的方向。舉例說明,src210.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和ether具有類似的源位址和目的位址,所以可以將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.

telnet 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:58:af:1a是主機ice的mac位址。

(3) tcp包的輸出資訊

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

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

src >; dst:表明從源位址到目的位址, flags是tcp包中的標誌資訊,s 是syn標誌, f (fin), 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 

Linux vi 命令引數

文字編輯器是所有計算機系統中最常用的一種工具。unix下的編輯器有ex,sed和vi等,其中,使用最為廣泛的是vi,而vi命令繁多,論壇裡好像這方面的總結不多,以下稍做總結,以資共享!渴望更正和補充!進入vi的命令 vi filename 開啟或新建檔案,並將游標置於第一行首 vi n filena...

Ubuntu apt 命令引數

apt cache search package 搜尋包 apt cache show package 獲取包的相關資訊,如說明 大小 版本等 sudo apt get install package 安裝包 sudo apt get install package reinstall 重新安裝包 ...

git clone 命令引數

git clone 命令引數 usage git clone options v,verbose be more verbose q,quiet be more quiet progress force progress reporting n,no checkout don t create a ...