tcpdump命令的使用方法(9)
tcpdump命令的使用方法
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ù)載封裝, 這兩者會(huì)用在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á)元不會(huì)把數(shù)據(jù)包中協(xié)議頭鏈中所有協(xié)議頭內(nèi)容全部打印出來(nt: 實(shí)際上只會(huì)打印指定協(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á)元不會(huì)把數(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頭之間可能還會(huì)包含驗(yàn)證頭, 路由頭, 或者逐跳尋徑選項(xiàng)頭.
由此所觸發(fā)的相應(yīng)BPF(Berkeley Packets Filter, 可理解為, 在數(shù)據(jù)鏈路層提供數(shù)據(jù)包過濾的一種機(jī)制)代碼比較繁瑣,
并且BPF優(yōu)化代碼也未能照顧到此部分, 從而此選項(xiàng)所觸發(fā)的包匹配可能會(huì)比較慢.
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)識(shí)符也是關(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)識(shí)符來自802.2 邏輯鏈路控制層頭,
在FDDI, Token Ring 或 802.1頭中會(huì)包含此邏輯鏈路控制層頭.
當(dāng)以這些網(wǎng)絡(luò)上的相應(yīng)的協(xié)議標(biāo)識(shí)為過濾條件時(shí), tcpdump只是檢查LLC頭部中以0x000000為組成單元標(biāo)識(shí)符(OUI, 0x000000
標(biāo)識(shí)一個(gè)內(nèi)部以太網(wǎng))的一段'SNAP格式結(jié)構(gòu)'中的protocol ID 域, 而不會(huì)管包中是否有一段OUI為0x000000的'SNAP格式
結(jié)構(gòu)'(nt: SNAP, SubNetwork Access Protocol,子網(wǎng)接入?yún)f(xié)議 ). 以下例外:
iso tcpdump 會(huì)檢查LLC頭部中的DSAP域(Destination service Access Point, 目標(biāo)服務(wù)接入點(diǎn))和
SSAP域(源服務(wù)接入點(diǎn)).(nt: iso 協(xié)議未知, 需補(bǔ)充)
stp 以及 netbeui
tcpdump 將會(huì)檢查LLC 頭部中的目標(biāo)服務(wù)接入點(diǎn)(Destination service Access Point);
atalk
tcpdump 將會(huì)檢查LLC 頭部中以0x080007 為OUI標(biāo)識(shí)的'SNAP格式結(jié)構(gòu)', 并會(huì)檢查AppleTalk etype域.
(nt: AppleTalk etype 是否位于SNAP格式結(jié)構(gòu)中, 未知, 需補(bǔ)充).
此外, 在以太網(wǎng)中, 對于ether proto protocol 選項(xiàng), tcpdump 會(huì)為 protocol 所指定的協(xié)議檢查
以太網(wǎng)類型域(the Ethernet type field), 但以下這些協(xié)議除外:
iso, stp, and netbeui
tcpdump 將會(huì)檢查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 將會(huì)檢查以太網(wǎng)物理幀中的AppleTalk etype 域 , 同時(shí)也會(huì)檢查數(shù)據(jù)包中LLC頭部中的'SNAP格式結(jié)構(gòu)'
(這兩種檢查與FDDI, TR, 802.11網(wǎng)絡(luò)中的相應(yīng)檢查一致)
aarp tcpdump 將會(huì)檢查AppleTalk ARP etype 域, 此域或存在于以太網(wǎng)物理幀中, 或存在于LLC(由802.2 所定義)的
'SNAP格式結(jié)構(gòu)'中, 當(dāng)為后者時(shí), 該'SNAP格式結(jié)構(gòu)'的OUI標(biāo)識(shí)為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)以及工作方式會(huì)根據(jù)不同物理傳輸媒介的不同而有所區(qū)別(比如, 以太網(wǎng), 令牌環(huán)網(wǎng),
光纖分布數(shù)據(jù)接口(nt: 實(shí)際可理解為一種光纖網(wǎng)絡(luò)), 無線局域網(wǎng)(802.11), 等等.)
ipx tcpdump 將會(huì)檢查物理以太幀中的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中的防火墻程序))