Tcpdump 的用法

Tcpdump

用途
打印信息包頭。
語法
       tcpdump [ -AdDeflLnNOpqRStuUvxX ] [ -c count ]
               [ -C file_size ] [ -F file ]
               [ -i interface ] [ -m module ] [ -M secret ] [ -r file ]
               [ -s snaplen ] [ -T type ] [ -w file ]
               [ -W filecount ] [ -E spi@ipaddr algo:secret,...  ]
               [ -y datalinktype ] [ -Z user ]
               [ expression ]
描述
tcpdump 命令打印從與布爾 Expression 參數相匹配的網絡接口捕捉到的信息包頭。如果沒有給出Expression參數,所有網絡上的信息包都將被轉儲。否則,僅當信息包的 Expression 參數爲 True 時纔會被轉儲。僅支持以太網、光纖分佈式數據接口(FDDI)、令牌環和回送接口。訪問權由 /dev/bpfO、1、2 和 3 之上的許可權控制。
對於SunOS的nit或bpf界面:要運行tcpdump,你必須有/dev/nit或/dev/bpf*的讀訪問權限.
對於Solaris的dlpi:你必須有網絡仿真設備(networkpseudodevice),如/dev/le的讀訪問權限.
對於HP-UX的dlpi:你必須是root,或者把它安裝成root的設置uid程序.對於IRIX的snoop:你必須是root,或者把它安裝成root的設置uid程序.對於Linux:你必須是root,或者把它安裝成root的設置uid程序.
對於Ultrix和DigitalUNIX:一旦超級用戶使用pfconfig(8)開放了promiscuous操作模式(promiscuous-mode),任何用戶都可以運行tcpdump.
對於BSD:你必須有/dev/bpf*的讀訪問權限.
Expression 參數包括一個或多個原語。 原語通常由前面有一個或多個限定符的一個 標識(名稱或號碼)組成。限定符分三種:
type
指定標識名或號碼所指的設備種類。可能的種類有 host、net 和 port。示例有 hostfoo、net 128.3、port 20。如果沒有類型限定符,則採用 host。
dir
指定一個到標識或從其出發的特定轉移方向。可能的方向有 src、dst、src 或 dst 以及 src 與 dst。包含 dir 限定符的示例如下:src foo、dst net 128.3、src 或 dst port ftp-data。如果沒有 dir 限定符,則採用 src 或 dst。
proto
限制與特定協議的匹配。可能的 proto 限定符有:ether、ip、arp、rarp、tcp 和 udp。 示例: ether src foo、arp net 128.3、tcp port 21。如果沒有 proto 限定符,採用與該類型一致的所有協議。例如:src foo 表示 ip 或 arp,net bar 表示 ip 或 arp 或 rarp net bar,而 port 53 表示 tcp 或 udp port 53。
另外,有一些特殊的原語關鍵字不遵循這種模式:broadcast、multicast、less、greater 和算術表達式。所有這些關鍵字描述如下:
允許的原語
允許的原語如下所示:
dst host Host
如果信息包的 IP(網際協議)目的地字段值與 Host 變量(可以是一個地址或名稱)的值相同時爲真。
src host Host
當信息包的 IP 源字段值與 Host 變量值相同時爲真。
host Host
當信息包的 IP 源或目的地值與 Host 變量值相同時爲真。以上的任意 host 表達式可前置關鍵字 ip、arp 或 rarp,如下:
ip host Host
如果 Host 變量是帶有多個 IP 地址的名稱,則檢測每一地址是否有匹配。
dst net Net
當信息包的 IP 目的地地址值有一個網絡號 Net 時爲真。
src net Net
信息包的 IP 源地址值有一個網絡號 Net 時爲真。
net Net
當信息包的 IP 源或目的地地址值有一個網絡號 Net 時爲真。
dst port Port
當信息包爲 TCP/IP(傳輸控制協議/網際協議)或 IP/UDP(網際協議/用戶數據報協議)並且有一個目的地端口值 Port 時爲真。此端口可以是一個數字或用在 /etc/services 中的名稱。如果使用了名稱,則端口號和協議都進行檢測。如果使用了一個數字或不明確的名稱,則只檢測端口號(dst port 513 將打印 TCP/login 流量和 UDP/who 流量,而且 port domain 將打印 TCP/域和 UDP/域流量)。
src port Port
當 Port 變量的值與源端口的值相同時爲真。
port Port
當信息包的源或目的地端口值爲 Port 時爲真。以上任意 port 表達式可以前置關鍵字 tcp 或 udp,如下所示:
tcp src port port
它只與 TCP 信息包相匹配。
less Length
當信息包的長度小於或等於 Length 時爲真。它相當於:
len Length.
greater Length
當信息包的長度大於或等於 Length 變量時爲真。它相當於:
len > = Length
ip proto Protocol
當信息包爲 Protocol 協議類型的 IP 信息包時爲真。Protocol 可以是一個數字或以下名稱:icmp、udp 或 tcp。
注:標識符 tcp、udp 和 icmp 也是關鍵字,必須通過 \ (反斜線符號)(在 korn-shell 中爲 \\ (雙反斜線符號))進行轉義。
ip broadcast
當信息包爲 IP 廣播信息包時爲真。它檢測所有的全 0 和全 1 廣播約定,並查找本地子網掩碼。
ip multicast
當信息包爲 IP 多點廣播信息包時爲真。
proto Protocol
當信息包爲 Protocol 類型時爲真。Protocol 可以是一個數字或一個名稱如 ip、arp 或 rarp。
注:這些標識符也是關鍵字,並且必須通過 \ (反斜槓)轉義。
ip、arp、rarp
縮略語:
proto p
其中 p 是上述協議之一。
tcp、udp、icmp
縮略語:
ip proto p
其中 p 是上述協議之一。
表達式參數的關係運算符
簡單關係:
expr replop expr
當 relop 爲 >(大於), =(不等於), expr 是由整常數(以標準 C 語法表示),常用二目運算符 +(加號),-(減號),* (乘號),/ (除號), & (與號), | (或號),長度運算符和特殊包數據附件組成的算術表達式。要存取信息包裏的數據,請使用以下語法:
proto [ expr : size ]
Proto 是關鍵字 ip、arp、rarp、tcp 或 icmp 之一,並表示索引操作的協議層。與所指協議層相關的字節偏移量由 expr 給出。指示符 size 可選,它指示所感興趣字段裏的字節數;它可以是一個、兩個或四個,缺省設爲一個字節。由關鍵字 len 表示的長度操作符,給出了信息包的長度。
例如,表達式 ip[0] & 0xf != 5 僅捕捉非片斷數據報和片斷數據報的 0 片斷。該檢測暗指 tcp 和 udp 索引操作。例如:tcp[0] 通常意味着 TCP 報頭的第一字節,而從不表示中間片斷的第一個字節。
組合原語
更復雜的過濾表達式的建立可以通過使用 and、or 和 not 來組合原語。例如: host foo and not port ftp and not port ftp-data。爲了減少輸入,可以省略相同的限定符列表。例如: tcp dst port ftp or ftp-data or domain 與 tcp dst port ftp or tcp dst port ftp-data or tcp dst port domain 完全相同。
通過使用括入括號的原語和操作符組(括號是 Shell 專用的,且必須轉義)可以組合原語。


    * A
    * 非(`!' 或 `not')。
    * 與 (`and')。
    * 或 (`or')。


“非”具有最高優先順序。“或”和“與”具有相同的優先順序,並按由左向右的順序執行。
如果給出了一個沒有關鍵字的標識符,則採用最近使用的關鍵字。例如:
not host gil and devo

not host gil and host devo
的縮略語,不要與
not \(host gil or devo\) 相混淆。
表達式參數可作爲單參數或多參數(兩者中較方便的)傳遞給 tcpdump 命令。通常,如果表達式包含 Shell 元字符,將其作爲單個的、加引號的參數來傳遞會更容易。多參數在分析之前以空格相連。
協議輸出格式
tcpdump 命令的輸出隨協議而定。下面是大多數輸出格式的簡要描述和示例。
TCP 信息包
TCP 協議行的通用格式爲:
src  >  dst: flags data-seqno ack win urg options
在下列字段列表中,src、dst 和 flags 一直存在。其它字段取決於信息包的 TCP 協議頭的內容,並僅在適當的時候輸出。
src
指示源(主機)地址和端口。總是指定 src 字段。
dst
指示目的地址和端口。dst字段總是被指定。
flags
指定標誌 S(SYN)、F(FIN)、P(PUSH)或 R(RST)的組合或單個.(句點)來指示沒有標記。總是指定 flags 字段。
data-seqno
描述該信息包中數據佔據的序列空間部分(請參閱下面示例)。
ack
指定(通過應答)在該連接的其它方向上預期的下一數據的序列號。
win
指定該連接的其它方向上可用的接收緩衝空間的字節數。
urg
指示該信息包中有緊急數據。
options
指定在尖括號中的 TCP 選項(例如:)。
rlogin 命令從主機 gil 到主機 devo 的開始部分爲:
gil.1023 > devo.login:S 768512:768512(0) win 4096
devo.login > gil.1023:S 947648:947648(0) ack 768513 win 4096
gil.1023 > devo.login: . ack 1 win 4096
gil.1023 > devo.login: P 1:2(1) ack 1 win 4096
devo.login > gil.1023: ack 2 win 4096
gil.1023 > devo.login: P 2:21(19) ack 1 win 4096
devo.login > gil.1023: P 1:2(1) ack 21 win 4077
devo.login > gil.1023: P 2:3(1) ack 21 win 4077 urg 1
devo.login > gil.1023: P 3:4(1) ack 21 win 4077 urg 1
第一行是指主機 gil 上的 TCP 端口 1023 向主機 devo 的登錄端口發送一個信息包。這個 S 表明已經設置 SYN 標誌。信息包的序列號爲 768512,它不含數據。(標記“first:last(nbytes)”意味着“序列號 first 上限可達但不包含 last,即用戶數據爲 nbytes 字節”。)不含帶外部關聯的 ack 字段,可用接收字段 win 爲 4096 字節,並且最大段大小(mss)選項要求 1024 字節的 mss。
主機 Devo 以一個類似的包答覆,但該信息包內含有一個有外部關聯 ack 字段,用於主機 gil的 SYN。然後,主機 gil 應答主機 devo 的 SYN。. (句點)表示沒有設置標誌。該信息包不含數據,所以也就沒有數據序列號。
注:ack 字段序列號爲一個小整數(1)。
當 tcpdump 第一次遇到 TCP 對話時,它從該信息包中打印序列號。在隨後的對話信息包中,打印了當前信息包的序列號與該初始序列號的差異。這意味着第一個之後的序列號可以解釋爲對話數據流中的相對字節位置(每個方向的第一個數據字節爲 1)。-S標記覆蓋該特性,並導致輸出原序列號。
在第六行,主機 gil 發送給主機 devo 19 字節的數據(在 gil-devo 對話側的第 2 字節到第 20 字節)。在信息包內設置了 PUSH 標誌。在第七行,主機 devo 聲稱它收到了主機 gil 發送的上限可達到但不包含第 21 字節的數據。因爲 devo 的接收窗口收到較小的 19 字節,這一數據的大部分顯然位於套接字緩衝區。主機 devo 還發送其信息包內的一個字節的數據給主機 gil。在第八、九行,主機 devo 發送兩字節的 urgent PUSH 數據到主機 gil。
UDP 信息包
該 rwho 命令信息包說明 UDP 格式:
devo.who > bevo.who: udp 84
該命令序列說明主機 devo 的端口 who 發送一個 udp 數據報給主機 bevo 的端口 who。該信息包內含有 84 字節的用戶數據。
一些 UDP 服務(從源或目的地端口號)可被識別,並且打印出更高層的協議信息。尤其是域名服務請求(RFC-1034/1035)和到 NFS 的 Sun RPC 呼叫(RFC-1050)。
UDP 名稱服務器請求
名稱服務器請求格式爲:
src > dst: id op? flags qtype qclass name (len)
除了上述字段,UDP 名稱服務器請求包含以下內容:
id
指定查詢的標識號。
op
指定操作類型。缺省爲查詢操作。
qclass
name
(len)
下面是名稱服務器的請求示例:
tnegev.1538 > tnubia.domain: 3+ A? austin.ibm.com. (37)
主機 tnegev 向 tnubia 上的域服務器詢問與名稱 austin.ibm.com 關聯的地址記錄( qtype=A)。查詢 id 爲 3。+(加號)表示已經設置遞歸要求標誌。查詢長度爲 37 字節,不包含 UDP 和 IP 協議頭。查詢爲標準操作 Query,所以省略 op 字段。如果 op 爲其它值,它會在 3 和 + 之間打印出來。類似地,qclass 爲一標準類( C_IN) 也被省略。任何其它 qclass 會直接在 A 之後打印出來。
會檢查一些異常,這可能會使方括號內包含額外的字段。如果查詢包含應答、名稱服務器或權限段,則 ancount、nscount 或 arcount 打印爲 na],[nn] 或 [nau],其中 n 爲適當的計數。如果設置了任一響應位(AA,RA,或 rcode)或者設置了字節 2 和 3 的任意“必須爲零”位,[b2&3=x] 會被打印出來,其中 x 是頭字節 2 和 3 的十六進制值。
UDP 名稱服務器響應
名稱服務器響應格式爲:
src > dst: id op rcode flags a/n/au type class data (len)
除以上所述字段外,UDP 名稱服務器響應包括以下內容:
rcode
data
下面是名稱服務器響應的一個示例:
tnubia.domain > tnegev.1538: 3 3/3/7 A 129.100.3
tnubia.domain > tnegev.1537: 2 NXDomain* 0/1/0 (97)
在第一個示例中,tnubia 以 3 回答記錄、3 名稱服務器記錄和 7 權限記錄響應來自 tnegev 的查詢 3。第一個回答記錄爲 A 類(地址),其數據爲 internet 地址 129.100.100.3。響應共計 273 字節,不含 UDP 和 IP 頭。與 A 記錄的類(C_IN)的情形相似,省略了 op(Query)和響應代碼(NoError)。
在第二個示例中,tnubia 以一個不存在的域的響應代碼(NXDomain)和 0 回答記錄,1 名稱服務器記錄和 0 權限記錄響應查詢 2。* (星號)表示設置了授權回答位。因爲沒有回答,所以不打印類型、類或數據。
其它可能顯示的標誌字符有 -(遞歸可用,RA,未設置)和 |(截斷的消息,TC,已設置)。
注:名稱服務器請求和響應可能很大,80 字節的缺省 snaplen 有可能不能捕捉足夠的信息包以打印。如果需要調查大量的名稱服務器流量,用 -s 標誌來增加 snaplen。
NFS 請求
Sun NFS(網絡文件系統)請求與答覆的格式爲:
src.xid > dst.nfs: len op args
src.nfs > dst.xid: reply stat len
除以上所述字段外,NFS 請求和響應包括以下這些字段:
args
指定目錄文件 $file handle$。
reply stat
表示操作的響應狀態。
下面是 NFS 請求與響應的一個示例:
L1.e2766 > L2.nfs: 136 readdir fh 6.5197 8192 bytes @ 0
L2.nfs > L1.e2766: reply ok 384
L1.e2767 > L2.nfs: 136 lookup fh 6.5197 `RCS'
在第一行,主機 L1 發送一個 id 爲 e2766 的事務到 L2(注意,src 主機後面的數字是事務號,而非源端口)。請求爲 136 字節,不含 UDP 和 IP 頭。操作爲在文件句柄(fh)6.5197 上的 readir(讀目錄)。開始於偏移量0,8192 字節被讀取。L2 以 384 字節數據應答 ok。
在第三行,L1 要求 L2 在目錄文件 6.5197 中查詢名稱“RCS”。注意:打印的數據取決於操作類型。
注:NFS 請求非常大,除非增加 snaplen,否則以上內容不會打印出來。用標記 -s 192 觀察 NFS 流量。
ARP/RARP 信息包
地址解析協議/反向地址解析協議(ARP/RARP)輸出表示請求的類型和其參數。下面的示例顯示了從主機 devo 到主機 bevo 的 rlogin 命令的啓動:
arp who-has bevo tell devo
arp reply bevo is-at 1d:2d:3d:4d:5d:6d
第一行是 devo 發送了一個 ARP 包,詢問因特網主機 bevo 的以太網地址。在第二行,bevo 以它的以太網地址答覆。
IP 片斷
片斷因特網數據報打印如下:
(frag id:size@offset+)
(frag id:size@offset)
第一個表單表明有更多的片斷。第二個表明這是最後的片斷。IP 片斷有以下字段:
id
標識片斷。
size
指定片斷大小(按字節)包括 IP 頭。
offset
指定原數據報中的片斷偏移量(按字節)。
片斷信息按每一片斷輸出。第一片斷包括較高層的協議報頭而片斷信息在協議信息之後打印。第一個之後的片斷不包含更高層的協議頭,而片斷信息在源和目的地地址之後打印。例如一個 ping echo/reply 序列:
gil > devo: icmp: echo request (
frag 34111: 1480@0+)
gil > devo: (frag 34111!28@1480)
devo > gil: icmp: echo reply (frag
                   15314:148@0+)
一個帶“請勿拆分” IP 標誌的信息包以一個(DF)在結尾標記。
時間戳
缺省情況下,所有輸出行前置一個時間戳。時間戳爲表單內的當前時鐘時間。
hh:mm:ss.frac
並且與內核的時鐘一樣精確。時間戳反映了內核第一次發現包的時間。沒有嘗試去說明以太網接口從線上除去信息包到內核服務新信息包中斷之間的時間遲延。
標誌
-c
在收到 Count 包後退出。
-d
轉儲編譯過的信息包匹配代碼至標準輸出,然後停止。
-e
在每一轉儲行打印鏈接層頭。如果指定了-e 標記,則打印出鏈接層頭。在以太網和令牌環網上,源地址和目的地地址、協議、信息包長度被打印出來。
-f
以數字而非符號方式打印外部網際網地址。
-F
將 File 用作過濾表達式的輸入。-F 標記忽略命令行上給出的任何附加的表達式。
-i
在 Interface 上偵聽。如果未指定,tcpdump 命令在系統接口列表中查找已經在工作的最低計數和已配置的接口。該搜索排除了回送接口。
-I
(大寫字母 i)指定直接信息包捕捉方式。-l 標記不等待緩衝區填充。
-l
(小寫字母 L)緩衝標準輸出行(stdout)。該標記用於在捕捉數據時查看數據。例如:
tcpdump -l : tee dat
或 tcpdump -l > dat & tail -f dat
-n
省略地址到名稱的轉換。
-N
省略打印主機名的域名資格。例如,-N 標記打印 gil 而不是 gil.austin.ibm.com。
-O
省略運行信息包匹配代碼優化器。這僅在懷疑優化器中存在故障時有用。
-p
指定接口不在混雜方式下運行。
注:接口可能因其它原因而處於混雜方式;因此,-p 不可被用作“ether host {localhost}”或“broadcast”的縮寫。
-q
靜默輸出。-q 標記打印較少的協議信息,所以輸出行較短。
-r
從 File 中讀取包(它是用 -w 選項創建的)。當 File 爲“-”時使用標準輸入。
-s
從每一信息包捕捉 Snaplen 字節的數據而非缺省的 80。80 字節對 IP、ICMP、TCP 和 UDP 而言已足夠,但有可能截斷名稱服務器和 NFS 信息包的協議信息(參見下面)。信息包因爲有限的快照以“[|proto]”表示在輸出中而被截斷,其中 proto 是發生截斷的協議層的名稱。
注:獲取更大的快照會增加它處理信息包的時間,並因此減少包緩衝的量。這可能會造成信息包的丟失。應限制捕捉所感興趣的協議信息的 Snaplen 到最小字節數。
-S
打印絕對而非相對的 TCP 序列號。
-t
省略在每一轉儲行打印一個時間戳。
-tt
在每一轉儲行打印一個未格式化的時間戳。
-v
指定稍微詳細些的輸出。例如,打印 IP 信息包的生存時間和服務信息的類型。
-w
將原始的信息包寫入 File 而不是分析和打印它們。它們可以在以後用 -r 標誌打印出來。如果 File 爲“-”,則使用標準輸出。
-x
以十六制打印每一個包(減去其鏈接層頭)。將打印出整個包或 Snaplen 字節中的較小者。
示例
# 要打印所有到達或離開 devo 的信息包:
tcpdump host devo
# 要打印在 gil 和 devo 或 bevo 之間的流量:
tcpdump ip host gil and \(devo bevo\)
# 要打印 bevo 和除了 gil 以外的任一主機間的所有 IP 信息包:
tcpdump ip host bevo and bevo gil
# 要打印在本地主機和網絡 192.100.192 上的主機間的所有流量:
tcpdump net 192.100.192
# 要打印既非源自也非去往本地主機的流量:
tcpdump ip and not net localnet
# 要打印每一個包括一個非本地主機的 TCP 對話的開始和結束信息包(SYN和 FIN 包):
tcpdump \(tcp[13] \& 3 !=0 and not src and dst net localnet\)
# 要打印所有非 echo 請求或答覆的 ICMP 信息包(非 ping 信息包):
tcpdump \(icmp[0] !=8 and icmp[0] !=0\)
# 要直接打印包信息,輸入:
tcpdump -I
# 要指定令牌環接口來偵聽,輸入:
tcpdump -i tr0
# 要打印包信息到文件 TraceInfo,輸入:
tcpdump -w TraceInfo




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和ether具有類似的源地址和目的地址,所以可以將fddi協議包當作ether的包進行處理和 分析。其他的幾個關鍵字就是指明瞭監聽的包的協議內容。如果沒有指定任何協議,則tcpdump將會監聽所有協議的信息包。
  除了這三種類型的關鍵字之外,其他重要的關鍵字如下:gateway, broadcast,less,greater,還有三種邏輯運算,取非運算是 'not ' '! ', 與運算是'and','&&';或運算 是'or' ,'││';這些關鍵字可以組合起來構成強大的組合條件來滿足人們的需要,下面舉幾個例子來說明。
  普通情況下,直接啓動tcpdump將監視第一個網絡界面上所有流過的數據包。
# 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參數指定tcpdump監聽的網絡界面,這在計算機具有多個網絡界面時非常有用,
使用-c參數指定要監聽的數據包數量,
使用-w參數指定將監聽到的數據包寫入文件中保存
A想要截獲所有210.27.48.1 的主機收到的和發出的所有的數據包:
#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接收或發出的telnet包,使用如下命令:
#tcpdump tcp port 23 host 210.27.48.1
E 對本機的udp 123 端口進行監視 123 爲ntp的服務端口
# tcpdump udp port 123
F 系統將只對名爲hostname的主機的通信數據包進行監視。主機名可以是本地主機,也可以是網絡上的任何一臺計算機。下面的命令可以讀取主機hostname發送的所有數據:
#tcpdump -i eth0 src host hostname
G 下面的命令可以監視所有送到主機hostname的數據包:
#tcpdump -i eth0 dst host hostname
H  我們還可以監視通過指定網關的數據包:
#tcpdump -i eth0 gateway Gatewayname
I 如果你還想監視編址到指定端口的TCP或UDP數據包,那麼執行以下命令:
#tcpdump -i eth0 host hostname and port 80
tcpdump對截獲的數據並沒有進行徹底解碼,數據包內的大部分內容是使用十六進制的形式直接打印輸出的。顯然這不利於分析網絡故障,通常的解決辦法是 先使用帶-w參數的tcpdump 截獲數據並保存到文件中,然後再使用其他程序進行解碼分析。當然也應該定義過濾規則,以避免捕獲的數據包填滿整個硬盤。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章