亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 15862 | 回復(fù): 4
打印 上一主題 下一主題

[新手入門] tcpdump命令詳解(整理) [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2009-02-04 09:24 |只看該作者 |倒序瀏覽
今天門戶遇到了超量的鏈接,整理了一個tcpdump的命令說明,留作備用
簡易使用法: (為了抓到隱藏在 Code 裡的語法, 直接看port有傳什麼資料進來)
  • sudo tcpdump -nnnX  -s 1500  port 3306
  • sudo tcpdump -aXXX port 3306 | grep denied

-s : 抓比較長的 data 做一筆記錄
tcpdump採用命令行方式,它的命令格式為:
tcpdump [ -adeflnNOpqStvx ] [ -c 數(shù)量 ] [ -F 檔案名 ]
[ -i 網(wǎng)路介面 ] [ -r 檔案名] [ -s snaplen ]
[ -T 類型 ] [ -w 檔案名 ] [運算式 ]
1. tcpdump的選項介紹
  • -a     將網(wǎng)路位址和廣播地址轉(zhuǎn)變成名字;
  • -d     將匹配資訊包的代碼以人們能夠理解的彙編格式給出;
  • -dd   將匹配資訊包的代碼以c語言程式段的格式給出;
  • -ddd 將匹配資訊包的代碼以十進位的形式給出;
  • -e     在輸出行列印出資料連結(jié)層的頭部資訊;
  • -f       將外部的Internet位址以數(shù)位的形式列印出來;
  • -l       使標(biāo)準(zhǔn)輸出變?yōu)榫徯n行形式;
  • -n      不把網(wǎng)路位址轉(zhuǎn)換成名字;
  • -t       在輸出的每一行不列印時間戳;
  • -v       輸出一個稍微詳細(xì)的資訊,例如在ip包中可以包括ttl和服務(wù)類型的資訊;
  • -vv     輸出詳細(xì)的報文資訊;
  • -c      在收到指定的包的數(shù)目後,tcpdump就會停止;
  • -F      從指定的文件中讀取運算式,忽略其他的運算式;
  • -i       指定監(jiān)聽的網(wǎng)路介面;
  • -r       從指定的檔中讀取包(這些包一般通過-w選項產(chǎn)生);
  • -w      直接將包寫入檔中,並不分析和列印出來;
  • -T      將監(jiān)聽到的包直接解釋為指定的類型的報文,常見的類型有rpc (遠(yuǎn)程過程調(diào)用)和snmp(簡單網(wǎng)路管理協(xié)定;)

2. tcpdump的運算式介紹
運算式是一個正則運算式,tcpdump利用它作為過濾報文的條件,如果一個報文滿足表達(dá)式的條件,則這個報文將會被捕獲。如果沒有給出任何條件,則網(wǎng)路上所有的資訊包將會被截獲。
在運算式中一般如下幾種類型的關(guān)鍵字,一種是關(guān)於類型的關(guān)鍵字,主要包括host,net,port, 例如 host 210.27.48.2,指明
210.27.48.2是一臺主機,net 202.0.0.0 指明202.0.0.0是一個網(wǎng)路位址,port 23
指明埠號是23。如果沒有指定類型,缺省的類型是host。
第二種是確定傳輸方向的關(guān)鍵字,主要包括src , dst ,dst or src, dst and src,
這些關(guān)鍵字指明了傳輸?shù)姆较。舉例說明,src 210.27.48.2 ,指明ip包中源地址是210.27.48.2 , dst net
202.0.0.0 指明目的網(wǎng)路位址是202.0.0.0 。如果沒有指明方向關(guān)鍵字,則缺省是src or dst關(guān)鍵字。
第三種是協(xié)議的關(guān)鍵字,主要包括fddi,ip
,arp,rarp,tcp,udp等類型。Fddi指明是在FDDI(分散式光纖資料介面網(wǎng)路)上的特定的網(wǎng)路協(xié)定,實際上它是"ether"的別
名,fddi和ether具有類似的源位址和目的地址,所以可以將fddi協(xié)議包當(dāng)作ether的包進行處理和分析。其他的幾個關(guān)鍵字就是指明了監(jiān)聽的包
的協(xié)定內(nèi)容。如果沒有指定任何協(xié)議,則tcpdump將會監(jiān)聽所有協(xié)定的資訊包。
除了這三種類型的關(guān)鍵字之外,其他重要的關(guān)鍵字如下:gateway, broadcast,less,greater,還有三種邏輯運算,取非運算是 'not ' '! ', 與運算是'and','&&';或運算 是'or' ,'||';
這些關(guān)鍵字可以組合起來構(gòu)成強大的組合條件來滿足人們的需要,下面舉幾個例子來說明。
(1) 想要截獲所有210.27.48.1 的主機收到的和發(fā)出的所有的資料包:
        #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接收或發(fā)出的telnet包,使用如下命令:
        #tcpdump tcp port 23 and host 210.27.48.1
3. tcpdump 的輸出結(jié)果介紹
下面我們介紹幾種典型的tcpdump命令的輸出資訊
(1) 資料連結(jié)層頭信息
使用命令#tcpdump --e host ice
ice 是一臺裝有l(wèi)inux的主機,她的MAC位址是0:90:27:58:AF:1A
H219是一臺裝有SOLARIC的SUN工作站,它的MAC位址是8:0:20:79:5B:46;上一條命令的輸出結(jié)果如下所示:
                21:50:12.847509 eth0  ice.
        telnet 0:0(0) ack 22535 win 8760 (DF)
       
分析:21:50:12是顯示的時間, 847509是ID號,eth0 表示從網(wǎng)路周邊設(shè)備發(fā)送資料包, 8:0:20:79:5b:46是主機H219的MAC位址,它表明是從源位址H219發(fā)來的資料包.
0:90:27:58:af:1a是主機ICE的MAC位址,表示該資料包的目的地址是ICE . ip 是表明該資料包是IP資料包,60
是數(shù)據(jù)包的長度, h219.33357 > ice.telnet
表明該資料包是從主機H219的33357埠發(fā)往主機ICE的TELNET(23)埠. ack 22535表明對序列號是222535的包進行回應(yīng).
win 8760表明發(fā)送窗口的大小是8760.

(2) ARP包的TCPDUMP輸出資訊
使用命令#tcpdump arp
得到的輸出結(jié)果是:
                22:32:42.802509 eth0 > arp who-has route tell ice (0:90:27:58:af:1a)
        22:32:42.802902 eth0
分析: 22:32:42是時間戳, 802509是ID號, eth0 >表明從主機發(fā)出該資料包, 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包中的標(biāo)誌資訊,
        S 是SYN標(biāo)誌,
        F (FIN),
        P (PUSH),
        R (RST) "." (沒有標(biāo)記);
        data-seqno是資料包中的資料的順序號,
        ack是下次期望的順序號,
        window是接收緩存的視窗大小,
        urgent表明資料包中是否有緊急指針.
        Options是選項.
       

(4) UDP包的輸出資訊
用TCPDUMP捕獲的UDP包的一般輸出資訊是:
        route.port1 > ice.port2: udp lenth
UDP十分簡單,上面的輸出行表明從主機ROUTE的port1埠發(fā)出的一個UDP資料包到主機ICE的port2埠,類型是UDP, 包的長度是lenth
簡體版:
tcpdump采用命令行方式,它的命令格式為:
  tcpdump [ -adeflnNOpqStvx ] [ -c 數(shù)量 ] [ -F 文件名 ]
          [ -i 網(wǎng)絡(luò)接口 ] [ -r 文件名] [ -s snaplen ]
          [ -T 類型 ] [ -w 文件名 ] [表達(dá)式 ]
  1. tcpdump的選項介紹
   -a    將網(wǎng)絡(luò)地址和廣播地址轉(zhuǎn)變成名字;
   -d    將匹配信息包的代碼以人們能夠理解的匯編格式給出;
   -dd    將匹配信息包的代碼以c語言程序段的格式給出;
   -ddd    將匹配信息包的代碼以十進制的形式給出;
   -e    在輸出行打印出數(shù)據(jù)鏈路層的頭部信息;
   -f    將外部的Internet地址以數(shù)字的形式打印出來;
   -l    使標(biāo)準(zhǔn)輸出變?yōu)榫彌_行形式;
   -n    不把網(wǎng)絡(luò)地址轉(zhuǎn)換成名字;
   -t    在輸出的每一行不打印時間戳;
   -v    輸出一個稍微詳細(xì)的信息,例如在ip包中可以包括ttl和服務(wù)類型的信息;
   -vv    輸出詳細(xì)的報文信息;
   -c    在收到指定的包的數(shù)目后,tcpdump就會停止;
   -F    從指定的文件中讀取表達(dá)式,忽略其它的表達(dá)式;
   -i    指定監(jiān)聽的網(wǎng)絡(luò)接口;
   -r    從指定的文件中讀取包(這些包一般通過-w選項產(chǎn)生);
   -w    直接將包寫入文件中,并不分析和打印出來;
   -T    將監(jiān)聽到的包直接解釋為指定的類型的報文,常見的類型有rpc (遠(yuǎn)程過程
調(diào)用)和snmp(簡單       網(wǎng)絡(luò)管理協(xié)議;)
  2. tcpdump的表達(dá)式介紹
   表達(dá)式是一個正則表達(dá)式,tcpdump利用它作為過濾報文的條件,如果一個報文滿足表
達(dá)式的條件,則這個報文將會被捕獲。如果沒有給出任何條件,則網(wǎng)絡(luò)上所有的信息包將會
被截獲。
   在表達(dá)式中一般如下幾種類型的關(guān)鍵字,一種是關(guān)于類型的關(guān)鍵字,主要包括host,
net,port, 例如 host 210.27.48.2,指明 210.27.48.2是一臺主機,net 202.0.0.0 指明
202.0.0.0是一個網(wǎng)絡(luò)地址,port 23 指明端口號是23。如果沒有指定類型,缺省的類型是
host.
   第二種是確定傳輸方向的關(guān)鍵字,主要包括src , dst ,dst or src, dst and src ,
這些關(guān)鍵字指明了傳輸?shù)姆较。舉例說明,src 210.27.48.2 ,指明ip包中源地址是210.27.
48.2 , dst net 202.0.0.0 指明目的網(wǎng)絡(luò)地址是202.0.0.0 。如果沒有指明方向關(guān)鍵字,則
缺省是src or dst關(guān)鍵字。
   第三種是協(xié)議的關(guān)鍵字,主要包括fddi,ip ,arp,rarp,tcp,udp等類型。Fddi指明是在
FDDI(分布式光纖數(shù)據(jù)接口網(wǎng)絡(luò))上的特定的網(wǎng)絡(luò)協(xié)議,實際上它是"ether"的別名,fddi和e
ther具有類似的源地址和目的地址,所以可以將fddi協(xié)議包當(dāng)作ether的包進行處理和分析。
其他的幾個關(guān)鍵字就是指明了監(jiān)聽的包的協(xié)議內(nèi)容。如果沒有指定任何協(xié)議,則tcpdump將會
監(jiān)聽所有協(xié)議的信息包。
   除了這三種類型的關(guān)鍵字之外,其他重要的關(guān)鍵字如下:gateway, broadcast,less,
greater,還有三種邏輯運算,取非運算是 'not ' '! ', 與運算是'and','&&';或運算 是'o
r' ,'||';
   這些關(guān)鍵字可以組合起來構(gòu)成強大的組合條件來滿足人們的需要,下面舉幾個例子來
說明。
   (1)想要截獲所有210.27.48.1 的主機收到的和發(fā)出的所有的數(shù)據(jù)包:
    #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接收或發(fā)出的telnet包,使用如下命令:
    #tcpdump tcp port 23 and host 210.27.48.1
  3. tcpdump 的輸出結(jié)果介紹
   下面我們介紹幾種典型的tcpdump命令的輸出信息
   (1) 數(shù)據(jù)鏈路層頭信息
   使用命令#tcpdump --e host ice
   ice 是一臺裝有l(wèi)inux的主機,她的MAC地址是0:90:27:58:AF:1A
   H219是一臺裝有SOLARIC的SUN工作站,它的MAC地址是8:0:20:79:5B:46;上一條
命令的輸出結(jié)果如下所示:
21:50:12.847509 eth0 ; ice.
telne
t 0:0(0) ack 22535 win 8760 (DF)
  分析:21:50:12是顯示的時間, 847509是ID號,eth0 ;表示從網(wǎng)絡(luò)接口設(shè)備發(fā)送數(shù)據(jù)包, 8:0:20:79:5b:46是主機H219的MAC地址,它
表明是從源地址H219發(fā)來的數(shù)據(jù)包. 0:90:27:58:af:1a是主機ICE的MAC地址,表示該數(shù)據(jù)包的
目的地址是ICE . ip 是表明該數(shù)據(jù)包是IP數(shù)據(jù)包,60 是數(shù)據(jù)包的長度, h219.33357 >; ice.
telnet 表明該數(shù)據(jù)包是從主機H219的33357端口發(fā)往主機ICE的TELNET(23)端口. ack 22535
表明對序列號是222535的包進行響應(yīng). win 8760表明發(fā)送窗口的大小是8760.
  (2) ARP包的TCPDUMP輸出信息
   使用命令#tcpdump arp
   得到的輸出結(jié)果是:
  22:32:42.802509 eth0 >; arp who-has route tell ice (0:90:27:58:af:1a)
  22:32:42.802902 eth0 ;表明從主機發(fā)出該數(shù)據(jù)包, 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包中的標(biāo)志信息,S 是SYN標(biāo)志, F (F
IN), P (PUSH) , R (RST) "." (沒有標(biāo)記); data-seqno是數(shù)據(jù)包中的數(shù)據(jù)的順序號, ack是
下次期望的順序號, window是接收緩存的窗口大小, urgent表明數(shù)據(jù)包中是否有緊急指針.
Options是選項.
  (4) UDP包的輸出信息
   用TCPDUMP捕獲的UDP包的一般輸出信息是:
  route.port1 >; ice.port2: udp lenth
  UDP十分簡單,上面的輸出行表明從主機ROUTE的port1端口發(fā)出的一個UDP數(shù)據(jù)包到主機
ICE的port2端口,類型是UDP, 包的長度是lenth
號稱最詳細(xì)的說明
第一種是關(guān)于類型的關(guān)鍵字,主要包括host,net,port, 例如 host
210.27.48.2,指明 210.27.48.2是一臺主機,net 202.0.0.0 指明 202.0.0.0是一個網(wǎng)絡(luò)地址,port
23 指明端口號是23。如果沒有指定類型,缺省的類型是host.
第二種是確定傳輸方向的關(guān)鍵字,主要包括src , dst ,dst
or src, dst and src ,這些關(guān)鍵字指明了傳輸?shù)姆较颉Ee例說明,src 210.27.48.2
,指明ip包中源地址是210.27.48.2 , dst net 202.0.0.0 指明目的網(wǎng)絡(luò)地址是202.0.0.0
。如果沒有指明方向關(guān)鍵字,則缺省是src or dst關(guān)鍵字。
第三種是協(xié)議的關(guān)鍵字,主要包括
fddi,ip,arp,rarp,tcp,udp等類型。Fddi指明是在FDDI(分布式光纖數(shù)據(jù)接口網(wǎng)絡(luò))上的特定
的網(wǎng)絡(luò)協(xié)議,實際上它是"ether"的別名,fddi和ether具有類似的源地址和目的地址,所以可以將fddi協(xié)議包當(dāng)作ether的包進行處理和
分析。其他的幾個關(guān)鍵字就是指明了監(jiān)聽的包的協(xié)議內(nèi)容。如果沒有指定任何協(xié)議,則tcpdump將會監(jiān)聽所有協(xié)議的信息包。

除了這三種類型的關(guān)鍵字之外,其他重要的關(guān)鍵字如下:gateway, broadcast,less,greater,還有三種邏輯運算,取非運算是
'not ' '! ', 與運算是'and','&&';或運算 是'or'
,'││';這些關(guān)鍵字可以組合起來構(gòu)成強大的組合條件來滿足人們的需要,下面舉幾個例子來說明。
  普通情況下,直接啟動tcpdump將監(jiān)視第一個網(wǎng)絡(luò)界面上所有流過的數(shù)據(jù)包。
# tcpdump
tcpdump: listening on fxp0
11:58:47.873028 202.102.245.40.netbios-ns > 202.102.245.127.netbios-ns: udp 50
11:58:47.974331 0:10:7b:8:3a:56 > 1:80:c2:0:0:0 802.1d ui/C len=43
                       0000 0000 0080 0000 1007 cf08 0900 0000
                       0e80 0000 902b 4695 0980 8701 0014 0002
                       000f 0000 902b 4695 0008 00
11:58:48.373134 0:0:e8:5b:6d:85 > Broadcast sap e0 ui/C len=97
                       ffff 0060 0004 ffff ffff ffff ffff ffff
                       0452 ffff ffff 0000 e85b 6d85 4008 0002
                       0640 4d41 5354 4552 5f57 4542 0000 0000
                       0000 00
使用-i參數(shù)指定tcpdump監(jiān)聽的網(wǎng)絡(luò)界面,這在計算機具有多個網(wǎng)絡(luò)界面時非常有用,
使用-c參數(shù)指定要監(jiān)聽的數(shù)據(jù)包數(shù)量,
使用-w參數(shù)指定將監(jiān)聽到的數(shù)據(jù)包寫入文件中保存
A想要截獲所有210.27.48.1 的主機收到的和發(fā)出的所有的數(shù)據(jù)包:
#tcpdump host 210.27.48.1
B想要截獲主機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 \)
C如果想要獲取主機210.27.48.1除了和主機210.27.48.2之外所有主機通信的ip包,使用命令:
#tcpdump ip host 210.27.48.1 and ! 210.27.48.2
D如果想要獲取主機210.27.48.1接收或發(fā)出的telnet包,使用如下命令:
#tcpdump tcp port 23 host 210.27.48.1
E 對本機的udp 123 端口進行監(jiān)視 123 為ntp的服務(wù)端口
# tcpdump udp port 123
F 系統(tǒng)將只對名為hostname的主機的通信數(shù)據(jù)包進行監(jiān)視。主機名可以是本地主機,也可以是網(wǎng)絡(luò)上的任何一臺計算機。下面的命令可以讀取主機hostname發(fā)送的所有數(shù)據(jù):
#tcpdump -i eth0 src host hostname
G 下面的命令可以監(jiān)視所有送到主機hostname的數(shù)據(jù)包:
#tcpdump -i eth0 dst host hostname
H  我們還可以監(jiān)視通過指定網(wǎng)關(guān)的數(shù)據(jù)包:
#tcpdump -i eth0 gateway Gatewayname
I 如果你還想監(jiān)視編址到指定端口的TCP或UDP數(shù)據(jù)包,那么執(zhí)行以下命令:
#tcpdump -i eth0 host hostname and port 80
J 如果想要獲取主機210.27.48.1除了和主機210.27.48.2之外所有主機通信的ip包
,使用命令:
#tcpdump ip host 210.27.48.1 and ! 210.27.48.2
K 想要截獲主機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 \)
L 如果想要獲取主機210.27.48.1除了和主機210.27.48.2之外所有主機通信的ip包,使用命令:
 #tcpdump ip host 210.27.48.1 and ! 210.27.48.2
M 如果想要獲取主機210.27.48.1接收或發(fā)出的telnet包,使用如下命令:
 #tcpdump tcp port 23 host 210.27.48.1
第三種是協(xié)議的關(guān)鍵字,主要包括fddi,ip ,arp,rarp,tcp,udp等類型
除了這三種類型的關(guān)鍵字之外,其他重要的關(guān)鍵字如下:gateway, broadcast,less,
greater,還有三種邏輯運算,取非運算是 'not ' '! ', 與運算是'and','&&';或運算 是'o
r' ,'||';
第二種是確定傳輸方向的關(guān)鍵字,主要包括src , dst ,dst or src, dst and src ,
如果我們只需要列出送到80端口的數(shù)據(jù)包,用dst port;如果我們只希望看到返回80端口的數(shù)據(jù)包,用src port。
#tcpdump –i eth0 host hostname and dst port 80  目的端口是80
或者
#tcpdump –i eth0 host hostname and src port 80  源端口是80  一般是提供http的服務(wù)的主機
如果條件很多的話  要在條件之前加and 或 or 或 not
#tcpdump -i eth0 host ! 211.161.223.70 and ! 211.161.223.71 and dst port 80
如果在ethernet 使用混雜模式 系統(tǒng)的日志將會記錄
May  7 20:03:46 localhost kernel: eth0: Promiscuous mode enabled.
May  7 20:03:46 localhost kernel: device eth0 entered promiscuous mode
May  7 20:03:57 localhost kernel: device eth0 left promiscuous mode
tcpdump
對截獲的數(shù)據(jù)并沒有進行徹底解碼,數(shù)據(jù)包內(nèi)的大部分內(nèi)容是使用十六進制的形式直接打印輸出的。顯然這不利于分析網(wǎng)絡(luò)故障,通常的解決辦法是先使用帶-w參
數(shù)的tcpdump 截獲數(shù)據(jù)并保存到文件中,然后再使用其他程序進行解碼分析。當(dāng)然也應(yīng)該定義過濾規(guī)則,以避免捕獲的數(shù)據(jù)包填滿整個硬盤。
這些已經(jīng)夠用的了。
學(xué)習(xí)的話有中文手冊:
名稱(NAME)
tcpdump-轉(zhuǎn)儲網(wǎng)絡(luò)上的數(shù)據(jù)流
總覽(SYNOPSIS)
tcpdump[-adeflnNOpqStvx][-ccount][-Ffile]
[-iinterface][-rfile][-ssnaplen]
[-Ttype][-wfile][expression]
描述(DESCRIPTION)
Tcpdump打印出在某個網(wǎng)絡(luò)界面上,匹配布爾表達(dá)式expression的報頭.
對于SunOS的nit或bpf界面:要運行tcpdump,你必須有/dev/nit或/dev/bpf*的讀訪問權(quán)限.
對于Solaris的dlpi:你必須有網(wǎng)絡(luò)仿真設(shè)備(networkpseudodevice),如/dev/le的讀訪問權(quán)限.
對于HP-UX的dlpi:你必須是root,或者把它安裝成root的設(shè)置uid程序.對于IRIX的snoop:你必須是root,或者把它安裝成root的設(shè)置uid程序.對于Linux:你必須是root,或者把它安裝成root的設(shè)置uid程序.
對于Ultrix和DigitalUNIX:一旦超級用戶使用pfconfig(8)開放了promiscuous操作模式(promiscuous-mode),任何用戶都可以運行tcpdump.
對于BSD:你必須有/dev/bpf*的讀訪問權(quán)限.
選項(OPTIONS)
-a
試著把網(wǎng)絡(luò)和廣播地址轉(zhuǎn)換成名稱.
-c
當(dāng)收到count報文后退出.
-d
把編譯好的報文匹配模板(packet-matchingcode)翻譯成可讀形式,傳往標(biāo)準(zhǔn)輸出,然后退出.
-dd
把報文匹配模板(packet-matchingcode)以C程序片斷的形式輸出.
-ddd
把報文匹配模板(packet-matchingcode)以十進制數(shù)形式輸出(前面加上總數(shù)).
-e
每行都顯示鏈路層報頭.
-f
用數(shù)字形式顯示'外部的'互聯(lián)網(wǎng)地址,而不是字符形式(這個選項用來繞開腦殼壞光的SUN黃頁服務(wù)器的問題---一般說來它翻譯外部網(wǎng)絡(luò)數(shù)字地址的時候會長期掛起).
-F
把file的內(nèi)容用作過濾表達(dá)式.忽略命令行上的表達(dá)式.
-i
監(jiān)聽interface.如果不指定接口,tcpdump在系統(tǒng)的接口清單中,尋找號碼最小,已經(jīng)配置好的接口(loopback除外).選中的時候會中斷連接.
-l
行緩沖標(biāo)準(zhǔn)輸出.可用于捕捉數(shù)據(jù)的同時查看數(shù)據(jù).例如,
``tcpdump-l|teedat''or``tcpdump-l>dat&tail-fdat''.
-n
別把地址轉(zhuǎn)換成名字(就是說,主機地址,端口號等)
-N
不顯示主機名字中的域名部分.例如,如果使用這個選項,tcpdump只顯示``nic'',而不是``nic.ddn.mil''.
-O
禁止運行報文匹配模板的優(yōu)化器.只有當(dāng)你懷疑優(yōu)化器有bug時才有用.
-p
禁止把接口置成promiscuous模式.注意,接口有可能因其他原因而處于promiscuous模式;因此,'-p'不能作為`etherhost{local-hw-addr}或etherbroadcast'的簡寫.
-q
快速輸出.顯示較少的
協(xié)議
信息,輸出行會短一點點.
-r
從file中讀入數(shù)據(jù)報(文件是用-w選項創(chuàng)建的).如果file是``-'',就讀標(biāo)準(zhǔn)輸入.
-s
從每個報文中截取snaplen字節(jié)的數(shù)據(jù),而不是缺省的68(如果是SunOS的NIT,最小值是96).68個字節(jié)適用于IP,ICMP,TCP和UDP,但是有可能截掉名字服務(wù)器和NFS報文的
協(xié)議
信息(見下面).輸出時如果指定``[|proto]'',tcpdump可以指出那些捕捉量過小的數(shù)據(jù)報,這里的proto是截斷發(fā)生處的
協(xié)議
層名稱.注意,采用更大的捕捉范圍既增加了處理報文的時間,又相應(yīng)的減少了報文的緩沖數(shù)量,可能導(dǎo)致報文的丟失.你應(yīng)該把snaplen設(shè)的盡量小,只要能夠容納你需要的
協(xié)議
信息就可以了.
-T
把通過"expression"挑選出來的報文解釋成指定的type.目前已知的類型有:rpc(遠(yuǎn)程過程調(diào)用RemoteProcedureCall),rtp(實時應(yīng)用
協(xié)議
Real-TimeApplicationsprotocol),rtcp(實時應(yīng)用控制
協(xié)議
Real-TimeApplicationscontrolprotocol),vat(可視音頻工具VisualAudioTool),和wb(分布式白板distributedWhiteBoard).
-S
顯示絕對的,而不是相對的TCP序列號.
-t
禁止顯示時戳標(biāo)志.
-tt
顯示未格式化的時戳標(biāo)志.
-v
(稍微多一點)繁瑣的輸出.例如,顯示IP數(shù)據(jù)報中的生存周期和服務(wù)類型.
-vv
更繁瑣的輸出.例如,顯示NFS應(yīng)答報文的附加域.
-w
把原始報文存進file,而不是分析和顯示.它們可以以后用-r選項顯示.如果file是``-'',就寫往標(biāo)準(zhǔn)輸出.
-x
以16進制數(shù)形式顯示每一個報文(去掉鏈路層報頭后).可以顯示較小的完整報文,否則只顯示snaplen個字節(jié).
expression
用來選擇要轉(zhuǎn)儲的數(shù)據(jù)報.如果沒有指定expression,就轉(zhuǎn)儲網(wǎng)絡(luò)的全部報文.否則,只轉(zhuǎn)儲相對expression為`true'的數(shù)據(jù)報.
expression一個或多個原語(primitive)組成.原語通常由一個標(biāo)識(id,名稱或數(shù)字),和標(biāo)識前面的一個或多個修飾子(qualifier)組成.修飾子有三種不同的類型:
type
類型修飾子指出標(biāo)識名稱或標(biāo)識數(shù)字代表什么類型的東西.可以使用的類型有host,net和port.例如,`hostfoo',`net128.3',`port20'.如果不指定類型修飾子,就使用缺省的host.
dir

向修飾子指出相對于標(biāo)識的傳輸方向(數(shù)據(jù)是傳入還是傳出標(biāo)識).可以使用的方向有src,dst,srcordst和srcanddst.例
如,`srcfoo',`dstnet128.3',`srcordstportftp-data'.如果不指定方向修飾子,就使用缺省的
srcordst.對于`null'鏈路層(就是說象slip之類的點到點
協(xié)議
),用inbound和outbound修飾子指定所需的傳輸方向.
proto
協(xié)議
修飾子要求匹配指定的
協(xié)議
.可以使用的
協(xié)議
有:ether,fddi,ip,arp,rarp,decnet,lat,sca,moprc,mopdl,tcp和udp.例如,`ethersrcfoo',`arpnet128.3',`tcpport21'.如果不指定
協(xié)議
修飾子,就使用所有符合類型的
協(xié)議
.例如,`srcfoo'指`(ip或arp或rarp)srcfoo'(注意后者不符合語法),`netbar'指`(ip或arp或rarp)netbar',`port53'指`(tcp或udp)port53'.
[`fddi'實際上是`ether'的別名;分析器把它們視為``用在指定網(wǎng)絡(luò)接口上的數(shù)據(jù)鏈路層.''FDDI報頭包含類似于以太
協(xié)議
的源目地址,而且通常包含類似于以太
協(xié)議
的報文類型,因此你可以過濾FDDI域,就象分析以太
協(xié)議
一樣.FDDI報頭也包含其他域,但是你不能在過濾器表達(dá)式里顯式描述.]
作為上述的補充,有一些特殊的`原語'關(guān)鍵字,它們不同于上面的模式:gateway,broadcast,less,greater和數(shù)學(xué)表達(dá)式.這些在后面有敘述.

復(fù)雜的過濾器表達(dá)式可以通過and,or和not連接原語來組建.例如,`hostfooandnotportftpandnotportftp-
data'.為了少敲點鍵,可以忽略相同的修飾子.例如,`tcpdstportftporftp-dataordomain'實際上就是
`tcpdstportftportcpdstportftp-dataortcpdstportdomain'.
允許的原語有:
dsthosthost
如果報文中IP的目的地址域是host,則邏輯為真.host既可以是地址,也可以是主機名.
srchosthost
如果報文中IP的源地址域是host,則邏輯為真.
hosthost
如果報文中IP的源地址域或者目的地址域是host,則邏輯為真.上面所有的host表達(dá)式都可以加上ip,arp,或rarp關(guān)鍵字做前綴,就象:
iphosthost
它等價于:
etherproto\ipandhosthost
如果host是擁有多個IP地址的主機名,它的每個地址都會被查驗.
etherdstehost
如果報文的以太目的地址是ehost,則邏輯為真.Ehost既可以是名字(/etc/ethers里有),也可以是數(shù)字(有關(guān)數(shù)字格式另見ethers(3N)).
ethersrcehost
如果報文的以太源地址是ehost,則邏輯為真.
etherhostehost
如果報文的以太源地址或以太目的地址是ehost,則邏輯為真.
gatewayhost
如果報文把host當(dāng)做網(wǎng)關(guān),則邏輯為真.也就是說,報文的以太源或目的地址是host,但是IP的源目地址都不是host.host必須是個主機名,而且必須存在/etc/hosts和/etc/ethers中.(一個等價的表達(dá)式是
etherhostehostandnothosthost
對于host/ehost,它既可以是名字,也可以是數(shù)字.)
dstnetnet
如果報文的IP目的地址屬于網(wǎng)絡(luò)號net,則邏輯為真.net既可以是名字(存在/etc/networks中),也可以是網(wǎng)絡(luò)號.(詳見networks(4)).
srcnetnet
如果報文的IP源地址屬于網(wǎng)絡(luò)號net,則邏輯為真.
netnet
如果報文的IP源地址或目的地址屬于網(wǎng)絡(luò)號net,則邏輯為真.
netnetmaskmask
如果IP地址匹配指定網(wǎng)絡(luò)掩碼(netmask)的net,則邏輯為真.本原語可以用src或dst修飾.
netnet/len
如果IP地址匹配指定網(wǎng)絡(luò)掩碼的net,則邏輯為真,掩碼的有效位寬為len.本原語可以用src或dst修飾.
dstportport
如果報文是ip/tcp或ip/udp,并且目的端口是port,則邏輯為真.port是一個數(shù)字,也可以是/etc/services中說明過的名字(參看tcp(4P)和udp(4P)).如果使用名字,則檢查端口號和
協(xié)議
.如果使用數(shù)字,或者有二義的名字,則只檢查端口號(例如,dstport513將顯示tcp/login的數(shù)據(jù)和udp/who的數(shù)據(jù),而portdomain將顯示tcp/domain和udp/domain的數(shù)據(jù)).
srcportport
如果報文的源端口號是port,則邏輯為真.
portport
如果報文的源端口或目的端口是port,則邏輯為真.上述的任意一個端口表達(dá)式都可以用關(guān)鍵字tcp或udp做前綴,就象:
tcpsrcportport
它只匹配源端口是port的TCP報文.
lesslength
如果報文的長度小于等于length,則邏輯為真.它等同于:
len=length.
ipprotoprotocol
如果報文是IP數(shù)據(jù)報(參見ip(4P)),其內(nèi)容的
協(xié)議
類型是protocol,則邏輯為真.Protocol可以是數(shù)字,也可以是下列名稱中的一個:icmp,igrp,udp,nd,或tcp.注意這些標(biāo)識符tcp,udp,和icmp也同樣是關(guān)鍵字,所以必須用反斜杠(\)轉(zhuǎn)義,在C-shell中應(yīng)該是\\.
etherbroadcast
如果報文是以太廣播報文,則邏輯為真.關(guān)鍵字ether是可選的.
ipbroadcast
如果報文是IP廣播報文,則邏輯為真.Tcpdump檢查全0和全1廣播約定,并且檢查本地的子網(wǎng)掩碼.
ethermulticast
如果報文是以太多目傳送報文(multicast),則邏輯為真.關(guān)鍵字ether是可選的.這實際上是`ether[0]&1!=0'的簡寫.
ipmulticast
如果報文是IP多目傳送報文,則邏輯為真.
etherprotoprotocol
如果報文
協(xié)議
屬于以太類型的protocol,則邏輯為真.Protocol可以是數(shù)字,也可以是名字,如ip,arp,或rarp.注意這些標(biāo)識符也是關(guān)鍵字,所以必須用反斜杠(\)轉(zhuǎn)義.[如果是FDDI(例如,`fddiprotocolarp'),
協(xié)議
標(biāo)識來自802.2邏輯鏈路控制(LLC)報頭,它通常位于FDDI報頭的頂層.當(dāng)根據(jù)
協(xié)議
標(biāo)識過濾報文時,Tcpdump假設(shè)所有的FDDI報文含有LLC報頭,而且LLC報頭用的是SNAP格式.]
decnetsrchost
如果DECNET的源地址是host,則邏輯為真,該主機地址的形式可能是``10.123'',或者是DECNET主機名.[只有配置成運行DECNET的Ultrix系統(tǒng)支持DECNET主機名.]
decnetdsthost
如果DECNET的目的地址是host,則邏輯為真.
decnethosthost
如果DECNET的源地址或目的地址是host,則邏輯為真.
ip,arp,rarp,decnet
是:
etherprotop
的簡寫形式,其中p為上述
協(xié)議
的一種.
lat,moprc,mopdl
是:
etherprotop
的簡寫形式,其中p為上述
協(xié)議
的一種.注意tcpdump目前不知道如何分析這些
協(xié)議
.
tcp,udp,icmp
是:
ipprotop
的簡寫形式,其中p為上述
協(xié)議
的一種.
exprrelopexpr

果這個關(guān)系成立,則邏輯為真,其中relop是>,=,576'
顯示IP廣播或多目傳送的數(shù)據(jù)報,這些報文不是通過以太網(wǎng)的廣播或多目傳送形式傳送的:
tcpdump'ether[0]&1=0andip[16]>=224'
顯示所有不是回響請求/應(yīng)答的ICMP報文(也就是說,不是ping報文):
tcpdump'icmp[0]!=8andicmp[0]!=0"
輸出格式(OUTPUTFORMAT)
tcpdump的輸出格式取決于
協(xié)議
.下面的描述給出大多數(shù)格式的簡要說明和范例.
鏈路層報頭(LinkLevelHeaders)
如果給出'-e'選項就顯示鏈路層報頭.在以太網(wǎng)上,顯示報文的源目地址,
協(xié)議
和報文長度.

FDDI網(wǎng)絡(luò)上,'-e'選項導(dǎo)致tcpdump顯示出`幀控制(framecontrol)'域,源目地址和報文長度.(`幀控制'域負(fù)責(zé)解釋其余的報
文.普通報文(比如說載有IP數(shù)據(jù)報)是`異步'報文,優(yōu)先級介于0到7;例如,`async4'.這些被認(rèn)為載有802.2邏輯鏈路控制(LLC)報
文;如果它們不是ISO數(shù)據(jù)報或者所謂的SNAP報文,就顯示出LLC報頭.
(注意:以下描述中假設(shè)你熟悉RFC-1144中說明的SLIP壓縮算法.)

SLIP鏈路上,tcpdump顯示出方向指示(``I''指inbound,``O''指outbound),報文類型和壓縮信息.首先顯示的是報文類
型.有三種類型ip,utcp和ctcp.對于ip報文不再顯示更多的鏈路信息.對于TCP報文,在類型后面顯示連接標(biāo)識.如果報文是壓縮過的,就顯示出
編碼的報頭.特殊情形以*S+n和*SA+n的形式顯示,這里的n是順序號(或順序號及其確認(rèn))發(fā)生的改變總和.如果不是特殊情形,就顯示0或多少個改
變.改變由U(urgentpointer),W(window),A(ack),S(sequencenumber)和I(packetID)指明,后
跟一個變化量(+nor-n),或另一個值(=n).最后顯示報文中的數(shù)據(jù)總和,以及壓縮報頭的長度.
例如,下面一行顯示了一個傳出的壓縮的TCP報文,有一個隱含的連接標(biāo)識;確認(rèn)(ack)的變化量是6,順序號是49,報文ID是6;有三個字節(jié)的數(shù)據(jù)和六個字節(jié)的壓縮報頭:
Octcp*A+6S+49I+63(6)
ARP/RARP報文
Arp/rarp報文的輸出顯示請求類型及其參數(shù).輸出格式傾向于能夠自我解釋.這里是一個簡單的例子,來自主機rtsg到主機csam的'rlogin'開始部分:
arpwho-hascsamtellrtsg
arpreplycsamis-atCSAM
第一行說明rtsg發(fā)出一個arp報文詢問internet主機csam的以太網(wǎng)地址.Csam用它的以太地址作應(yīng)答(這個例子中,以太地址是大寫的,internet地址為小寫).
如果用tcpdump-n看上去要清楚一些:
arpwho-has128.3.254.6tell128.3.254.68
arpreply128.3.254.6is-at02:07:01:00:01:c4
如果用tcpdump-e,可以看到實際上第一個報文是廣播,第二個報文是點到點的:
RTSGBroadcast080664:arpwho-hascsamtellrtsg
CSAMRTSG080664:arpreplycsamis-atCSAM
這里第一個報文指出以太網(wǎng)源地址是RTSG,目的地址是以太網(wǎng)廣播地址,類型域為16進制數(shù)0806(類型ETHER_ARP),報文全長64字節(jié).
TCP報文
(注意:以下的描述中假設(shè)你熟悉RFC-793中說明的TCP
協(xié)議
,如果你不了解這個
協(xié)議
,無論是本文還是tcpdump都對你用處不大)
一般說來tcp
協(xié)議
的輸出格式是:
src>dst:flagsdata-seqnoackwindowurgentoptions
Src
和dst是源目IP地址和端口.Flags是S(SYN),F(FIN),P(PUSH)或R(RST)或單獨的`.'(無標(biāo)志),或者是它們的組
合.Data-seqno說明了本報文中的數(shù)據(jù)在流序號中的位置(見下例).Ack是在這條連接上信源機希望下一個接收的字節(jié)的流序號
(sequencenumber).Window是在這條連接上信源機接收緩沖區(qū)的字節(jié)大小.Urg表明報文內(nèi)是`緊急(urgent)'數(shù)
據(jù).Options是tcp可選報頭,用尖括號括起(例如,).
Src,dst和flags肯定存在.其他域依據(jù)報文的tcp報頭內(nèi)容,只輸出有必要的部分.
下面是從主機rtsgrlogin到主機csam的開始部分.
rtsg.1023>csam.login:S768512:768512(0)win4096
csam.login>rtsg.1023:S947648:947648(0)ack768513win4096
rtsg.1023>csam.login:.ack1win4096
rtsg.1023>csam.login:P1:2(1)ack1win4096
csam.login>rtsg.1023:.ack2win4096
rtsg.1023>csam.login:P2:21(19)ack1win4096
csam.login>rtsg.1023:P1:2(1)ack21win4077
csam.login>rtsg.1023:P2:3(1)ack21win4077urg1
csam.login>rtsg.1023:P3:4(1)ack21win4077urg1

一行是說從rtsg的tcp端口1023向csam的login端口發(fā)送報文.S標(biāo)志表明設(shè)置了SYN標(biāo)志.報文的流序號是768512,沒有數(shù)據(jù).(這
個寫成`first:last(nbytes)',意思是`從流序號first到last,不包括last,有nbytes字節(jié)的用戶數(shù)據(jù)'.)此時沒有
捎帶確認(rèn)(piggy-backedack),有效的接收窗口是4096字節(jié),有一個最大段大小(max-segment-size)的選項,請求設(shè)置
mss為1024字節(jié).
Csam用類似的形式應(yīng)答,只是增加了一個對rtsgSYN的捎帶確認(rèn).然后Rtsg確認(rèn)csam的SYN.`.'意味著
沒有設(shè)置標(biāo)志.這個報文不包含數(shù)據(jù),因此也就沒有數(shù)據(jù)的流序號.注意這個確認(rèn)流序號是一個小整數(shù)(1).當(dāng)tcpdump第一次發(fā)現(xiàn)一個tcp會話時,它
顯示報文攜帶的流序號.在隨后收到的報文里,它顯示當(dāng)前報文和最初那個報文的流序號之差.這意味著從第一個報文開始,以后的流序號可以理解成數(shù)據(jù)流中的相
對位移
asrelativebytepositionsintheconversation'sdatastream(withthefirstdatabyteeachdirectionbeing`1').`-
S'選項能夠改變這個特性,直接顯示原始的流序號.
在第六行,rtsg傳給csam19個字節(jié)的數(shù)據(jù)(字節(jié)2到20).報文中設(shè)置了
PUSH標(biāo)志.第七行csam表明它收到了rtsg的數(shù)據(jù),字節(jié)序號是21,但不包括第21個字節(jié).顯然大多數(shù)數(shù)據(jù)在socket的緩沖區(qū)內(nèi),因為
csam的接收窗口收到的數(shù)據(jù)小于19個字節(jié).同時csam向rtsg發(fā)送了一個字節(jié)的數(shù)據(jù).第八和第九行顯示csam發(fā)送了兩個字節(jié)的緊急數(shù)據(jù)到
rtsg.
如果捕捉區(qū)設(shè)置的過小,以至于tcpdump不能捕捉到完整的TCP報頭,tcpdump會盡可能的翻譯已捕獲的部分,然后顯
示``[|tcp]'',表明無法翻譯其余部分.如果報頭包含一個偽造的選項
(onewithalengththat'seithertoosmallorbeyondtheendoftheheader),tcpdump顯示
``[badopt]''并且不再翻譯其他選項部分(因為它不可能判斷出從哪兒開始).如果報頭長度表明存在選項,但是IP數(shù)據(jù)報長度不夠,不可能真的保
存選項,tcpdump就顯示``[badhdrlength]''.
UDP報文
UDP格式就象這個rwho報文顯示的:
actinide.who>broadcast.who:udp84
就是說把一個udp數(shù)據(jù)報從主機actinide的who端口發(fā)送到broadcast,Internet廣播地址的who端口.報文包含84字節(jié)的用戶數(shù)據(jù).
某些UDP服務(wù)能夠識別出來(從源目端口號上),因而顯示出更高層的
協(xié)議
信息.特別是域名服務(wù)請求(RFC-1034/1035)和NFS的RPC調(diào)用(RFC-1050).
UDP域名服務(wù)請求(NameServerRequests)
(注意:以下的描述中假設(shè)你熟悉RFC-1035說明的域名服務(wù)
協(xié)議
.如果你不熟悉這個
協(xié)議
,下面的內(nèi)容就象是天書.)
域名服務(wù)請求的格式是
src>dst:idop?flagsqtypeqclassname(len)
h2opolo.1538>helios.domain:3+A?ucbvax.berkeley.edu.(37)

機h2opolo訪問helios上的域名服務(wù),詢問和ucbvax.berkeley.edu.關(guān)聯(lián)的地址記錄(qtype=A).查詢號是
`3'.`+'表明設(shè)置了遞歸請求標(biāo)志.查詢長度是37字節(jié),不包括UDP和IP頭.查詢操作是普通的Query操作,因此op域可以忽略.如果op設(shè)置
成其他什么東西,它應(yīng)該顯示在`3'和`+'之間.類似的,qclass是普通的C_IN類型,也被忽略了.其他類型的qclass應(yīng)該在`A'后面顯
示.
Tcpdump會檢查一些不規(guī)則情況,相應(yīng)的結(jié)果作為補充域放在方括號內(nèi):如果某個查詢包含回答,名字服務(wù)或管理機構(gòu)部分,就把
ancount,nscount,或arcount顯示成`[na]',`[nn]'或`[nau]',這里的n代表相應(yīng)的數(shù)量.如果在第二和第三字節(jié)
中,任何一個回答位(AA,RA或rcode)或任何一個`必須為零'的位被置位,就顯示`[b2&3=x]',這里的x是報頭第二和第三字節(jié)的
16進制數(shù).
UDP名字服務(wù)回答
名字服務(wù)回答的格式是
src>dst:idoprcodeflagsa/n/autypeclassdata(len)
helios.domain>h2opolo.1538:33/3/7A128.32.137.3(273)
helios.domain>h2opolo.1537:2NXDomain*0/1/0(97)

一個例子里,helios回答了h2opolo發(fā)出的標(biāo)識為3的詢問,一共是3個回答記錄,3個名字服務(wù)記錄和7個管理結(jié)構(gòu)記錄.第一個回答紀(jì)錄的類型是
A(地址),數(shù)據(jù)是internet地址128.32.137.3.回答的全長為273字節(jié),不包括UDP和IP報頭.作為A記錄的
class(C_IN)可以忽略op(詢問)和rcode(NoError).
在第二個例子里,helios對標(biāo)識為2的詢問作出域名不存在(NXDomain)的回答,沒有回答記錄,一個名字服務(wù)記錄,而且沒有管理結(jié)構(gòu).
`*'表明設(shè)置了權(quán)威回答(authoritativeanswer).由于沒有回答記錄,這里就不顯示type,class和data.
其他標(biāo)志字符可以顯示為`-'(沒有設(shè)置遞歸有效(RA))和`|'(設(shè)置消息截短(TC)).如果`問題'部分沒有有效的內(nèi)容,就顯示`[nq]'.
注意名字服務(wù)的詢問和回答一般說來比較大,68字節(jié)的snaplen可能無法捕捉到足夠的報文內(nèi)容.如果你的確在研究名字服務(wù)的情況,可以使用-s選項增大捕捉緩沖區(qū).`-s128'應(yīng)該效果不錯了.
NFS請求和響應(yīng)
SunNFS(網(wǎng)絡(luò)文件系統(tǒng))的請求和響應(yīng)顯示格式是:
src.xid>dst.nfs:lenopargs
src.nfs>dst.xid:replystatlenopresults
sushi.6709>wrl.nfs:112readlinkfh21,24/10.73165
wrl.nfs>sushi.6709:replyok40readlink"../var"
sushi.201b>wrl.nfs:
144lookupfh9,74/4096.6878"xcolors"
wrl.nfs>sushi.201b:
replyok128lookupfh9,74/4134.3150

第一行,主機sushi向wrl發(fā)送號碼為6709的交易會話(注意源主機后面的數(shù)字是交易號,不是端口).這項請求長112字節(jié),不包括UDP和IP報
頭.在文件句柄(fh)21,24/10.731657119上執(zhí)行readlink(讀取符號連接)操作.(如果運氣不錯,就象這種情況,文件句柄可以
依次翻譯成主次設(shè)備號,i節(jié)點號,和事件號(generationnumber).)Wrl回答`ok'和連接的內(nèi)容.
在第三行,sushi請求wrl在目錄文件9,74/4096.6878中查找`xcolors'.注意數(shù)據(jù)的打印格式取決于操作類型.格式應(yīng)該是可以自我說明的.
給出-v(verbose)選項可以顯示附加信息.例如:
sushi.1372a>wrl.nfs:
148readfh21,11/12.1958192bytes@24576
wrl.nfs>sushi.1372a:
replyok1472readREG100664ids417/0sz29388
(-v
同時使它顯示IP報頭的TTL,ID,和分片域,在這個例子里把它們省略了.)在第一行,sushi請求wrl從文件21,11/12.195的偏移位置
24576開始,讀取8192字節(jié).Wrl回答`ok';第二行顯示的報文是應(yīng)答的第一個分片,因此只有1472字節(jié)(其余數(shù)據(jù)在后續(xù)的分片中傳過來,但
由于這些分片里沒有NFS甚至UDP報頭,因此根據(jù)所使用的過濾器表達(dá)式,有可能不顯示).-v選項還會顯示一些文件屬性(它們作為文件數(shù)據(jù)的附帶部分傳
回來):文件類型(普通文件``REG''),存取模式(八進制數(shù)),uid和gid,以及文件大小.
如果再給一個-v選項(-vv),還能顯示更多的細(xì)節(jié).
注意NFS請求的數(shù)據(jù)量非常大,除非增加snaplen,否則很多細(xì)節(jié)無法顯示.試一試`-s192'選項.
NFS應(yīng)答報文沒有明確標(biāo)明RPC操作.因此tcpdump保留有``近來的''請求記錄,根據(jù)交易號匹配應(yīng)答報文.如果應(yīng)答報文沒有相應(yīng)的請求報文,它就無法分析.
KIPAppletalk(UDP上的DDP)
AppletalkDDP報文封裝在UDP數(shù)據(jù)報中,解包后按DDP報文轉(zhuǎn)儲(也就是說,忽略所有的UDP報頭信息).文件/etc/atalk.names用來把appletalk網(wǎng)絡(luò)和節(jié)點號翻譯成名字.這個文件的行格式是
numbername
1.254ether
16.1icsd-net
1.254.110ace

兩行給出了appletalk的網(wǎng)絡(luò)名稱.第三行給出某個主機的名字(主機和網(wǎng)絡(luò)依據(jù)第三組數(shù)字區(qū)分-網(wǎng)絡(luò)號一定是兩組數(shù)字,主機號一定是三組數(shù)字.)號
碼和名字用空白符(空格或tab)隔開./etc/atalk.names文件可以包含空行或注釋行(以`#'開始的行).
Appletalk地址按這個格式顯示
net.host.port
144.1.209.2>icsd-net.112.220
office.2>icsd-net.112.220
jssmag.149.235>icsd-net.2
(如
果不存在/etc/atalk.names,或者里面缺少有效項目,就以數(shù)字形式顯示地址.)第一個例子里,網(wǎng)絡(luò)144.1的209節(jié)點的NBP(DDP
端口2)向網(wǎng)絡(luò)icsd的112節(jié)點的220端口發(fā)送數(shù)據(jù).第二行和上面一樣,只是知道了源節(jié)點的全稱(`office').第三行是從網(wǎng)絡(luò)jssmag
的149節(jié)點的235端口向icsd-net的NBP端口廣播(注意廣播地址(255)隱含在無主機號的網(wǎng)絡(luò)名字中-所以在/etc
/atalk.names中區(qū)分節(jié)點名和網(wǎng)絡(luò)名是個好主意).
Tcpdump可以翻譯NBP(名字聯(lián)結(jié)
協(xié)議
)和ATP(Appletalk交互
協(xié)議
)的報文內(nèi)容.其他
協(xié)議
只轉(zhuǎn)儲
協(xié)議
名稱(或號碼,如果還沒給這個
協(xié)議
注冊名稱)和報文大小.
NBP報文的輸出格式就象下面的例子:
icsd-net.112.220>jssmag.2:nbp-lkup190:"=:LaserWriter@*"
jssmag.209.2>icsd-net.112.220:nbp-reply190:"RM1140:LaserWriter@*"250
techpit.2>icsd-net.112.220:nbp-reply190:"techpit:LaserWriter@*"186

一行是網(wǎng)絡(luò)icsd的112主機在網(wǎng)絡(luò)jssmag上的廣播,對名字laserwriter做名字查詢請求.名字查詢請求的nbp標(biāo)識號是190.第二行
顯示的是對這個請求的回答(注意它們有同樣的標(biāo)識號),主機jssmag.209表示在它的250端口注冊了一個laserwriter的資源,名字
是"RM1140".第三行是這個請求的其他回答,主機techpit的186端口有l(wèi)aserwriter注冊的"techpit".
ATP報文格式如下例所示:
jssmag.209.165>helios.132:atp-req122660xae030001
helios.132>jssmag.209.165:atp-resp12266:0(512)0xae040000
helios.132>jssmag.209.165:atp-resp12266:1(512)0xae040000
helios.132>jssmag.209.165:atp-resp12266:2(512)0xae040000
helios.132>jssmag.209.165:atp-resp12266:3(512)0xae040000
helios.132>jssmag.209.165:atp-resp12266:4(512)0xae040000
helios.132>jssmag.209.165:atp-resp12266:5(512)0xae040000
helios.132>jssmag.209.165:atp-resp12266:6(512)0xae040000
helios.132>jssmag.209.165:atp-resp*12266:7(512)0xae040000
jssmag.209.165>helios.132:atp-req122660xae030001
helios.132>jssmag.209.165:atp-resp12266:3(512)0xae040000
helios.132>jssmag.209.165:atp-resp12266:5(512)0xae040000
jssmag.209.165>helios.132:atp-rel122660xae030001
jssmag.209.133>helios.132:atp-req*122670xae030002
Jssmag.209向主機helios發(fā)起12266號交易,請求8個報文(`').行尾的十六進制數(shù)是請求中`userdata'域的值.
這個應(yīng)該是全了,自己用也夠了,希望能夠?qū)Υ蠹矣袔椭?br />                
               
               

本文來自ChinaUnix博客,如果查看原文請點:http://blog.chinaunix.net/u/16427/showart_1812100.html

論壇徽章:
0
2 [報告]
發(fā)表于 2010-09-15 15:48 |只看該作者
好東西啊

論壇徽章:
0
3 [報告]
發(fā)表于 2010-09-20 11:24 |只看該作者
確實很全

論壇徽章:
0
4 [報告]
發(fā)表于 2010-09-20 14:05 |只看該作者
那就頂一下,呵呵. 

論壇徽章:
0
5 [報告]
發(fā)表于 2011-03-03 09:53 |只看該作者
太詳細(xì)了,向帖子原創(chuàng)者致敬!
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP