Linux tcpdump命令的用法詳解(內(nèi)容較多)

附錄:tcpdump的表達(dá)元
(nt: True 在以下的描述中含義為: 相應(yīng)條件表達(dá)式中只含有以下所列的一個(gè)特定表達(dá)元, 此時(shí)表達(dá)式為真, 即條件得到滿足)
dst host host
如果IPv4/v6 數(shù)據(jù)包的目的域是host, 則與此對應(yīng)的條件表達(dá)式為真.host 可以是一個(gè)ip地址, 也可以是一個(gè)主機(jī)名.
src host host
如果IPv4/v6 數(shù)據(jù)包的源域是host, 則與此對應(yīng)的條件表達(dá)式為真.
host 可以是一個(gè)ip地址, 也可以是一個(gè)主機(jī)名.
host host
如果IPv4/v6數(shù)據(jù)包的源或目的地址是 host, 則與此對應(yīng)的條件表達(dá)式為真.以上的幾個(gè)host 表達(dá)式之前可以添加以下關(guān)鍵字:ip, arp, rarp, 以及 ip6.比如:
ip host host
也可以表達(dá)為:
ether proto \ip and host host(nt: 這種表達(dá)方式在下面有說明, 其中ip之前需要有\(zhòng)來轉(zhuǎn)義,因?yàn)閕p 對tcpdump 來說已經(jīng)是一個(gè)關(guān)鍵字了.)
如果host 是一個(gè)擁有多個(gè)IP 的主機(jī), 那么任何一個(gè)地址都會用于包的匹配(nt: 即發(fā)向host 的數(shù)據(jù)包的目的地址可以是這幾個(gè)IP中的任何一個(gè), 從host 接收的數(shù)據(jù)包的源地址也可以是這幾個(gè)IP中的任何一個(gè)).
ether dst ehost
如果數(shù)據(jù)包(nt: 指tcpdump 可抓取的數(shù)據(jù)包, 包括ip 數(shù)據(jù)包, tcp數(shù)據(jù)包)的以太網(wǎng)目標(biāo)地址是ehost,則與此對應(yīng)的條件表達(dá)式為真. Ehost 可以是/etc/ethers 文件中的名字或一個(gè)數(shù)字地址(nt: 可通過 man ethers 看到對/etc/ethers 文件的描述, 樣例中用的是數(shù)字地址)
ether src ehost
如果數(shù)據(jù)包的以太網(wǎng)源地址是ehost, 則與此對應(yīng)的條件表達(dá)式為真.
ether host ehost
如果數(shù)據(jù)包的以太網(wǎng)源地址或目標(biāo)地址是ehost, 則與此對應(yīng)的條件表達(dá)式為真.
gateway host
如果數(shù)據(jù)包的網(wǎng)關(guān)地址是host, 則與此對應(yīng)的條件表達(dá)式為真. 需要注意的是, 這里的網(wǎng)關(guān)地址是指以太網(wǎng)地址, 而不是IP 地址(nt | rt: I.e., 例如, 可理解為'注意'.the Ethernet source or destination address, 以太網(wǎng)源和目標(biāo)地址, 可理解為, 指代上句中的'網(wǎng)關(guān)地址' ).host 必須是名字而不是數(shù)字, 并且必須在機(jī)器的'主機(jī)名-ip地址'以及'主機(jī)名-以太地址'兩大映射關(guān)系中 有其條目(前一映射關(guān)系可通過/etc/hosts文件, DNS 或 NIS得到, 而后一映射關(guān)系可通過/etc/ethers 文件得到. nt: /etc/ethers并不一定存在 , 可通過man ethers 看到其數(shù)據(jù)格式, 如何創(chuàng)建該文件, 未知,需補(bǔ)充).也就是說host 的含義是 ether host ehost 而不是 host host, 并且ehost必須是名字而不是數(shù)字.
目前, 該選項(xiàng)在支持IPv6地址格式的配置環(huán)境中不起作用(nt: configuration, 配置環(huán)境, 可理解為,通信雙方的網(wǎng)絡(luò)配置).
dst net net
如果數(shù)據(jù)包的目標(biāo)地址(IPv4或IPv6格式)的網(wǎng)絡(luò)號字段為 net, 則與此對應(yīng)的條件表達(dá)式為真.
net 可以是從網(wǎng)絡(luò)數(shù)據(jù)庫文件/etc/networks 中的名字, 也可以是一個(gè)數(shù)字形式的網(wǎng)絡(luò)編號.
一個(gè)數(shù)字IPv4 網(wǎng)絡(luò)編號將以點(diǎn)分四元組(比如, 192.168.1.0), 或點(diǎn)分三元組(比如, 192.168.1 ), 或點(diǎn)分二元組(比如, 172.16), 或單一單元組(比如, 10)來表達(dá);
對應(yīng)于這四種情況的網(wǎng)絡(luò)掩碼分別是:四元組:255.255.255.255(這也意味著對net 的匹配如同對主機(jī)地址(host)的匹配:地址的四個(gè)部分都用到了),三元組:255.255.255.0, 二元組: 255.255.0.0, 一元組:255.0.0.0.
對于IPv6 的地址格式, 網(wǎng)絡(luò)編號必須全部寫出來(8個(gè)部分必須全部寫出來); 相應(yīng)網(wǎng)絡(luò)掩碼為:
ff:ff:ff:ff:ff:ff:ff:ff, 所以IPv6 的網(wǎng)絡(luò)匹配是真正的'host'方式的匹配(nt | rt | rc:地址的8個(gè)部分都會用到,是否不屬于網(wǎng)絡(luò)的字節(jié)填寫0, 需接下來補(bǔ)充), 但同時(shí)需要一個(gè)網(wǎng)絡(luò)掩碼長度參數(shù)來具體指定前面多少字節(jié)為網(wǎng)絡(luò)掩碼(nt: 可通過下面的net net/len 來指定)
src net net
如果數(shù)據(jù)包的源地址(IPv4或IPv6格式)的網(wǎng)絡(luò)號字段為 net, 則與此對應(yīng)的條件表達(dá)式為真.
net net
如果數(shù)據(jù)包的源或目的地址(IPv4或IPv6格式)的網(wǎng)絡(luò)號字段為 net, 則與此對應(yīng)的條件表達(dá)式為真.
net net mask netmask
如果數(shù)據(jù)包的源或目的地址(IPv4或IPv6格式)的網(wǎng)絡(luò)掩碼與netmask 匹配, 則與此對應(yīng)的條件表達(dá)式為真.此選項(xiàng)之前還可以配合src和dst來匹配源網(wǎng)絡(luò)地址或目標(biāo)網(wǎng)絡(luò)地址(nt: 比如 src net net mask 255.255.255.0).該選項(xiàng)對于ipv6 網(wǎng)絡(luò)地址無效.
net net/len
如果數(shù)據(jù)包的源或目的地址(IPv4或IPv6格式)的網(wǎng)絡(luò)編號字段的比特?cái)?shù)與len相同, 則與此對應(yīng)的條件表達(dá)式為真.此選項(xiàng)之前還可以配合src和dst來匹配源網(wǎng)絡(luò)地址或目標(biāo)網(wǎng)絡(luò)地址(nt | rt | tt: src net net/24, 表示需要匹配源地址的網(wǎng)絡(luò)編號有24位的數(shù)據(jù)包).
dst port port
如果數(shù)據(jù)包(包括ip/tcp, ip/udp, ip6/tcp or ip6/udp協(xié)議)的目的端口為port, 則與此對應(yīng)的條件表達(dá)式為真.port 可以是一個(gè)數(shù)字也可以是一個(gè)名字(相應(yīng)名字可以在/etc/services 中找到該名字, 也可以通過man tcp 和man udp來得到相關(guān)描述信息 ). 如果使用名字, 則該名字對應(yīng)的端口號和相應(yīng)使用的協(xié)議都會被檢查. 如果只是使用一個(gè)數(shù)字端口號,則只有相應(yīng)端口號被檢查(比如, dst port 513 將會使tcpdump抓取tcp協(xié)議的login 服務(wù)和udp協(xié)議的who 服務(wù)數(shù)據(jù)包, 而port domain 將會使tcpdump 抓取tcp協(xié)議的domain 服務(wù)數(shù)據(jù)包, 以及udp 協(xié)議的domain 數(shù)據(jù)包)(nt | rt: ambiguous name is used 不可理解, 需補(bǔ)充).
src port port
如果數(shù)據(jù)包的源端口為port, 則與此對應(yīng)的條件表達(dá)式為真.
port port
如果數(shù)據(jù)包的源或目的端口為port, 則與此對應(yīng)的條件表達(dá)式為真.
dst portrange port1-port2
如果數(shù)據(jù)包(包括ip/tcp, ip/udp, ip6/tcp or ip6/udp協(xié)議)的目的端口屬于port1到port2這個(gè)端口范圍(包括port1, port2), 則與此對應(yīng)的條件表達(dá)式為真. tcpdump 對port1 和port2 解析與對port 的解析一致(nt:在dst port port 選項(xiàng)的描述中有說明).
src portrange port1-port2
如果數(shù)據(jù)包的源端口屬于port1到port2這個(gè)端口范圍(包括 port1, port2), 則與此對應(yīng)的條件表達(dá)式為真.
portrange port1-port2
如果數(shù)據(jù)包的源端口或目的端口屬于port1到port2這個(gè)端口范圍(包括 port1, port2), 則與此對應(yīng)的條件表達(dá)式為真.
以上關(guān)于port 的選項(xiàng)都可以在其前面添加關(guān)鍵字:tcp 或者udp, 比如:
tcp src port port
這將使tcpdump 只抓取源端口是port 的tcp數(shù)據(jù)包.
less length
如果數(shù)據(jù)包的長度比length 小或等于length, 則與此對應(yīng)的條件表達(dá)式為真. 這與'len <= length' 的含義一致.
greater length
如果數(shù)據(jù)包的長度比length 大或等于length, 則與此對應(yīng)的條件表達(dá)式為真. 這與'len >= length' 的含義一致.
ip proto protocol
如果數(shù)據(jù)包為ipv4數(shù)據(jù)包并且其協(xié)議類型為protocol, 則與此對應(yīng)的條件表達(dá)式為真.
Protocol 可以是一個(gè)數(shù)字也可以是名字, 比如:icmp6, igmp, igrp(nt: Interior Gateway Routing Protocol,內(nèi)部網(wǎng)關(guān)路由協(xié)議), pim(Protocol Independent Multicast, 獨(dú)立組播協(xié)議, 應(yīng)用于組播路由器),ah, esp(nt: ah, 認(rèn)證頭, esp 安全負(fù)載封裝, 這兩者會用在IP包的安全傳輸機(jī)制中 ), vrrp(Virtual Router Redundancy Protocol, 虛擬路由器冗余協(xié)議), udp, or tcp. 由于tcp , udp 以及icmp是tcpdump 的關(guān)鍵字,所以在這些協(xié)議名字之前必須要用\來進(jìn)行轉(zhuǎn)義(如果在C-shell 中需要用\\來進(jìn)行轉(zhuǎn)義). 注意此表達(dá)元不會把數(shù)據(jù)包中協(xié)議頭鏈中所有協(xié)議頭內(nèi)容全部打印出來(nt: 實(shí)際上只會打印指定協(xié)議的一些頭部信息, 比如可以用tcpdump -i eth0 'ip proto \tcp and host 192.168.3.144', 則只打印主機(jī)192.168.3.144 發(fā)出或接收的數(shù)據(jù)包中tcp 協(xié)議頭所包含的信息)
ip6 proto protocol
如果數(shù)據(jù)包為ipv6數(shù)據(jù)包并且其協(xié)議類型為protocol, 則與此對應(yīng)的條件表達(dá)式為真.
注意此表達(dá)元不會把數(shù)據(jù)包中協(xié)議頭鏈中所有協(xié)議頭內(nèi)容全部打印出來
ip6 protochain protocol
如果數(shù)據(jù)包為ipv6數(shù)據(jù)包并且其協(xié)議鏈中包含類型為protocol協(xié)議頭, 則與此對應(yīng)的條件表達(dá)式為真. 比如,
ip6 protochain 6
將匹配其協(xié)議頭鏈中擁有TCP 協(xié)議頭的IPv6數(shù)據(jù)包.此數(shù)據(jù)包的IPv6頭和TCP頭之間可能還會包含驗(yàn)證頭, 路由頭, 或者逐跳尋徑選項(xiàng)頭.
由此所觸發(fā)的相應(yīng)BPF(Berkeley Packets Filter, 可理解為, 在數(shù)據(jù)鏈路層提供數(shù)據(jù)包過濾的一種機(jī)制)代碼比較繁瑣,
并且BPF優(yōu)化代碼也未能照顧到此部分, 從而此選項(xiàng)所觸發(fā)的包匹配可能會比較慢.
ip protochain protocol
與ip6 protochain protocol 含義相同, 但這用在IPv4數(shù)據(jù)包.
ether broadcast
如果數(shù)據(jù)包是以太網(wǎng)廣播數(shù)據(jù)包, 則與此對應(yīng)的條件表達(dá)式為真. ether 關(guān)鍵字是可選的.
ip broadcast
如果數(shù)據(jù)包是IPv4廣播數(shù)據(jù)包, 則與此對應(yīng)的條件表達(dá)式為真. 這將使tcpdump 檢查廣播地址是否符合全0和全1的一些約定,并查找網(wǎng)絡(luò)接口的網(wǎng)絡(luò)掩碼(網(wǎng)絡(luò)接口為當(dāng)時(shí)在其上抓包的網(wǎng)絡(luò)接口).
如果抓包所在網(wǎng)絡(luò)接口的網(wǎng)絡(luò)掩碼不合法, 或者此接口根本就沒有設(shè)置相應(yīng)網(wǎng)絡(luò)地址和網(wǎng)絡(luò), 亦或是在linux下的'any'網(wǎng)絡(luò)接口上抓包(此'any'接口可以收到系統(tǒng)中不止一個(gè)接口的數(shù)據(jù)包(nt: 實(shí)際上, 可理解為系統(tǒng)中所有可用的接口)),網(wǎng)絡(luò)掩碼的檢查不能正常進(jìn)行.
ether multicast
如果數(shù)據(jù)包是一個(gè)以太網(wǎng)多點(diǎn)廣播數(shù)據(jù)包(nt: 多點(diǎn)廣播, 可理解為把消息同時(shí)傳遞給一組目的地址, 而不是網(wǎng)絡(luò)中所有地址,后者為可稱為廣播(broadcast)), 則與此對應(yīng)的條件表達(dá)式為真. 關(guān)鍵字ether 可以省略. 此選項(xiàng)的含義與以下條件表達(dá)式含義一致:`ether[0] & 1 != 0'(nt: 可理解為, 以太網(wǎng)數(shù)據(jù)包中第0個(gè)字節(jié)的最低位是1, 這意味這是一個(gè)多點(diǎn)廣播數(shù)據(jù)包).
ip multicast
如果數(shù)據(jù)包是ipv4多點(diǎn)廣播數(shù)據(jù)包, 則與此對應(yīng)的條件表達(dá)式為真.
ip6 multicast
如果數(shù)據(jù)包是ipv6多點(diǎn)廣播數(shù)據(jù)包, 則與此對應(yīng)的條件表達(dá)式為真.
ether proto protocol
如果數(shù)據(jù)包屬于以下以太協(xié)議類型, 則與此對應(yīng)的條件表達(dá)式為真.
協(xié)議(protocol)字段, 可以是數(shù)字或以下所列出了名字: ip, ip6, arp, rarp, atalk(AppleTalk網(wǎng)絡(luò)協(xié)議),
aarp(nt: AppleTalk Address Resolution Protocol, AppleTalk網(wǎng)絡(luò)的地址解析協(xié)議),
decnet(nt: 一個(gè)由DEC公司所提供的網(wǎng)絡(luò)協(xié)議棧), sca(nt: 未知, 需補(bǔ)充),
lat(Local Area Transport, 區(qū)域傳輸協(xié)議, 由DEC公司開發(fā)的以太網(wǎng)主機(jī)互聯(lián)協(xié)議),
mopdl, moprc, iso(nt: 未知, 需補(bǔ)充), stp(Spanning tree protocol, 生成樹協(xié)議, 可用于防止網(wǎng)絡(luò)中產(chǎn)生鏈接循環(huán)),
ipx(nt: Internetwork Packet Exchange, Novell 網(wǎng)絡(luò)中使用的網(wǎng)絡(luò)層協(xié)議), 或者
netbeui(nt: NetBIOS Extended User Interface,可理解為, 網(wǎng)絡(luò)基本輸入輸出系統(tǒng)接口擴(kuò)展).
protocol字段可以是一個(gè)數(shù)字或以下協(xié)議名之一:ip, ip6, arp, rarp, atalk, aarp, decnet, sca, lat,
mopdl, moprc, iso, stp, ipx, 或者netbeui.
必須要注意的是標(biāo)識符也是關(guān)鍵字, 從而必須通過'\'來進(jìn)行轉(zhuǎn)義.
(SNAP:子網(wǎng)接入?yún)f(xié)議 (SubNetwork Access Protocol))
在光纖分布式數(shù)據(jù)網(wǎng)絡(luò)接口(其表達(dá)元形式可以是'fddi protocol arp'), 令牌環(huán)網(wǎng)(其表達(dá)元形式可以是'tr protocol arp'),
以及IEEE 802.11 無線局域網(wǎng)(其表達(dá)元形式可以是'wlan protocol arp')中, protocol
標(biāo)識符來自802.2 邏輯鏈路控制層頭,
在FDDI, Token Ring 或 802.1頭中會包含此邏輯鏈路控制層頭.
當(dāng)以這些網(wǎng)絡(luò)上的相應(yīng)的協(xié)議標(biāo)識為過濾條件時(shí), tcpdump只是檢查LLC頭部中以0x000000為組成單元標(biāo)識符(OUI, 0x000000
標(biāo)識一個(gè)內(nèi)部以太網(wǎng))的一段'SNAP格式結(jié)構(gòu)'中的protocol ID 域, 而不會管包中是否有一段OUI為0x000000的'SNAP格式
結(jié)構(gòu)'(nt: SNAP, SubNetwork Access Protocol,子網(wǎng)接入?yún)f(xié)議 ). 以下例外:
iso tcpdump 會檢查LLC頭部中的DSAP域(Destination service Access Point, 目標(biāo)服務(wù)接入點(diǎn))和
SSAP域(源服務(wù)接入點(diǎn)).(nt: iso 協(xié)議未知, 需補(bǔ)充)
stp 以及 netbeui
tcpdump 將會檢查LLC 頭部中的目標(biāo)服務(wù)接入點(diǎn)(Destination service Access Point);
atalk
tcpdump 將會檢查LLC 頭部中以0x080007 為OUI標(biāo)識的'SNAP格式結(jié)構(gòu)', 并會檢查AppleTalk etype域.
(nt: AppleTalk etype 是否位于SNAP格式結(jié)構(gòu)中, 未知, 需補(bǔ)充).
此外, 在以太網(wǎng)中, 對于ether proto protocol 選項(xiàng), tcpdump 會為 protocol 所指定的協(xié)議檢查
以太網(wǎng)類型域(the Ethernet type field), 但以下這些協(xié)議除外:
iso, stp, and netbeui
tcpdump 將會檢查802.3 物理幀以及LLC 頭(這兩種檢查與FDDI, TR, 802.11網(wǎng)絡(luò)中的相應(yīng)檢查一致);
(nt: 802.3, 理解為IEEE 802.3, 其為一系列IEEE 標(biāo)準(zhǔn)的集合. 此集合定義了有線以太網(wǎng)絡(luò)中的物理層以及數(shù)據(jù)
鏈路層的媒體接入控制子層. stp 在上文已有描述)
atalk
tcpdump 將會檢查以太網(wǎng)物理幀中的AppleTalk etype 域 , 同時(shí)也會檢查數(shù)據(jù)包中LLC頭部中的'SNAP格式結(jié)構(gòu)'
(這兩種檢查與FDDI, TR, 802.11網(wǎng)絡(luò)中的相應(yīng)檢查一致)
aarp tcpdump 將會檢查AppleTalk ARP etype 域, 此域或存在于以太網(wǎng)物理幀中, 或存在于LLC(由802.2 所定義)的
'SNAP格式結(jié)構(gòu)'中, 當(dāng)為后者時(shí), 該'SNAP格式結(jié)構(gòu)'的OUI標(biāo)識為0x000000;
(nt: 802.2, 可理解為, IEEE802.2, 其中定義了邏輯鏈路控制層(LLC), 該層對應(yīng)于OSI 網(wǎng)絡(luò)模型中數(shù)據(jù)鏈路層的上層部分.
LLC 層為使用數(shù)據(jù)鏈路層的用戶提供了一個(gè)統(tǒng)一的接口(通常用戶是網(wǎng)絡(luò)層). LLC層以下是媒體接入控制層(nt: MAC層,
對應(yīng)于數(shù)據(jù)鏈路層的下層部分).該層的實(shí)現(xiàn)以及工作方式會根據(jù)不同物理傳輸媒介的不同而有所區(qū)別(比如, 以太網(wǎng), 令牌環(huán)網(wǎng),
光纖分布數(shù)據(jù)接口(nt: 實(shí)際可理解為一種光纖網(wǎng)絡(luò)), 無線局域網(wǎng)(802.11), 等等.)
ipx tcpdump 將會檢查物理以太幀中的IPX etype域, LLC頭中的IPX DSAP域,無LLC頭并對IPX進(jìn)行了封裝的802.3幀,
以及LLC 頭部'SNAP格式結(jié)構(gòu)'中的IPX etype 域(nt | rt: SNAP frame, 可理解為, LLC 頭中的'SNAP格式結(jié)構(gòu)'.
該含義屬初步理解階段, 需補(bǔ)充).
decnet src host
如果數(shù)據(jù)包中DECNET源地址為host, 則與此對應(yīng)的條件表達(dá)式為真.
(nt:decnet, 由Digital Equipment Corporation 開發(fā), 最早用于PDP-11 機(jī)器互聯(lián)的網(wǎng)絡(luò)協(xié)議)
decnet dst host
如果數(shù)據(jù)包中DECNET目的地址為host, 則與此對應(yīng)的條件表達(dá)式為真.
(nt: decnet 在上文已有說明)
decnet host host
如果數(shù)據(jù)包中DECNET目的地址或DECNET源地址為host, 則與此對應(yīng)的條件表達(dá)式為真.
(nt: decnet 在上文已有說明)
ifname interface
如果數(shù)據(jù)包已被標(biāo)記為從指定的網(wǎng)絡(luò)接口中接收的, 則與此對應(yīng)的條件表達(dá)式為真.
(此選項(xiàng)只適用于被OpenBSD中pf程序做過標(biāo)記的包(nt: pf, packet filter, 可理解為OpenBSD中的防火墻程序))
on interface
與 ifname interface 含義一致.
rnr num
如果數(shù)據(jù)包已被標(biāo)記為匹配PF的規(guī)則, 則與此對應(yīng)的條件表達(dá)式為真.
(此選項(xiàng)只適用于被OpenBSD中pf程序做過標(biāo)記的包(nt: pf, packet filter, 可理解為OpenBSD中的防火墻程序))
rulenum num
與 rulenum num 含義一致.
reason code
如果數(shù)據(jù)包已被標(biāo)記為包含PF的匹配結(jié)果代碼, 則與此對應(yīng)的條件表達(dá)式為真.有效的結(jié)果代碼有: match, bad-offset,
fragment, short, normalize, 以及memory.
(此選項(xiàng)只適用于被OpenBSD中pf程序做過標(biāo)記的包(nt: pf, packet filter, 可理解為OpenBSD中的防火墻程序))
rset name
如果數(shù)據(jù)包已被標(biāo)記為匹配指定的規(guī)則集, 則與此對應(yīng)的條件表達(dá)式為真.
(此選項(xiàng)只適用于被OpenBSD中pf程序做過標(biāo)記的包(nt: pf, packet filter, 可理解為OpenBSD中的防火墻程序))
ruleset name
與 rset name 含義一致.
srnr num
如果數(shù)據(jù)包已被標(biāo)記為匹配指定的規(guī)則集中的特定規(guī)則(nt: specified PF rule number, 特定規(guī)則編號, 即特定規(guī)則),
則與此對應(yīng)的條件表達(dá)式為真.(此選項(xiàng)只適用于被OpenBSD中pf程序做過標(biāo)記的包(nt: pf, packet filter, 可理解為
OpenBSD中的防火墻程序))
subrulenum num
與 srnr 含義一致.
action act
如果包被記錄時(shí)PF會執(zhí)行act指定的動作, 則與此對應(yīng)的條件表達(dá)式為真. 有效的動作有: pass, block.
(此選項(xiàng)只適用于被OpenBSD中pf程序做過標(biāo)記的包(nt: pf, packet filter, 可理解為OpenBSD中的防火墻程序))
ip, ip6, arp, rarp, atalk, aarp, decnet, iso, stp, ipx, netbeui
與以下表達(dá)元含義一致:
ether proto p
p是以上協(xié)議中的一個(gè).
lat, moprc, mopdl
與以下表達(dá)元含義一致:
ether proto p
p是以上協(xié)議中的一個(gè). 必須要注意的是tcpdump目前還不能分析這些協(xié)議.
vlan [vlan_id]
如果數(shù)據(jù)包為IEEE802.1Q VLAN 數(shù)據(jù)包, 則與此對應(yīng)的條件表達(dá)式為真.
(nt: IEEE802.1Q VLAN, 即IEEE802.1Q 虛擬網(wǎng)絡(luò)協(xié)議, 此協(xié)議用于不同網(wǎng)絡(luò)的之間的互聯(lián)).
如果[vlan_id] 被指定, 則只有數(shù)據(jù)包含有指定的虛擬網(wǎng)絡(luò)id(vlan_id), 則與此對應(yīng)的條件表達(dá)式為真.
要注意的是, 對于VLAN數(shù)據(jù)包, 在表達(dá)式中遇到的第一個(gè)vlan關(guān)鍵字會改變表達(dá)式中接下來關(guān)鍵字所對應(yīng)數(shù)據(jù)包中數(shù)據(jù)的
開始位置(即解碼偏移). 在VLAN網(wǎng)絡(luò)體系中過濾數(shù)據(jù)包時(shí), vlan [vlan_id]表達(dá)式可以被多次使用. 關(guān)鍵字vlan每出現(xiàn)一次都會增加
4字節(jié)過濾偏移(nt: 過濾偏移, 可理解為上面的解碼偏移).
例如:
vlan 100 && vlan 200
表示: 過濾封裝在VLAN100中的VLAN200網(wǎng)絡(luò)上的數(shù)據(jù)包
再例如:
vlan && vlan 300 && ip
表示: 過濾封裝在VLAN300 網(wǎng)絡(luò)中的IPv4數(shù)據(jù)包, 而VLAN300網(wǎng)絡(luò)又被更外層的VLAN封裝
mpls [label_num]
如果數(shù)據(jù)包為MPLS數(shù)據(jù)包, 則與此對應(yīng)的條件表達(dá)式為真.
(nt: MPLS, Multi-Protocol Label Switch, 多協(xié)議標(biāo)簽交換, 一種在開放的通信網(wǎng)上利用標(biāo)簽引導(dǎo)數(shù)據(jù)傳輸?shù)募夹g(shù)).
如果[label_num] 被指定, 則只有數(shù)據(jù)包含有指定的標(biāo)簽id(label_num), 則與此對應(yīng)的條件表達(dá)式為真.
要注意的是, 對于內(nèi)含MPLS信息的IP數(shù)據(jù)包(即MPLS數(shù)據(jù)包), 在表達(dá)式中遇到的第一個(gè)MPLS關(guān)鍵字會改變表達(dá)式中接下來關(guān)鍵字所對應(yīng)數(shù)據(jù)包中數(shù)據(jù)的
開始位置(即解碼偏移). 在MPLS網(wǎng)絡(luò)體系中過濾數(shù)據(jù)包時(shí), mpls [label_num]表達(dá)式可以被多次使用. 關(guān)鍵字mpls每出現(xiàn)一次都會增加
4字節(jié)過濾偏移(nt: 過濾偏移, 可理解為上面的解碼偏移).
例如:
mpls 100000 && mpls 1024
表示: 過濾外層標(biāo)簽為100000 而層標(biāo)簽為1024的數(shù)據(jù)包
再如:
mpls && mpls 1024 && host 192.9.200.1
表示: 過濾發(fā)往或來自192.9.200.1的數(shù)據(jù)包, 該數(shù)據(jù)包的內(nèi)層標(biāo)簽為1024, 且擁有一個(gè)外層標(biāo)簽.
pppoed
如果數(shù)據(jù)包為PPP-over-Ethernet的服務(wù)器探尋數(shù)據(jù)包(nt: Discovery packet,
其ethernet type 為0x8863),則與此對應(yīng)的條件表達(dá)式為真.
(nt: PPP-over-Ethernet, 點(diǎn)對點(diǎn)以太網(wǎng)承載協(xié)議, 其點(diǎn)對點(diǎn)的連接建立分為Discovery階段(地址發(fā)現(xiàn)) 和
PPPoE 會話建立階段 , discovery 數(shù)據(jù)包就是第一階段發(fā)出來的包. ethernet type
是以太幀里的一個(gè)字段,用來指明應(yīng)用于幀數(shù)據(jù)字段的協(xié)議)
pppoes
如果數(shù)據(jù)包為PPP-over-Ethernet會話數(shù)據(jù)包(nt: ethernet type 為0x8864, PPP-over-Ethernet在上文已有說明, 可搜索
關(guān)鍵字'PPP-over-Ethernet'找到其描述), 則與此對應(yīng)的條件表達(dá)式為真.
要注意的是, 對于PPP-over-Ethernet會話數(shù)據(jù)包, 在表達(dá)式中遇到的第一個(gè)pppoes關(guān)鍵字會改變表達(dá)式中接下來關(guān)鍵字所對應(yīng)數(shù)據(jù)包中數(shù)據(jù)的
開始位置(即解碼偏移).
例如:
pppoes && ip
表示: 過濾嵌入在PPPoE數(shù)據(jù)包中的ipv4數(shù)據(jù)包
tcp, udp, icmp
與以下表達(dá)元含義一致:
ip proto p or ip6 proto p
其中p 是以上協(xié)議之一(含義分別為: 如果數(shù)據(jù)包為ipv4或ipv6數(shù)據(jù)包并且其協(xié)議類型為 tcp,udp, 或icmp則與此對
應(yīng)的條件表達(dá)式為真)
iso proto protocol
如果數(shù)據(jù)包的協(xié)議類型為iso-osi協(xié)議棧中protocol協(xié)議, 則與此對應(yīng)的條件表達(dá)式為真.(nt: [初解]iso-osi 網(wǎng)絡(luò)模型中每
層的具體協(xié)議與tcp/ip相應(yīng)層采用的協(xié)議不同. iso-osi各層中的具體協(xié)議另需補(bǔ)充 )
protocol 可以是一個(gè)數(shù)字編號, 或以下名字中之一:
clnp, esis, or isis.
(nt: clnp, Connectionless Network Protocol, 這是OSI網(wǎng)絡(luò)模型中網(wǎng)絡(luò)層協(xié)議 , esis, isis 未知, 需補(bǔ)充)
clnp, esis, isis
是以下表達(dá)的縮寫
iso proto p
其中p 是以上協(xié)議之一
l1, l2, iih, lsp, snp, csnp, psnp
為IS-IS PDU 類型 的縮寫.
(nt: IS-IS PDU, Intermediate system to intermediate system Protocol Data Unit, 中間系統(tǒng)到
中間系統(tǒng)的協(xié)議數(shù)據(jù)單元. OSI(Open Systems Interconnection)網(wǎng)絡(luò)由終端系統(tǒng), 中間系統(tǒng)構(gòu)成.
終端系統(tǒng)指路由器, 而終端系統(tǒng)指用戶設(shè)備. 路由器形成的本地組稱之為'區(qū)域'(Area)和多個(gè)區(qū)域組成一個(gè)'域'(Domain).
IS-IS 提供域內(nèi)或區(qū)域內(nèi)的路由. l1, l2, iih, lsp, snp, csnp, psnp 表示PDU的類型, 具體含義另需補(bǔ)充)
vpi n
如果數(shù)據(jù)包為ATM數(shù)據(jù)包, 則與此對應(yīng)的條件表達(dá)式為真. 對于Solaris 操作系統(tǒng)上的SunATM設(shè)備 ,
如果數(shù)據(jù)包為ATM數(shù)據(jù)包, 并且其虛擬路徑標(biāo)識為n, 則與此對應(yīng)的條件表達(dá)式為真.
(nt: ATM, Asychronous Transfer Mode, 實(shí)際上可理解為由ITU-T(國際電信聯(lián)盟電信標(biāo)準(zhǔn)化部門)提出的一個(gè)與
TCP/IP中IP層功能等同的一系列協(xié)議, 具體協(xié)議層次另需補(bǔ)充)
vci n
如果數(shù)據(jù)包為ATM數(shù)據(jù)包, 則與此對應(yīng)的條件表達(dá)式為真. 對于Solaris 操作系統(tǒng)上的SunATM設(shè)備 ,
如果數(shù)據(jù)包為ATM數(shù)據(jù)包, 并且其虛擬通道標(biāo)識為n, 則與此對應(yīng)的條件表達(dá)式為真.
(nt: ATM, 在上文已有描述)
lane
如果數(shù)據(jù)包為ATM LANE 數(shù)據(jù)包, 則與此對應(yīng)的條件表達(dá)式為真. 要注意的是, 如果是模擬以太網(wǎng)的LANE數(shù)據(jù)包或者
LANE邏輯單元控制包, 表達(dá)式中第一個(gè)lane關(guān)鍵字會改變表達(dá)式中隨后條件的測試. 如果沒有
指定lane關(guān)鍵字, 條件測試將按照數(shù)據(jù)包中內(nèi)含LLC(邏輯鏈路層)的ATM包來進(jìn)行.
llc
如果數(shù)據(jù)包為ATM數(shù)據(jù)包, 則與此對應(yīng)的條件表達(dá)式為真. 對于Solaris 操作系統(tǒng)上的SunATM設(shè)備 ,
如果數(shù)據(jù)包為ATM數(shù)據(jù)包, 并且內(nèi)含LLC則與此對應(yīng)的條件表達(dá)式為真
oamf4s
如果數(shù)據(jù)包為ATM數(shù)據(jù)包, 則與此對應(yīng)的條件表達(dá)式為真. 對于Solaris 操作系統(tǒng)上的SunATM設(shè)備 , 如果數(shù)據(jù)包為ATM數(shù)據(jù)包
并且是Segment OAM F4 信元(VPI=0 并且 VCI=3), 則與此對應(yīng)的條件表達(dá)式為真.
(nt: OAM, Operation Administration and Maintenance, 操作管理和維護(hù),可理解為:ATM網(wǎng)絡(luò)中用于網(wǎng)絡(luò)
管理所產(chǎn)生的ATM信元的分類方式.
ATM網(wǎng)絡(luò)中傳輸單位為信元, 要傳輸?shù)臄?shù)據(jù)終究會被分割成固定長度(53字節(jié))的信元,
(初理解: 一條物理線路可被復(fù)用, 形成虛擬路徑(virtual path). 而一條虛擬路徑再次被復(fù)用, 形成虛擬信道(virtual channel)).
通信雙方的編址方式為:虛擬路徑編號(VPI)/虛擬信道編號(VCI)).
OAM F4 flow 信元又可分為segment 類和end-to-end 類, 其區(qū)別未知, 需補(bǔ)充.)
oamf4e
如果數(shù)據(jù)包為ATM數(shù)據(jù)包, 則與此對應(yīng)的條件表達(dá)式為真. 對于Solaris 操作系統(tǒng)上的SunATM設(shè)備 , 如果數(shù)據(jù)包為ATM數(shù)據(jù)包
并且是 end-to-end OAM F4 信元(VPI=0 并且 VCI=4), 則與此對應(yīng)的條件表達(dá)式為真.
(nt: OAM 與 end-to-end OAM F4 在上文已有描述, 可搜索'oamf4s'來定位)
oamf4
如果數(shù)據(jù)包為ATM數(shù)據(jù)包, 則與此對應(yīng)的條件表達(dá)式為真. 對于Solaris 操作系統(tǒng)上的SunATM設(shè)備 , 如果數(shù)據(jù)包為ATM數(shù)據(jù)包
并且是 end-to-end 或 segment OAM F4 信元(VPI=0 并且 VCI=3 或者 VCI=4), 則與此對應(yīng)的條件表達(dá)式為真.
(nt: OAM 與 end-to-end OAM F4 在上文已有描述, 可搜索'oamf4s'來定位)
oam
如果數(shù)據(jù)包為ATM數(shù)據(jù)包, 則與此對應(yīng)的條件表達(dá)式為真. 對于Solaris 操作系統(tǒng)上的SunATM設(shè)備 , 如果數(shù)據(jù)包為ATM數(shù)據(jù)包
并且是 end-to-end 或 segment OAM F4 信元(VPI=0 并且 VCI=3 或者 VCI=4), 則與此對應(yīng)的條件表達(dá)式為真.
(nt: 此選項(xiàng)與oamf4重復(fù), 需確認(rèn))
metac
如果數(shù)據(jù)包為ATM數(shù)據(jù)包, 則與此對應(yīng)的條件表達(dá)式為真. 對于Solaris 操作系統(tǒng)上的SunATM設(shè)備 , 如果數(shù)據(jù)包為ATM數(shù)據(jù)包
并且是來自'元信令線路'(nt: VPI=0 并且 VCI=1, '元信令線路', meta signaling circuit, 具體含義未知, 需補(bǔ)充),
則與此對應(yīng)的條件表達(dá)式為真.
bcc
如果數(shù)據(jù)包為ATM數(shù)據(jù)包, 則與此對應(yīng)的條件表達(dá)式為真. 對于Solaris 操作系統(tǒng)上的SunATM設(shè)備 , 如果數(shù)據(jù)包為ATM數(shù)據(jù)包
并且是來自'廣播信令線路'(nt: VPI=0 并且 VCI=2, '廣播信令線路', broadcast signaling circuit, 具體含義未知, 需補(bǔ)充),
則與此對應(yīng)的條件表達(dá)式為真.
sc
如果數(shù)據(jù)包為ATM數(shù)據(jù)包, 則與此對應(yīng)的條件表達(dá)式為真. 對于Solaris 操作系統(tǒng)上的SunATM設(shè)備 , 如果數(shù)據(jù)包為ATM數(shù)據(jù)包
并且是來自'信令線路'(nt: VPI=0 并且 VCI=5, '信令線路', signaling circuit, 具體含義未知, 需補(bǔ)充),
則與此對應(yīng)的條件表達(dá)式為真.
ilmic
如果數(shù)據(jù)包為ATM數(shù)據(jù)包, 則與此對應(yīng)的條件表達(dá)式為真. 對于Solaris 操作系統(tǒng)上的SunATM設(shè)備 , 如果數(shù)據(jù)包為ATM數(shù)據(jù)包
并且是來自'ILMI線路'(nt: VPI=0 并且 VCI=16, 'ILMI', Interim Local Management Interface , 可理解為
基于SNMP(簡易網(wǎng)絡(luò)管理協(xié)議)的用于網(wǎng)絡(luò)管理的接口)
則與此對應(yīng)的條件表達(dá)式為真.
connectmsg
如果數(shù)據(jù)包為ATM數(shù)據(jù)包, 則與此對應(yīng)的條件表達(dá)式為真. 對于Solaris 操作系統(tǒng)上的SunATM設(shè)備 , 如果數(shù)據(jù)包為ATM數(shù)據(jù)包
并且是來自'信令線路'并且是Q.2931協(xié)議中規(guī)定的以下幾種消息: Setup, Calling Proceeding, Connect,
Connect Ack, Release, 或者Release Done. 則與此對應(yīng)的條件表達(dá)式為真.
(nt: Q.2931 為ITU(國際電信聯(lián)盟)制定的信令協(xié)議. 其中規(guī)定了在寬帶綜合業(yè)務(wù)數(shù)字網(wǎng)絡(luò)的用戶接口層建立, 維護(hù), 取消
網(wǎng)絡(luò)連接的相關(guān)步驟.)
metaconnect
如果數(shù)據(jù)包為ATM數(shù)據(jù)包, 則與此對應(yīng)的條件表達(dá)式為真. 對于Solaris 操作系統(tǒng)上的SunATM設(shè)備 , 如果數(shù)據(jù)包為ATM數(shù)據(jù)包
并且是來自'元信令線路'并且是Q.2931協(xié)議中規(guī)定的以下幾種消息: Setup, Calling Proceeding, Connect,
Connect Ack, Release, 或者Release Done. 則與此對應(yīng)的條件表達(dá)式為真.
expr relop expr
如果relop 兩側(cè)的操作數(shù)(expr)滿足relop 指定的關(guān)系, 則與此對應(yīng)的條件表達(dá)式為真.
relop 可以是以下關(guān)系操作符之一: >, <, <=, =, !=.
expr 是一個(gè)算術(shù)表達(dá)式. 此表達(dá)式中可使用整型常量(表示方式與標(biāo)準(zhǔn)C中一致), 二進(jìn)制操作符(+, -, *, /, &, |,
<<, >>), 長度操作符, 以及對特定數(shù)據(jù)包中數(shù)據(jù)的引用操作符. 要注意的是, 所有的比較操作都默認(rèn)操作數(shù)是無符號的,
例如, 0x80000000 和 0xffffffff 都是大于0的(nt: 對于有符號的比較, 按照補(bǔ)碼規(guī)則, 0xffffffff
會小于0). 如果要引用數(shù)據(jù)包中的數(shù)據(jù), 可采用以下表達(dá)方式:
proto [expr : size]
proto 的取值可以是以下取值之一:ether, fddi, tr, wlan, ppp, slip, link, ip, arp, rarp,
tcp, udp, icmp, ip6 或者 radio. 這指明了該引用操作所對應(yīng)的協(xié)議層.(ether, fddi, wlan,
tr, ppp, slip and link 對應(yīng)于數(shù)據(jù)鏈路層, radio 對應(yīng)于802.11(wlan,無線局域網(wǎng))某些數(shù)據(jù)包中的附帶的
"radio"頭(nt: 其中描述了波特率, 數(shù)據(jù)加密等信息)).
要注意的是, tcp, udp 等上層協(xié)議目前只能應(yīng)用于網(wǎng)絡(luò)層采用為IPv4或IPv6協(xié)議的網(wǎng)絡(luò)(此限制會在tcpdump未來版本中
進(jìn)行修改). 對于指定協(xié)議的所需數(shù)據(jù), 其在包數(shù)據(jù)中的偏移字節(jié)由expr 來指定.
以上表達(dá)中size 是可選的, 用來指明我們關(guān)注那部分?jǐn)?shù)據(jù)段的長度(nt:通常這段數(shù)據(jù)
是數(shù)據(jù)包的一個(gè)域), 其長度可以是1, 2, 或4個(gè)字節(jié). 如果不給定size, 默認(rèn)是1個(gè)字節(jié). 長度操作符的關(guān)鍵字為len,
這代碼整個(gè)數(shù)據(jù)包的長度.
例如, 'ether[0] & 1 != 0' 將會使tcpdump 抓取所有多點(diǎn)廣播數(shù)據(jù)包.(nt: ether[0]字節(jié)的最低位為1表示
數(shù)據(jù)包目的地址是多點(diǎn)廣播地址). 'ip[0] & 0xf != 5' 對應(yīng)抓取所有帶有選項(xiàng)的
IPv4數(shù)據(jù)包. 'ip[6:2] & 0x1fff = 0'對應(yīng)抓取沒被破碎的IPv4數(shù)據(jù)包或者
其片段編號為0的已破碎的IPv4數(shù)據(jù)包. 這種數(shù)據(jù)檢查方式也適用于tcp和udp數(shù)據(jù)的引用,
即, tcp[0]對應(yīng)于TCP 頭中第一個(gè)字節(jié), 而不是對應(yīng)任何一個(gè)中間的字節(jié).
一些偏移以及域的取值除了可以用數(shù)字也可用名字來表達(dá). 以下為可用的一些域(協(xié)議頭中的域)的名字: icmptype (指ICMP 協(xié)議頭
中type域), icmpcode (指ICMP 協(xié)議頭code 域), 以及tcpflags(指TCP協(xié)議頭的flags 域)
以下為ICMP 協(xié)議頭中type 域的可用取值:
icmp-echoreply, icmp-unreach, icmp-sourcequench, icmp-redirect, icmp-echo, icmp-routeradvert,
icmp-routersolicit, icmp-timx-ceed, icmp-paramprob, icmp-tstamp, icmp-tstampreply,
icmp-ireq, icmp-ireqreply, icmp-maskreq, icmp-maskreply.
以下為TCP 協(xié)議頭中flags 域的可用取值:tcp-fin, tcp-syn, tcp-rst, tcp-push,
tcp-ack, tcp-urg.
相關(guān)文章
- 這篇文章主要介紹了linux tcpdump抓取HTTP包的詳細(xì)解釋,需要的朋友可以參考下2018-02-17
TCPDUMP(網(wǎng)絡(luò)數(shù)據(jù)采集分析工具) v4.7.4 linux 免費(fèi)版
TcpDump是一款網(wǎng)絡(luò)數(shù)據(jù)采集分析工具,將網(wǎng)絡(luò)中傳送的數(shù)據(jù)包的“頭”完全截獲下來提供分析,提供了源代碼,公開了接口,因此具備很強(qiáng)的可擴(kuò)展性,對于網(wǎng)絡(luò)維護(hù)和入侵者都是2017-06-08- 本文檔主要講述的是tcpdump抓包分析詳解;希望本文檔會給有需要的朋友帶來幫助;感興趣的朋友可以過來看看2017-03-24
Ubuntu系統(tǒng)中安裝使用tcpdump來統(tǒng)計(jì)HTTP請求
這篇文章主要介紹了Ubuntu系統(tǒng)中安裝使用tcpdump來統(tǒng)計(jì)HTTP請求,tcpdump一般被用來捕捉HTTP包,于是這里就想到了用其來統(tǒng)計(jì)網(wǎng)站上url的訪問數(shù),需要的朋友可以參考下2016-04-21Linux系統(tǒng)中網(wǎng)絡(luò)數(shù)據(jù)存儲工具命令TcpDump的使用教程
這篇文章主要介紹了Linux系統(tǒng)中TcpDump網(wǎng)絡(luò)數(shù)據(jù)存儲工具命令使用教程,TcpDump主要用于轉(zhuǎn)儲網(wǎng)絡(luò)上的數(shù)據(jù)流,需要的朋友可以參考下2016-04-05- 這篇文章主要介紹了Linux中tcpdump工具的應(yīng)用,tcpdump主要用于抓取網(wǎng)絡(luò)數(shù)據(jù)包,需要的朋友可以參考下2015-10-28
Linux網(wǎng)絡(luò)抓包工具tcpdump超級詳解
這篇文章主要介紹了Linux網(wǎng)絡(luò)抓包工具tcpdump超級詳解,本文用超長的篇幅講解了tcpdump的方方面,需要的朋友可以參考下2015-06-15- tcpdump是一個(gè)用于截取網(wǎng)絡(luò)分組,并輸出分組內(nèi)容的工具,簡單說就是數(shù)據(jù)包抓包工具。下面小編就為大家分享Linux的命令行下抓包工具tcpdump的使用方法,大家一起來看看吧2019-07-28
- 在傳統(tǒng)的網(wǎng)絡(luò)分析和測試技術(shù)中,嗅探器(sniffer)是最常見,也是最重要的技術(shù)之一,本文將介紹Linux下抓包工具tcpdump使用,需要的朋友可以參考下2012-11-30
- 最近遇到一些linux服務(wù)器的問題,需要使用到抓包分析。從這篇文章學(xué)了一些很實(shí)用的技巧。以此記錄2019-07-28