linux 下 tcpdump 命令詳解

用途

在網絡上轉儲流量ios

語法

tcpdump [ -a ] [ -A ] [ -B buffer_size ] [ -d ] [ -D ] [ -e ] [ -f ] [ -l ] [ -K ] [ -L ] [ -M secret ] [ -r file ]][ -n ] [ -N ] [ -O ] [ -p ][ -q ] [ -Q [ -V ] ] [ -R ] [ -S ] [ -t ] [ -T ][ -u ] [ -U ] [ -v ] [ -x ] [ -X ] [ -c count ][ -C file_size ] [ -F file ] [ -G rotate_seconds ] [ -i  interface ] [ -s snaplen ] [ -w file ][ -E addr ] [ -y datalinktype ] [-z command ] [-Z user ] [ expression ]算法

描述

tcpdump 命令將打印網絡接口上與布爾表達式相匹配的信息包的頭部分。能夠在運行此命令時附帶 -w 標誌以將信息包數據保存在文件中,以便進一步進行分析。還能夠在運行此命令時附帶 -r 標誌,以從所保存的信息包文件中讀取數據,而不是從網絡接口中讀取信息包。在全部狀況下,tcpdump 命令將只處理與表達式相匹配的信息包。shell

若是運行此命令時未帶 -c 標誌,那麼 tcpdump 將繼續捕獲信息包,直到它被 SIGINT 信號(一般爲 control-C)或者 SIGTERM 信號(一般爲 kill(1) 命令)中斷爲止。若是運行 tcpdump 時帶有-c 標誌,那麼它將捕獲信息包,直到它被 SIGINT 或 SIGTERM 信號中斷,或者直到已經處理了指定數目的信息包爲止。數據庫

在捕獲全部信息包以後, tcpdump 命令將返回下列計數:
「過濾器接收」的信息包
對全部信息包進行計數,而無論是否經過過濾表達式對其進行匹配。
「內核刪除」的信息包
因爲缺少緩衝區空間而刪除的信息包數。

容許的原語express

dst host host
若是信息包的 IPv4/v6 目標字段爲 host(它能夠爲地址或者名稱),那麼爲 True。
src host host
若是信息包的 IPv4/v6 源字段爲 host,那麼爲 True。
host host
若是信息包的 IPv4/v6 源或目標爲 host,那麼爲 True。以上任何 host 表達式可前置關鍵字 ip、arp、rarp 或 ip6,如在 ip host host 中所示,ip host host 等同於如下內容:
ether proto \ip and host host
複製若是 host 是帶有多個 IP 地址的名稱,那麼會檢查每一個地址是否相匹配。
ether dst ehost
若是以太網目標地址爲  ehost,那麼爲 True。Ehost 能夠爲 /etc/ethers 的一個名稱,也能夠爲一個數字(請參閱 ethers(3N) 以瞭解數字格式)。
ether src ehost
若是以太網源地址爲  ehost,那麼爲 True。
ether host ehost
若是以太網源地址或目標地址爲  ehost,那麼爲 True。
gateway host
若是信息包使用 host 做爲網關,那麼爲 True。例如,以太網源地址或目標地址爲 host,可是 IP 源和 IP 目標都不是 host。host 必須爲名稱,而且機器的 host-name-to-IP-address 解析機制(主機名文件、DNS 和 NIS 等)和機器的 host-name-to-Ethernet-address 解析機制(/etc/ethers 等)都必須找到它。等效的表達式爲 ether host ehost,而不是能夠結合 host/ehost 的名稱或數字使用的 host host。此時在支持 IPv6 的配置中語法不起做用。
dst net net
若是信息包的 IPv4/v6 目標地址有一個網絡號 net,那麼爲 True。
src net net
若是信息包的 IPv4/v6 源地址有一個網絡號 net,那麼爲 True。
net net
若是信息包的 IPv4/v6 源地址或目標地址有一個網絡號 net,那麼爲 True。
net net mask netmask
若是 IP 地址與帶有特定網絡掩碼的 net 相匹配,那麼爲 True。這可能受到 src 或 dst 限定。此語法對於 IPv6 網絡無效。
net net/len
若是 IPv4/v6 地址與帶有網絡掩碼長度位範圍的 net 相匹配,那麼爲 True。可能受到 src 或 dst 限定。
dst port port
若是信息包爲 ip/tcp、ip/udp、ip6/tcp 或 ip6/udp,並具備目標端口值 port,那麼爲 True。port 能夠爲  /etc/services 中使用的數字或名稱(請參閱 tcp(4P) 和 udp(4P))。若是使用了名稱,那麼檢查端口號和協議。若是使用了數字或者有歧義的名稱,那麼將只檢查端口號(例如,dst port 513 將同時顯示 tcp/login 流量和 udp/who 流量,而且端口域將同時顯示 tcp/domain 和 udp/domain 流量)。
src port port
若是信息包具備源端口值 port,那麼爲 True。
port port
若是信息包的源或目標端口爲 port,那麼爲 True。以上任何 port 表達式均可之前置關鍵字 tcp 或 udp,如 tcp src port port 中所示,tcp src port port 僅與源端口爲 port 的 tcp 信息包相匹配。
less length
若是信息包的長度小於或等於 length,那麼爲 True。這等價於 len <= length。
greater length
若是信息包的長度大於或等於 length,那麼爲 True。這等價於:len >= length。
ip proto protocol
若是信息包爲 protocol 類型協議的 IP 信息包,那麼爲 True。protocol 能夠爲一個數字或如下名稱之一:icmp、icmp六、igmp、igrp、pim、ah、esp、vrrp、udp 或 tcp。請注意,標識 tcp、udp 和 icmp 仍是關鍵字,必須經過反斜槓(\)(在 C-shell 中爲 \\)進行轉義。請注意,此原語不追蹤協議標題鏈。
ip6 proto protocol
若是信息包爲 protocol 類型協議的 IPv6 信息包,那麼爲 True。請注意,此原語不追蹤協議標題鏈。
ip6 protochain protocol
若是信息包爲 IPv6 信息包,幷包含協議標題(在其協議標題鏈中帶有類型協議),那麼爲 True。例如,ip6 protochain 6 與任何 IPv6 信息包(在協議標題鏈中帶有 TCP 協議標題)都相匹配。在 IPv6 標題和 TCP 標題之間,信息包可能包含這幾個標題,例如,認證標題、路由標題或逐跳點選項標題。此原語發射的伯克利數據包過濾器 (BPF) 代碼很複雜, tcpdump中的 BPF 優化器代碼沒法對其進行優化,因此它速度有些慢。
ip protochain protocol
等價於 ip6 protochain protocol。可是,此項用於 IPv4。
ether broadcast
若是信息包是以太網廣播信息包,那麼爲 True。ether 關鍵字爲可選。
ip broadcast
若是信息包是 IPv4 廣播信息包,那麼爲 True。它檢查全 0 和全 1 的廣播約定,並查找已在其上完成捕獲的接口上的子網掩碼。

若是已在其中完成了捕獲的接口的子網掩碼不可用,例如,由於已在其中完成了捕獲的接口沒有網絡掩碼,那麼沒法正確執行此檢查。c#

ether multicast
若是信息包是以太網多點廣播信息包,那麼爲 True。ether 關鍵字爲可選。它是  ether[0] & 1 != 0 的縮略語。
ip multicast
若是信息包是 IP 多點廣播信息包,那麼爲 True。
ip6 multicast
若是信息包是 IPv6 多點廣播信息包,那麼爲 True。
ether proto protocol
若是信息包爲 ether 類型協議,那麼爲 True。protocol 能夠爲數字或如下名稱之一:ip、ip六、arp、rarp、atalk、aarp、decnet、sca、lat、mopdl、moprc、iso、stp、ipx 或 netbeui。請注意,這些標識也是關鍵字,而且必須經過反斜槓(\)進行轉義。
[在 FDDI(例如,「fddi protocol arp」)、令牌環(例如,「tr protocol arp」)和 IEEE 802.11 無線 LAN(例如,「wlan protocol arp」)的狀況下,對於大部分這些協議,協議標識來源於 802.2 邏輯鏈路控制(LLC)標題,此標題一般位於 FDDI、令牌環或 802.11 標題的頂層。爲 FDDI、令牌環或 802.11 上的大多數協議標識進行過濾時,對於封裝的以太網,tcpdump 僅檢查 LLC 標題的協議標識字段是不是帶有組織單元標識(OUI)0x000000 的所謂 SNAP 格式;它不檢查信息包是不是帶有 OUI 0x000000 的 SNAP 格式。異常以下:
iso
tcpdump 檢查 LLC 標題的 DSAP(目標服務訪問點)和 SSAP(源服務訪問點)字段。
stp and netbeui
tcpdump 檢查 LLC 標題的 DSAP。
atalk
tcpdump 檢查帶有 OUI 0x080007 和 AppleTalk etype 的 SNAP 格式的信息包。
在以太網的狀況下, tcpdump 檢查大多數這些協議的以太網類型字段。異常以下:
iso、sap 和 netbeui
tcpdump 將檢查 802.3 框架,而後檢查 LLC 標題,這些操做與對 FDDI、令牌環和 802.11 的操做相同。
atalk
tcpdump 將檢查以太網框架中的 AppleTalk etype 和 SNAP 格式的信息包,這些操做與對 FDDI、令牌環和 802.11 的操做相同。
aarp
tcpdump 將要麼檢查以太網框架中的 AppleTalk ARP etype,要麼檢查帶有 OUI 0x000000 的 802.2 SNAP 框架中的 AppleTalk ARP etype;
ipx
tcpdump 將檢查以太網框架中的 IPX etype、LLC 標題中的 IPX DSAP、IPX 的不帶 LLC 標題的 802.3 封裝以及 SNAP 框架中的 IPX etype。
decnet src host
若是 DECNET 源地址爲 host,它多是格式 10.123 的地址,也多是 DECNET 主機名。[DECNET 主機名支持只在通過配置以運行 DECNET 的 Ultrix 系統上可用。]
decnet dst host
若是 DECNET 目標地址爲 host,那麼爲 True。
decnet host host
若是 DECNET 源地址或目標地址爲 host,那麼爲 True。
ifname interface
若是信息包記錄爲來自指定接口,那麼爲 True。
on interface
與 ifname 修飾符同義。
rnr num
若是信息包記錄爲與指定 PF 規則號碼相匹配,那麼爲 True(僅適用於 OpenBSD 的 pf(4) 記錄的信息包)。
rulenum num
與 rnr 修飾符同義。
reason code
若是用指定 PF 緣由碼來記錄信息包,那麼爲 True。已知的代碼爲:match、bad-offset、fragment、short、normalize 和 memory(僅適用於 OpenBSD 的  pf(4) 記錄的信息包)。
action act
若是在記錄信息包時 PF 採起指定操做,那麼爲 True。已知的操做爲:傳輸和阻塞(僅適用於 OpenBSD 的  pf(4) 記錄的信息包)
netbeui
ip、ip六、arp、rarp、atalk、aarp、decnet、iso、stp 和 ipx。

縮略語:緩存

ether proto p
複製其中  p 是上述協議之一。

lat、moprc 和 mopdl安全

縮略語:
ether proto p
複製其中  p 是上述協議之一。請注意,tcpdump 當前不知道如何對這些協議進行語法分析。
vlan [ vlan_id]
若是包是 IEEE 802.1Q VLAN 包,那麼爲 True。若是指定了  vlan_id,那麼僅具備所指定 vlan_id 的包才爲 True。請注意,若是假定包是 VLAN 包,在表達式中遇到的第一個 vlan 關鍵字更改了表達式其他部分的譯碼偏移量。
tcp、udp 和 icmp
縮略語:
ip proto p or ip6 proto p
複製其中  p 是上述協議之一。
iso proto protocol
若是信息包是 protocol 類型協議的 OSI 信息包,那麼爲 True。protocol 能夠爲數字或如下名稱之一:clnp、esis 或 isis。
clnp、esis 和 isis
縮略語:
  • iso proto p
其中  p 是上述協議之一。
l一、l二、iih、lsp、snp、csnp 和 psnp
IS-IS PDU 類型的縮略語。
vpi  n
若是信息包是用於 Solaris 上 SunATM 的 ATM 信息包,並帶有虛路徑標識  n,那麼爲 True。
vci  n
若是信息包是用於 Solaris 上 SunATM 的 ATM 信息包,並帶有虛擬信道標識  n,那麼爲 True。
lane
若是信息包是用於 Solaris 上 SunATM 的 ATM 信息包,而且是 ATM LANE 信息包,那麼爲 True。請注意,若是假定信息包是 LANE 模擬以太網信息包,或者是 LANE LE Control 信息包,那麼在表達式中遇到的第一個 lane 關鍵字更改了在表達式其他部分中完成的測試。若是未指定 lane,那麼在假定信息包是封裝 LLC 的信息包的狀況下完成測試。
llc
若是信息包是用於 Solaris 上 SunATM 的 ATM 信息包,而且是封裝 LLC 的信息包,那麼爲 True。
oamf4s
若是信息包是用於 Solaris 上 SunATM 的 ATM 信息包,而且是段 OAM F4 流單元(VPI=0 和 VCI=3),那麼爲 True。
oamf4e
若是信息包是用於 Solaris 上 SunATM 的 ATM 信息包,而且是端到端 OAM F4 流單元(VPI=0 和 VCI=4),那麼爲 True。
oamf4
若是信息包是用於 Solaris 上 SunATM 的 ATM 信息包,而且是段或端到端 OAM F4 流單元(VPI=0 和(VCI=3 | VCI=4)),那麼爲 True。
oam
若是信息包是用於 Solaris 上 SunATM 的 ATM 信息包,而且是段或端到端 OAM F4 流單元(VPI=0 和(VCI=3 | VCI=4)),那麼爲 True。
metac
若是信息包是用於 Solaris 上 SunATM 的 ATM 信息包,而且位於元信令環路(VPI=0 和 VCI=1)上,那麼爲 True。
bcc
若是信息包是用於 Solaris 上 SunATM 的 ATM 信息包,而且位於廣播信令環路(VPI=0 和 VCI=2)上,那麼爲 True。
sc
若是信息包是用於 Solaris 上 SunATM 的 ATM 信息包,而且位於信令環路(VPI=0 和 VCI=5)上,那麼爲 True。
ilmic
若是信息包是用於 Solaris 上 SunATM 的 ATM 信息包,而且位於 ILMI 環路(VPI=0 和 VCI=16)上,那麼爲 True。
connectmsg
若是信息包是用於 Solaris 上 SunATM 的 ATM 信息包,並位於信令環路,並且是 Q.2931 設置、呼叫進程、鏈接、鏈接 ACK、發佈或發佈完成消息,那麼爲 True。
metaconnect
若是信息包是用於 Solaris 上 SunATM 的 ATM 信息包,並位於元信令環路,並且是 Q.2931 設置、呼叫進程、鏈接、發佈或發佈完成消息,那麼爲 True。
expr relop expr
若是關係成立,其中 relop 是 >、<、>=、<=、= 和 != 中的一個,expr 是算術表達式,此算術表達式由整數常量(用標準 C 語法表示)、常規二目運算符 [+、-、*、/、& 和 |]、長度運算符和特殊信息包數據存取器組成,那麼爲 true。要訪問信息包裏的數據,請使用如下語法:
proto [ expr : size ]
複製Proto 是 ether、fddi、tr、wlan、ppp、slip、link、ip、arp、rarp、tcp、udp、icmp 或 ip6 其中之一,而且代表索引操做的協議層。(ether、fddi、wlan、tr、ppp、slip 和 link 都稱爲連接層。)請注意,tcp、udp 和其餘上層協議類型僅適用於 IPv4,而不是 IPv6(之後將對其進行修訂)。與代表的協議層相關的字節偏移量由 expr 給定。size 爲可選,它代表興趣字段裏的字節數;它能夠爲 一、2 或 4,缺省值爲 1。由關鍵字 len 表示的長度運算符給定信息包的長度。

例如,ether[0] & 1 != 0 捕獲全部多點廣播流量。表達式 ip[0] & 0xf !=5 捕獲帶有選項的全部 IP 信息包。表達式 ip[6:2] & 0x1fff = 0 僅捕獲未分段的信息包和分段信息包的片斷零。此檢查隱式適用於 tcp 和 udp 索引操做。例如,tcp[0] 始終表示 TCP 標題的第一個字節,而從不表示插入片斷的第一個字節。服務器

某些偏移量和字段值能夠表達爲名稱而不是數字值。如下協議標題字段偏移量可用:icmptype(ICMP 類型字段)、icmpcode(ICMP 代碼字段)和 tcpflags(TCP 標誌字段)。網絡

如下 ICMP 類型字段值可用:icmp-echoreply、icmp-unreach、icmp-sourcequench、icmp-redirect、icmp-echo、icmp-routeradvert、 icmp-routersolicit、icmp-timxceed、icmp-paramprob、icmp-tstamp、icmp-tstampreply、icmp-ireq、icmp-ireqreply、icmp-maskreq 和 icmp-maskreply。

如下 TCP 標誌字段值可用:tcp-fin、tcp-syn、tcp-rst、tcp-push、tcp-ack 和 tcp-urg。

組合原語

用括號括起的原語組和運算符組(括號特定於 Shell 而且必須轉義)。
非(「!」或「not」)。

          並置(「&&」或「and」)。
          或(「||」或「or」)。
複製「非」具備最高優先順序。「或」和「並置」具備相同的優先順序,並按由左向右的順序相連。請注意,如今須要「並置」的「顯式」和「標記」,而不須要「並列」。

若是給出了不帶關鍵字的標識,那麼假定使用最新的關鍵字。例如,not host vs and ace 是 not host vs and host ace 的縮略語,不該與 not ( host vs or ace ) 混淆。

表達式自變量可做爲單自變量或多自變量(選擇二者中較方便的一種)傳遞給 tcpdump。一般,若是表達式包含 Shell 元字符,將其做爲單個的、加引號的自變量來傳遞會更容易。多自變量在語法分析以前以空格並置。

標誌

項目 描述
-a 嘗試將網絡地址和廣播地址轉換爲名稱。
-A 以 ASCII 顯示每一個信息包(去掉它的連接級別的頭)。方便捕獲 Web 頁面。
-B buffer_size 指示緩衝區大小(以千字節計)。將接受較小的值。若是緩衝區大小小於 BPF 設置的最低值,那麼將忽略實際緩衝區大小並使用伯克利數據包過濾器 (BPF) 設置的值。若是未指定 -B 選項,那麼緩衝區大小缺省爲 32,768。
-c 在接收 Count 信息包後退出。
-C file_size 在將原始信息包寫入 savefile 以前,檢查文件當前是否大於 file_size,若是確實如此,那麼關閉當前的 savefile 並打開新的 savefile。第一個savefile 以後的 savefile 擁有使用 -w 標誌指定的名稱,名稱後帶有從 2 開始並連續遞增的數字。file_size 的單元以百萬字節爲單位(1,000,000 字節,而不是 1,048,576 字節)。
-d 將編譯過的信息包匹配代碼轉儲至標準輸出,而後中止。
-D 顯示系統上可用、而且 tcpdump 能夠在其中捕獲信息包的網絡接口的列表。顯示每一個網絡接口的數字和接口名稱(可能帶有此接口的文本描述)。接口名稱或數字能夠提供給 -i 標誌以指定在其上進行捕獲的接口。
-dd 將信息包匹配代碼做爲 C 程序片斷進行轉儲。
-ddd 將信息包匹配代碼做爲十進制數進行轉儲(添加在某個計數前面)。
-e 在每一轉儲行上顯示連接級別標題。
-E addr 使用 spi@ipaddr algo:secret 來解密 IPsec ESP 信息包,該信息包的地址將寫入 addr,且該信息包將包含安全參數索引值 spi。能夠用逗號或換行分隔來重複此組合。
注:如今支持設置 IPv4 ESP 信息包的 secret。

算法能夠爲 des-cbc3des-cbcblowfish-cbcrc3-cbccast128-cbc 或沒有算法。缺省值爲 des-cbc。若是安裝了 libcrypto而且它在 LIBPATH 中,將只顯示解密信息包的功能。

secret 爲 ESP 密鑰的 ASCII 文本。若是在前面添加 0x,那麼將讀取十六進制值。

此選項採用 RFC2406 ESP,而不是 RFC1827 ESP。此選項僅用於調試用途,使用此選項時不鼓勵帶有真密鑰。經過 ps(1) 和其餘手段在命令行上顯示 IPsec 密鑰,您可使他人看見密鑰。

除了上述語法之外,tcpdump 命令可使用語法文件名來讀取所指定的文件。由於在接收到第一個 ESP 信息包時打開文件,所以還應該放棄可能已提供給 tcpdump 的任何特殊權限。

-f 以數字而非符號方式顯示外來 IPv4 地址。

經過使用在其上執行捕獲的接口的 IPv4 地址和網絡掩碼來完成外來 IPv4 地址的測試。若是該地址或網絡掩碼不可用,那麼此選項不會正確發揮做用。

-F file 使用 file 做爲過濾表達式的輸入。忽略了命令行上給出的其餘表達式。
-G rotate_seconds 按每 rotate_seconds 秒一次的頻率循環使用經過 -w 選項指定的轉儲文件。若是與 -C 選項配合使用,那麼文件名格式將爲 file<count>,只要最早達到 size 變量中指定的值。不然,tcpdump 命令會在 rotate_seconds 變量中指定的時長值過去後循環使用該文件。
-i interface  interface 上偵聽。若是未指定,tcpdump 將搜索系統 interface 列表以查找最低編號和配置的 interface(回送除外)。經過選擇最先的匹配來中斷間距。

經過 -D 標誌顯示的 interface 數字能夠用做 interface 自變量。

-K 在執行硬件 TCP 校驗和計算的接口上跳過 TCP 校驗和驗證。若是未使用該標誌,那麼全部出站 TCP 校驗和將標記爲不正確。
-l 緩存標準輸出行。若是您要在捕獲數據時查看數據,它頗有用。例如:
tcpdump -l | tee dat
    或 tcpdump -l   >   dat & tail -f dat
複製
-L 列出接口和出口的已知的數據鏈路類型。
-m module  module 文件裝入 SMI MIB 模塊定義。可屢次使用此選項來將多個 MIB 模塊裝入 tcpdump。
-M 經過使用 TCP-MD5 選項(請求註釋 (RFC) 2385),使用 secret 做爲用於驗證 TCP 分段中 digest 的共享 secret。
-n 阻止將主機地址和端口號轉換爲名稱。
-N 省略顯示主機名的域名限定。例如,tcpdump 將顯示 nic 而不是 nic.ddn.mil
-O 使 tcpdump 不運行信息包匹配代碼優化器。這僅在懷疑優化器中存在錯誤時有用。
-p 中止使接口處於混合方式。請注意,因爲其餘某種緣由,接口可能處於混合方式;所以,-p 沒法用做 ether host {local-hw-addr} 或 ether broadcast 的縮略語。
-q 快速輸出。由於顯示更少協議信息,因此輸出行更短。
-Q 對已記錄的數據啓用已過濾的系統跟蹤。必須運行 AIX® 跟蹤守護程序才能記錄與網絡通訊子系統相關的選定系統事件。
-r file  file(用 -w 選項建立)中讀取信息包。若是 file 是「-」,那麼使用標準輸入。
-R 假定 ESP/AH 信息包基於原有的規範。

(RFC1825 至 RFC1829)。若是指定了此標誌,那麼 tcpdump 不會顯示阻止重放字段。由於在 ESP/AH 規範中沒有協議版本字段,因此tcpdump 沒法演繹 ESP/AH 協議版本。

-S 顯示絕對而非相對的 TCP 序號。
-s snaplen 從每一信息包捕獲 snaplen 數據字節,而不是缺省值 68。68 字節對 IP、ICMP、TCP 和 UDP 而言已足夠,但有可能截斷名稱服務器和 NFS 信息包的協議信息(請參閱如下內容)。由於有限快照而被截斷的信息包在輸出中顯示時帶有 [|proto],其中 proto 是發生截斷的協議級別的名稱。請注意,採用更大的快照將增長它處理信息包的時間,並有效減小信息包緩衝的數量。這可能會致使丟失信息包。應將 snaplen 限制爲將捕獲您感興趣的協議信息的最小數目。將 snaplen 設置爲 0 則意味着使用必需長度來捕獲全部信息包。
-T 強制使用指定類型解釋 expression 選擇的信息包。當前已知的類型有 cnfp(Cisco 網絡流量協議)、rpc(遠程過程調用)、rtp(實時應用協議)、rtcp(實時應用控制協議)、snmp(簡單網絡管理協議)、tftp(次要文件傳輸協議)、vat(可視音頻工具)、和 wb(分佈式白板)。
-t 在每一轉儲行上省略時間戳記顯示。
-tt 在每一轉儲行上顯示未格式化的時間戳記。
-ttt 在每一轉儲行上顯示當前行和先前行之間的變化量(以微秒爲單位)。
-tttt 在每一轉儲行上顯示前面帶有日期的缺省格式的時間戳記。
-ttttt 在每一轉儲行上顯示當前行和第一行之間的變化量(以微秒爲單位)。
-u 顯示未譯碼的 NFS 句柄。
-U 經過 -w 選項(例如,「packet-buffered」)保存輸出。保存了每一個信息包以後,就會將它寫入輸出文件,而不是僅當輸出緩衝區填滿時纔將它寫入。
-v 指定稍微詳細些的輸出。例如,顯示 IP 信息包中的生存時間、標識、總長度和選項。還啓用其餘信息包完整性檢查,例如,驗證 IP 和 ICMP 標題校驗和。
-vv 甚至比 -v 更詳細的輸出。例如,從 NFS 顯示其餘字段,並對應答包進行徹底譯碼。
-vvv 甚至比 -vv 更詳細的輸出。例如,完整顯示 Telnet SB 至 SE 選項。帶有 -X 的 Telnet 選項也以十六進制顯示。
-V 設置套接字的套接字調試標誌(SO_DEBUG 套接字選項)和跟蹤級別。此標誌必須與 -Q 標誌一塊兒使用。
-w file 將原始的信息包寫入 file,而不對其進行語法分析,也不將其顯示出來。之後能夠用 -r 標誌顯示它們。若是 File 爲「-」,那麼使用標準輸出。
-x 以十六進制顯示每一個信息包(減去其連接級別標題)。將顯示整個信息包或者 snaplen 字節這二者當中的較小者。請注意,這是整個連接層信息包,所以對於填充的連接層(例如,以太網),當更高層的信息包短於必需的填充時,還將顯示填充字節。
-xx 以十六進制顯示每一個信息包,包括其連接級別標題。
-X 以十六進制和 ASCII 顯示每一個信息包(減去其連接級別標題)。用於分析新協議時它很是方便。
-y datalinktype 設置在將信息包捕獲到 datalinktype 時要使用的數據鏈路類型。
-z command  -C 或 -G 選項結合使用時,會致使 tcpdump 命令在 savefile 上運行指定的命令。例如,指定 -z gzip 或 -z bzip2 會致使使用 gzip 或bzip2 命令壓縮每一個 savefile
注:tcpdump 命令使用最低優先級將 -z 命令與捕獲進程並行運行,以便不干擾捕獲進程。
-Z user 由所指定的具備系統特權的用戶運行 tcpdump 命令。

參數

expressions
選擇要轉儲的信息包。若是提供了表達式,那麼只會對錶達式爲  true 的信息包進行轉儲;不然,將轉儲網絡中的全部信息包。
表達式由一個或多個原語構成。原語一般由前面帶有一個或多個限定符的標識(名稱或數字)構成。存在三種不一樣的限定符:
  • type 限定符顯示標識名稱或數字所指的原語類型。可能的類型爲 host、net 和 port。例如,「host foo」、「net 128.3」和「port 20」。若是沒有類型限定符,那麼將採用 host。
  • dir 限定符指定到標識和/或來自標識的特定傳輸方向。可能的方向爲 src、dst、src 或 dst 和 src 以及 dst。若是沒有 dir 限定符,那麼將採用 src 或 dst。對於某些連接層(例如,SLIP)和某些其餘設備類型,入站和出站限定符能夠用來指定但願的方向。
  • proto 限定符限制與特定協議相匹配。可能的協議爲 fddi、tr、wlan、ip、ip六、arp、rarp、decnet、tcp 和 udp。若是沒有 proto 限定符,那麼將採用與該類型一致的全部協議。

fddi 是 ether 的別名。解析器將其理解爲:「在指定網絡接口上使用的數據鏈路級」。FDDI 頭部分包含相似以太網的源地址和目標地址,並常常包含相似以太網的信息包類型,所以能夠在這些 FDDI 字段上進行過濾,此操做與對相似以太網字段的操做相同。FDDI 頭部分還包含其餘字段,可是沒法在過濾表達式中對其進行命名。

 fddi 相似,tr 和 wlan 是 ether 的別名。上一段有關 FDDI 頭部分的論述還適用於令牌環和 802.11 無線 LAN 頭部分。對於 802.11 頭部分,目標地址爲 DA 字段,源地址爲 SA 字段;不測試 BSSID、RA 和 TA 字段。

除以上所述以外,還有一些特殊的「原語」關鍵字不遵循這種模式:網關、廣播、小於、大於和算術表達式。全部這些關鍵字描述以下。

經過使用單詞 andor 和 not 組合原語來構建更復雜的過濾表達式。

環境變量

必須設置 LIBPATH 環境變量,或者  libcrypto 庫應該位於 -E 標誌的 /usr/lib 以起做用。例如:
ksh$ LIBPATH=/opt/freeware/lib tcpdump -E"algo:secret"
複製

退出狀態

項目 描述
0 成功。
非零 錯誤。

安全性

從網絡接口讀取信息包須要對 /dev/bpf* 的讀訪問權,一般僅限於 root 用戶。從文件讀取信息包除了文件讀許可權以外,不須要任何特殊權限。

RBAC 用戶和可信 AIX 用戶注意:此命令能夠執行特權操做。只有特權用戶才能運行特權操做。有關權限與特權的更多信息,請參閱安全性中的『特權命令數據庫』。要獲取與此命令相關聯的特權和權限的列表,請參閱 lssecattr 命令或 getcmdattr 子命令。

示例

  1. 要顯示從日落起到達或出發的全部包,請輸入:
    tcpdump host sundown
    複製
  2. 要顯示 helios 與 hot 或 ace 之間的流量,請輸入:
    tcpdump host helios and \( hot or ace \)
    複製
  3. 要顯示 ace 與除了 helios 以外任何主機之間的全部 IP 包,請輸入:
    tcpdump ip host ace and not helios
    複製
  4. 要顯示本地主機與伯克利的主機之間的全部流量,請輸入:
    tcpdump net ucb-ether
    複製
  5. 要顯示經過因特網網關 snup 的全部 ftp 流量,請輸入:
    tcpdump 'gateway snup and (port ftp or ftp-data)'
    複製
    注:將表達式用引號引發來,以防止 shell 誤解括號。
  6. 要顯示既不是來自本地主機也不是導向本地主機的流量(若是您的網關指向其餘網絡,該網絡決不能連到您的本地網絡上),請輸入:
    tcpdump ip and not net localnet
    複製
  7. 要顯示涉及到非本地主機的每一個 TCP 對話的開始和結束包(SYN 和 FIN 包),請輸入:
    tcpdump 'tcp[tcpflags] & (tcp-syn|tcp-fin) != 0 and not src and d dst net localnet'
    複製
  8. 要顯示經過網關 snup 發送的長度超過 576 字節的 IP 包,請輸入:
    tcpdump 'gateway snup and ip[2:2] > 576'
    複製
  9. 要顯示不是經過以太網廣播或多點廣播信息包發送的 IP 廣播或多點廣播包,請輸入:
    tcpdump 'ether[0] & 1 = 0 and ip[16] >= 224'
    複製
  10. 要顯示不是回傳請求/答覆的全部 ICMP 包(好比,不是 ping 包),請輸入:
    tcpdump 'icmp[icmptype] != icmp-echo and icmp[icmptype] != icmp-e choreply'
    複製

標準錯誤

全部的錯誤和警告都發送到 stderr。

限制

跟蹤信息包時,若是跨越了夏令時變動,那麼提供的時間戳記會有誤差(將忽略時間變動)。

在除了令牌環頭部分中的那些字段以外的字段中的過濾表達式會錯誤地處理源路由令牌環信息包。

在 802.11 頭部分中的那些字段以外的字段中的過濾表達式會錯誤地處理帶有 To DS 和 From DS 集合的 802.11 數據包。

ip6 proto 應該追蹤標題鏈,但在此時它未進行此操做。爲此工做狀況提供了 ip6 protochain。

傳輸層頭部分的算術表達式相似於 tcp[0],對 IPv6 信息包不起做用。它僅查看 IPv4 信息包。

包跟蹤在 WPAR 環境中不起做用,由於底層 BPF 驅動程序沒法識別 WPAR。

文件

項目 描述
/usr/sbin/tcpdump tcpdump 命令的位置。
/usr/lib/libpcap.a  
/dev/bpf*  
/opt/freeware/lib/libcrypto.a(libcrypto.so) 可選
相關文章
相關標籤/搜索