默许tcpdump只会监视第一个互联网接口,监视钦点网络接口的数据包

简介

用简短的话来定义tcpdump,就是:dump the traffic on a
network,依照使用者的概念对互连网上的多寡包举行收缴的包分析工具。 tcpdump能够将互联网中传送的数据包的“头”完全截获下来提供分析。它协理针对互连网层、协议、主机、互连网或端口的过滤,并提供and、or、not等逻辑语句来支援你去掉无用的音讯。

 

一、简介

用简短的话来定义tcpdump,正是:dump the traffic on a
network,依据使用者的概念对互联网上的多少包进行收缴的包分析工具。
tcpdump能够将互连网中传送的数据包的“头”完全截获下来提供分析。它帮衬针对网络层、协议、主机、互联网或端口的过滤,并提供and、or、not等逻辑语句来扶持你去掉无用的音讯。

实用命令实例

私下认可运转

tcpdump

1般景况下,直接开发银行tcpdump将监视第八个网络接口上具备流过的数据包。

 

监视钦命网络接口的数据包

tcpdump -i eth1

如若不钦赐网卡,暗中同意tcpdump只会监视第多少个网络接口,壹般是eth0,上边包车型客车事例都并未有点名网络接口。 

 

蹲点钦赐主机的数据包

打字与印刷全体进入或离开sundown的数目包.

tcpdump host sundown

也足以钦定ip,例如截获全部2拾.27.4八.一 的主机收到的和产生的有着的数据包

tcpdump host 210.27.48.1 

打印helios 与 hot 或许与 ace 之间通讯的数据包

tcpdump host helios and \( hot or ace \)

缴枪主机二拾.27.48.一 和主机210.二7.48.贰 或贰10.二柒.4八.三的通信

tcpdump host 210.27.48.1 and \ (210.27.48.2 or 210.27.48.3 \) 

打字与印刷ace与别的别的主机之间通讯的IP 数据包, 但不包括与helios之间的数量包.

tcpdump ip host ace and not helios

只要想要获取主机二十.二柒.4八.壹除了和主机二10.贰7.4八.二之外全部主机通讯的ip包,使用命令:

tcpdump ip host 210.27.48.1 and ! 210.27.48.2

收获主机hostname发送的全数数据

tcpdump -i eth0 src host hostname

监视全部送到主机hostname的数据包

tcpdump -i eth0 dst host hostname

 

监视钦赐主机和端口的数据包

假诺想要获取主机二10.27.48.一收到或发生的telnet包,使用如下命令

tcpdump tcp port 23 and host 210.27.48.1

对本机的udp 1二三 端口进行监视 123 为ntp的劳动端口

tcpdump udp port 123 

 

监视钦点网络的数据包

打字与印刷当地主机与Berkeley互连网上的主机之间的具备通讯数据包(nt: ucb-ether,
此处可精晓为’Beck雷网络’的网络地址,此表明式最原始的含义可发挥为:
打字与印刷网络地址为ucb-ether的有着数据包)

tcpdump net ucb-ether

打印全体通过网关snup的ftp数据包(注意, 表达式被单引号括起来了,
这能够幸免shell对内部的括号举行不当解析)

tcpdump 'gateway snup and (port ftp or ftp-data)'

打字与印刷全体源地址或目的地方是地点主机的IP数据包

(假设本地互连网通过网关连到了另一互联网, 则另一互连网并不能够当开销地互联网.(nt:
此句翻译波折,需填补).localnet 实际应用时要确实替换花费地网络的名字)

tcpdump ip and not net localnet

 

蹲点钦定协议的数据包

打印TCP会话中的的早先和终止数据包,
并且数据包的源或目标不是本地互连网上的主机.(nt: localnet,
实际利用时要确实替换开支地网络的名字))

tcpdump 'tcp[tcpflags] & (tcp-syn|tcp-fin) != 0 and not src and dst net localnet'

打字与印刷全部源或指标端口是80, 网络层协议为IPv肆,
并且含有数据,而不是SYN,FIN以及ACK-only等不含数据的数量包.(ipv6的本子的表明式可做演习)

tcpdump 'tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)'

(nt: 可精晓为, ip[2:2]意味着整个ip数据包的长度,
(ip[0]&0xf)<<贰)表示ip数据托特包头的长度(ip[0]&0xf代表包中的IHL域,
而此域的单位为3二bit, 要换算

成字节数供给乘以4, 即左移二. (tcp[12]&0xf0)>>四 表示tcp头的长短,
此域的单位也是3二bit, 换算成比特数为 ((tcp[12]&0xf0) >>
4) << 2, 
即 ((tcp[12]&0xf0)>>2). ((ip[2:2] – ((ip[0]&0xf)<<2))

  • ((tcp[12]&0xf0)>>2)) != 0 表示:
    整个ip数据包的尺寸减去ip头的尺寸,再减去
    tcp头的尺寸不为0, 那就象征,
    ip数据包中确实是有数据.对于ipv陆版本只需思量ipv九只中的’Payload Length’ 与
    ‘tcp头的尺寸’的差值, 并且当中表明格局’ip[]’需换成’ip6[]’.)

打字与印刷长度超过57陆字节, 并且网关地址是snup的IP数据包

tcpdump 'gateway snup and ip[2:2] > 576'

打字与印刷全部IP层广播或多播的数据包, 但不是大体以太网层的播报或多播数据报

tcpdump 'ether[0] & 1 = 0 and ip[16] >= 224'

打字与印刷除’echo request’可能’echo reply’类型以外的ICMP数据包(
比如,供给打字与印刷全数非ping 程序爆发的多寡包时可用到此表明式 .
(nt: ‘echo reuqest’ 与 ‘echo reply’
那二种档次的ICMP数据包常常由ping程序发生))

tcpdump 'icmp[icmptype] != icmp-echo and icmp[icmptype] != icmp-echoreply'

 

tcpdump 与wireshark

Wireshark(以前是ethereal)是Windows下万分不难易用的抓包工具。但在Linux下很难找到贰个好用的图形化抓包工具。
幸亏有Tcpdump。我们得以用Tcpdump + Wireshark 的周全结合达成:在 Linux
里抓包,然后在Windows 里分析包。

tcpdump tcp -i eth1 -t -s 0 -c 100 and dst port ! 22 and src net 192.168.1.0/24 -w ./target.cap

(一)tcp: ip icmp arp rarp 和
tcp、udp、icmp那个选用等都要放到首个参数的岗位,用来过滤数据报的品类
(2)-i eth壹 : 只抓经过接口eth一的包
(三)-t : 不显得时间戳
(四)-s 0 : 抓取数据包时暗中同意抓取长度为68字节。加上-S 0
后方可抓到完整的数据包
(5)-c 100 : 只抓取100个数据包
(6)dst port ! 2二 : 不抓取目的端口是22的数据包
(柒)src net 19二.16八.1.0/二4 : 数据包的源互联网地址为1玖二.16八.1.0/2四
(8)-w ./target.cap : 保存成cap文件,方便用ethereal(即wireshark)分析

 

使用tcpdump抓取HTTP包

tcpdump  -XvvennSs 0 -i eth0 tcp[20:2]=0x4745 or tcp[20:2]=0x4854

0x47四伍 为”GET”前三个假名”GE”,0x485肆 为”HTTP”前五个字母”HT”。

 

tcpdump
对截获的多少并不曾实行彻底解码,数据包内的绝半数以上剧情是选用十陆进制的款型直接打字与印刷输出的。分明那不利于分析网络故障,平常的化解办法是先采用带-w参数的tcpdump
截获数据并保留到文件中,然后再使用其余程序(如Wireshark)举办解码分析。当然也相应定义过滤规则,以幸免捕获的多少包填满全部硬盘。

 

 

出口新闻意义

首先大家注意一下,基本上tcpdump总的的出口格式为:系统时间 来源主机.端口
> 指标主机.端口 数据包参数

tcpdump 的出口格式与协商有关.以下不难描述了绝抢先2/四常用的格式及连锁例子.

2、实用命令实例

私下认可运维

tcpdump

平日情状下,直接开发银行tcpdump将监视第一个网络接口上有着流过的数据包。

 

蹲点内定互连网接口的数据包

tcpdump -i eth1

假如不点名网卡,暗许tcpdump只会监视第贰个互联网接口,1般是eth0,上面包车型客车事例都未有点名网络接口。 

 

监视钦赐主机的数据包

打字与印刷全体进入或离开sundown的数量包.

tcpdump host sundown

也足以钦定ip,例如截获全部二10.27.48.一 的主机收到的和产生的保有的数据包

tcpdump host 210.27.48.1

打字与印刷helios 与 hot 只怕与 ace 之间通讯的数据包

tcpdump host helios and \( hot or ace \)

收获主机二拾.二柒.4八.壹 和主机二10.2七.48.二 或210.27.48.三的通讯

tcpdump host 210.27.48.1 and \ (210.27.48.2 or 210.27.48.3 \)

打字与印刷ace与其他其余主机之间通讯的IP 数据包, 但不包蕴与helios之间的数据包.

tcpdump ip host ace and not helios

假定想要获取主机二十.2七.4八.壹除了和主机二十.二七.48.二之外全数主机通信的ip包,使用命令:

tcpdump ip host 210.27.48.1 and ! 210.27.48.2

收获主机hostname发送的富有数据

tcpdump -i eth0 src host hostname

蹲点全体送到主机hostname的数据包

tcpdump -i eth0 dst host hostname

 

蹲点内定主机和端口的数据包

假如想要获取主机贰10.二七.48.1接收或发生的telnet包,使用如下命令

tcpdump tcp port 23 and host 210.27.48.1

对本机的udp 1二三 端口进行监视 1二三 为ntp的服务端口

tcpdump udp port 123

监听端口全数数据包

tcpdump -A -i any port 443

 

蹲点内定网络的数据包

打字与印刷本地主机与Berkeley互联网上的主机之间的拥有通讯数据包(ps: ucb-ether,
此处可明白为’Beck雷互连网’的互联网地址,此表达式最原始的意思可发挥为:
打字与印刷网络地址为ucb-ether的全部数据包)

tcpdump net ucb-ether

打字与印刷全数通过网关snup的ftp数据包(注意, 表明式被单引号括起来了,
这能够预防shell对当中的括号举办不当解析)

tcpdump 'gateway snup and (port ftp or ftp-data)'

打字与印刷全体源地址或目的地址是本土主机的IP数据包

(纵然本地互连网通过网关连到了另一互联网, 则另一互联网并无法算作本地互连网.(ps:
此句翻译波折,需补充).localnet 实际使用时要真正替换开销地网络的名字)

tcpdump ip and not net localnet

 

蹲点内定协议的数据包

打字与印刷TCP会话中的的先河和结束数据包,
并且数据包的源或目标不是本地网络上的主机.(ps: localnet,
实际利用时要真正替换花费地互联网的名字))

tcpdump 'tcp[tcpflags] & (tcp-syn|tcp-fin) != 0 and not src and dst net localnet'

打字与印刷全部源或指标端口是80, 网络层协议为IPv④,
并且含有数据,而不是SYN,FIN以及ACK-only等不含数据的数目包.(ipv陆的本子的表明式可做演练)

tcpdump 'tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)'

(ps: 可掌握为, ip[2:2]代表整个ip数据包的长短,
(ip[0]&0xf)<<贰)表示ip数据托特包头的长短(ip[0]&0xf代表包中的IHL域,
而此域的单位为32bit, 要换算

成字节数供给乘以四, 即左移2. (tcp[12]&0xf0)>>四 代表tcp头的长短,
此域的单位也是3二bit, 换算成比特数为 ((tcp[12]&0xf0) >>
4) << 2, 
即 ((tcp[12]&0xf0)>>2). ((ip[2:2] – ((ip[0]&0xf)<<2))

  • ((tcp[12]&0xf0)>>2)) != 0 表示:
    整个ip数据包的长度减去ip头的长度,再减去
    tcp头的尺寸不为0, 那就代表,
    ip数据包中确实是有数据.对于ipv陆版本只需思索ipv7头中的’Payload Length’ 与
    ‘tcp头的长度’的差值, 并且在那之中表达格局’ip[]’需换成’ip6[]’.)

打字与印刷长度超越57陆字节, 并且网关地址是snup的IP数据包

tcpdump 'gateway snup and ip[2:2] > 576'

打字与印刷全体IP层广播或多播的数据包, 但不是物理以太网层的播报或多播数据报

tcpdump 'ether[0] & 1 = 0 and ip[16] >= 224'

打字与印刷除’echo request’也许’echo reply’类型以外的ICMP数据包(
比如,须求打字与印刷全体非ping 程序发生的数据包时可用到此表明式 .
(ps: ‘echo reuqest’ 与 ‘echo reply’
这两体系型的ICMP数据包日常由ping程序产生))

tcpdump 'icmp[icmptype] != icmp-echo and icmp[icmptype] != icmp-echoreply'

 

tcpdump 与wireshark

Wireshark(在此在此以前是ethereal)是Windows下格外不难易用的抓包工具。但在Linux下很难找到二个好用的图形化抓包工具。
幸而有tcpdump。大家得以用tcpdump + Wireshark 的无所不包结合实现:在 Linux
里抓包,然后在Windows 里分析包。

tcpdump tcp -i eth1 -t -s 0 -c 100 and dst port ! 22 and src net 192.168.1.0/24 -w ./target.cap

(1)tcp: ip icmp arp rarp 和
tcp、udp、icmp那些选取等都要放权第1个参数的职责,用来过滤数据报的品类
(2)-i eth一 : 只抓经过接口eth一的包
(叁)-t : 不显得时间戳
(四)-s 0 : 抓取数据包时暗许抓取长度为68字节。加上-S 0
后方可抓到完整的数据包
(伍)-c 100 : 只抓取玖几个数据包
(6)dst port ! 2二 : 不抓取目的端口是2二的数据包
(7)src net 1玖2.16八.一.0/二四 : 数据包的源网络地址为1玖贰.16八.一.0/二四
(8)-w ./target.cap : 保存成cap文件,方便用ethereal(即wireshark)分析

 

使用tcpdump抓取HTTP包

tcpdump  -XvvennSs 0 -i eth0 tcp[20:2]=0x4745 or tcp[20:2]=0x4854

0x4745 为”GET”前三个假名”GE”,0x485四 为”HTTP”前四个字母”HT”。

tcpdump
对截获的多寡并未进行到底解码,数据包内的多数情节是选用十6进制的格局直接打字与印刷输出的。显著那不利于分析网络故障,平时的化解办法是先接纳带-w参数的tcpdump
截获数据并保存到文件中,然后再选用其余程序(如Wireshark)举办解码分析。当然也应该定义过滤规则,避防止捕获的多寡包填满全体硬盘。

链路层头

对此FDDI网络, ‘-e’ 使tcpdump打字与印刷出钦赐数据包的’frame control’ 域,
源和目标地址, 以及包的长度.(frame control域
控制对包中其余域的解析). 1般的包(比如那几个IP
datagrams)都以包括’async'(异步标志)的数据包,并且有取值0到七的预先级;
例如 ‘async四’就象征此包为异步数据包,并且优先级别为四.
经常认为,那几个包们会内含一个 LLC包(逻辑链路控制包); 那时,倘若此包
不是3个ISO
datagram或所谓的SNAP包,其LLC底部将会被打字与印刷(nt:应该是指此包内含的
LLC包的柳州).

对此Token Ring互连网(令牌环互连网), ‘-e’ 使tcpdump打印出钦点数据包的’frame
control’和’access control’域, 以及源和目标地址,
外加包的长度. 与FDDI互联网类似, 此数据包日常内含LLC数据包. 不管
是不是有’-e’选项.对于此互连网上的’source-routed’类型数据包(nt:
意译为:源地址被追踪的数据包,具体意思未知,需补充),
其包的源路由新闻总会被打字与印刷.

对于80二.11互连网(WLAN,即wireless local area network), ‘-e’
使tcpdump打字与印刷出钦定数据包的’frame control域,
岳阳中含有的具备地点, 以及包的长度.与FDDI互联网类似,
此数据包平日内含LLC数据包.

(注意: 以下的描述会假使你熟稔SLIP压缩算法 (nt:SLIP为Serial Line Internet
Protocol.), 那一个算法能够在
TiguanFC-114四中找到有关的马迹蛛丝.)

对此SLIP互联网(nt:SLIP links, 可精晓为一个网络, 即通过串行线路建立的连天,
而1个简易的连日也可看做三个网络),
数据包的’direction indicator'(‘方向提醒标志’)(“I”表示入, “O”表示出),
类型以及减弱音讯将会被打字与印刷. 包类型会被第三打印.

种类分为ip, utcp以及ctcp(nt:未知, 需补充).
对于ip包,连接新闻将不被打字与印刷(nt:SLIP连接上,ip包的三番五次音讯可能无用或从不定义.
reconfirm).对于TCP数据包, 连接标识紧接着类型表示被打字与印刷. 如若此包被压缩,
其被编码过的头顶将被打字与印刷.
那会儿对此很是规的压缩包,会如下呈现:
*S+n 或者 *SA+n,
个中n代表包的(顺序号或(顺序号和应答号))扩张或减少的数目(nt |
rt:S,SA拗口, 需再译).
对此非新鲜的压缩包,0个或更加多的’改变’将会被打字与印刷.’改变’被打印时格式如下:
‘标志’+/-/=n 包数据的长短 压缩的底局长度.
里头’标志’能够取以下值:
U(代表殷切指针), W(指缓冲窗口), A(应答), S(系列号),
I(包ID),而增量表达’=n’代表被授予新的值, +/-表示扩展或减少.

譬如说, 以下显示了对二个外发压缩TCP数据包的打字与印刷,
那些数据包隐含多个接连标识(connection identifier); 应答号扩大了陆,
顺序号扩充了4九, 包ID号扩大了陆; 包数据长度为三字节(octect),
压缩尾部为六字节.(nt:如此看来那应当不是一个出色的压缩数据包).

ARP/RARP 数据包

tcpdump对Arp/rarp包的出口音信中会包罗呼吁类型及该请求对应的参数.
展现格式简洁明了. 以下是从主机rtsg到主机csam的’rlogin’
(远程登录)进度早起初段的数码包样例:
arp who-has csam tell rtsg
arp reply csam is-at CSAM
率先行代表:rtsg发送了2个arp数据包(nt:向全网段发送,arp数据包)以询问csam的以太网地址
Csam(nt:可从下文看出来,
是Csam)以他自个儿的以太网地址做了答复(在那些事例中,
以太网地址以大写的名字标识, 而internet
地点(即ip地址)以全部的小写名字标识).

要是选择tcpdump -n, 可以清楚看到以太网以及ip地址而不是名字标识:
arp who-has 128.3.254.6 tell 128.3.254.68
arp reply 128.3.254.6 is-at 02:07:01:00:01:c4

万1我们应用tcpdump -e, 则能够清晰的收看第3个数据包是全网广播的,
而第四个数据包是点对点的:
RTSG Broadcast 0806 64: arp who-has csam tell rtsg
CSAM RTSG 0806 64: arp reply csam is-at CSAM
首先个数据包证明:以arp包的源以太地址是CRUISERTSG, 目的地点是全以太网段,
type域的值为1陆进制080六(表示ETHE奥迪Q伍_A中华VP(nt:arp包的类型标识)),
包的总委员长度为64字节.

 

TCP 数据包

(注意:以下将会假定你对 CRUISERFC-7九叁所讲述的TCP熟练. 借使不熟,
以下描述以及tcpdump程序恐怕对你帮忙相当小.(nt:警告可忽略,
只需后续看, 不熟稔的地方可回头再看.).

日常tcpdump对tcp数据包的展现格式如下:
src > dst: flags data-seqno ack window urgent options

src 和 dst 是源和目标IP地址以及相应的端口. flags 标志由S(SYN), F(FIN),
P(PUSH, PAJERO(CR-VST),
W(ECN CWT(nt | rep:未知, 需补充))或者 E(ECN-Echo(nt |
rep:未知, 需补充))组成,
独自三个’.’表示尚无flags标识.
数据段顺序号(Data-seqno)描述了此包中数量所对应体系号空间中的二个职分(nt:整个数据被隔开分离,
每段有四个顺序号, 全体的顺序号构成三个行列号空间)(可参看以下例子). Ack
描述的是同一个连接,同三个势头,下2个本端应该吸收接纳的
(对方应该发送的)数据片段的相继号.
Window是本端可用的数目接收缓冲区的高低(也是对方发送数据时需依据这么些尺寸来集团数据).
Urg(urgent) 表示数据包中有时不小编待的数据. options 描述了tcp的有的选拔,
那个采纳都用尖括号来代表(如 <mss 十2肆>).

src, dst 和 flags 那多个域总是会被呈现.
别的域的显示与否依赖于tcp协议头里的音信.

那是三个从trsg到csam的二个rlogin应用登录的开头阶段.
rtsg.1023 > csam.login: S 768512:768512(0) win 4096 <mss
1024>
csam.login > rtsg.1023: S 947648:947648(0) ack 768513 win 4096
<mss 1024>
rtsg.1023 > csam.login: . ack 1 win 4096
rtsg.1023 > csam.login: P 1:2(1) ack 1 win 4096
csam.login > rtsg.1023: . ack 2 win 4096
rtsg.1023 > csam.login: P 2:21(19) ack 1 win 4096
csam.login > rtsg.1023: P 1:2(1) ack 21 win 4077
csam.login > rtsg.1023: P 2:3(1) ack 21 win 4077 urg 1
csam.login > rtsg.1023: P 3:4(1) ack 21 win 4077 urg 1
先是行代表有二个数额包从rtsg主机的tcp端口拾二3发送到了csam主机的tcp端口login上(nt:udp切磋的端口和tcp协议的端
口是个其他四个空中, 即便取值范围1致). S表示设置了SYN标志.
包的顺序号是76851二, 并且未有包蕴数据.(表示格式
为:’first:last(nbytes)’,
其意义是’此包中多少的顺序号从first开头直到last结束,不包罗last.
并且总共包蕴nbytes的
用户数据’.) 未有捎带应答(nt:从下文来看,第二行才是有捎带应答的数据包),
可用的承受窗口的高低为40九陆bytes, 并且请求端(rtsg)
的最大可接受的多少段大小是10二四字节(nt:那个新闻作为请求发向应答端csam,
以便双方进一步的合计).

Csam 向rtsg 回复了基本相同的SYN数据包, 其分别只是多了二个’ piggy-backed
ack'(nt:捎带回的ack应答, 针对rtsg的SYN数据包).

rtsg 同样针对csam的SYN数据包回复了①ACK数据包作为应答.
‘.’的含义正是此包中并未标明被设置. 由于此应答包中不含有数量, 所以
包中也从没数量段系列号. 提示! 此ACK数据包的顺序号只是3个小平头一.
有如下解释:tcpdump对于二个tcp连接上的对话, 只打字与印刷会话两端的
起首数据包的行列号,其后相应数据包只打字与印刷出与初叶包种类号的差别.即早先种类号之后的系列号, 可被看作此会话上脚下所传数据片段在全方位
要传输的数码中的’相对字节’地方(nt:双方的第2个岗位都是1,
即’相对字节’的起头编号). ’-S’将掩盖那个意义, 
使数据包的原有顺序号被打字与印刷出来.

 

第伍行的意义为:rtsg 向
csam发送了1九字节的数量(字节的号子为二到20,传送方向为rtsg到csam).
包中安装了PUSH标志. 在第八行,
csam 喊到, 她①度从rtsg中接受了二1以下的字节, 但不包涵二一编号的字节.
这几个字节存放在csam的socket的收纳缓冲中, 相应地,
csam的收到缓冲窗口大小会减小19字节(nt:能够从第4行和第拾行win属性值的变化看出来).
csam在第10行那几个包中也向rtsg发送了1个
字节. 在第柒行和第七行, csam 继续向rtsg
分别发送了八个只含有二个字节的数据包, 并且这一个数额包带PUSH标志.

假设所抓到的tcp包(nt:即那里的snapshot)太小了,以至tcpdump无法完全获得其尾部数据,
那时, tcpdump会尽量解析那个不完整的头,
并把多余不能够分析的局地显得为'[|tcp]’.
要是尾部含有虚假的特性信息(比如其长度属性其实比尾部实际尺寸长或短),
tcpdump会为该尾部
显示'[bad opt]’. 倘使底部的长短告诉我们一些选项(nt | rt:从下文来看,
指tcp包的底部中针对ip包的部分挑选, 回头再翻)会在此包中,
而真的的IP(数据包的长短又不够容纳这一个选拔, tcpdump会突显'[bad hdr
length]’.

抓取带有越发标志的的TCP包(如SYN-ACK标志, U奥迪Q叁G-ACK标志等).

在TCP的头顶中, 有八比特(bit)用作决定位区域, 其取值为:
CWR | ECE | URG | ACK | PSH | RST | SYN | FIN
(nt | rt:从表达情势上可推测:那7个位是用或的主意来组合的, 可回头再翻)

现假若大家想要监控建立二个TCP连接壹切经过中所产生的数目包.
可回想如下:TCP使用三回握手球协会议来建立多少个新的连天; 其与此三次握手
连接各类对应,并涵盖相应TCP控制标志的数目包如下:
1) 连接发起方(nt:Caller)发送SYN标志的数据包
二) 接收方(nt:Recipient)用饱含SYN和ACK标志的数目包进行回应
3) 发起方收到接收方回应后再发送带有ACK标志的多寡包举行回应

3、输出音讯意义

首先大家注意一下,基本上tcpdump总的的出口格式为:系统时间 来源主机.端口
> 指标主机.端口 数据包参数tcpdump
的出口格式与商业事务有关.以下简单描述了绝超过四分之贰常用的格式及相关例子.

0 15 31

链路层头

对此FDDI网络, ‘-e’ 使tcpdump打字与印刷出钦定数据包的’frame control’ 域,
源和目标地址, 以及包的长度.(frame control域
操纵对包中别的域的解析). 1般的包(比如这一个IP
datagrams)都是蕴涵’async'(异步标志)的数据包,并且有取值0到柒的事先级;
比如 ‘async四’就代表此包为异步数据包,并且优先级别为4.
常常认为,那一个包们会内含三个 LLC包(逻辑链路控制包); 那时,要是此包
不是二个ISO
datagram或所谓的SNAP包,其LLC底部将会被打印(nt:应该是指此包内含的
LLC包的咸阳).

对于Token Ring网络(令牌环网络), ‘-e’ 使tcpdump打字与印刷出钦定数据包的’frame
control’和’access control’域, 以及源和目的地址,
外加包的长度. 与FDDI网络类似, 此数据包常常内含LLC数据包. 不管
是或不是有’-e’选项.对于此网络上的’source-routed’类型数据包(nt:
意译为:源地址被追踪的数据包,具体意思未知,需补充),
其包的源路由音讯总会被打字与印刷.

对此80贰.1一网络(WLAN,即wireless local area network), ‘-e’
使tcpdump打字与印刷出钦定数据包的’frame control域,
黄冈中涵盖的持有地点, 以及包的长度.与FDDI网络类似,
此数据包平时内含LLC数据包.

(注意: 以下的叙述会假诺你谙习SLIP压缩算法 (nt:SLIP为Serial Line Internet
Protocol.), 那一个算法能够在
PAJEROFC-114四中找到相关的马迹蛛丝.)

对此SLIP网络(nt:SLIP links, 可通晓为三个网络, 即通过串行线路建立的连日,
而1个粗略的连年也可看做叁个互联网),
数据包的’direction indicator'(‘方向提示标志’)(“I”表示入, “O”表示出),
类型以及减弱消息将会被打字与印刷. 包类型会被第三打字与印刷.

品类分为ip, utcp以及ctcp(nt:未知, 需补充).
对于ip包,连接音讯将不被打字与印刷(nt:SLIP连接上,ip包的连天消息大概无用或从不定义.
reconfirm).对于TCP数据包, 连接标识紧接着类型表示被打字与印刷. 要是此包被压缩,
其被编码过的底部将被打字与印刷.
这会儿对此分外规的压缩包,会如下展现:
*S+n 或者 *SA+n,
在那之中n代表包的(顺序号或(顺序号和应答号))扩大或回落的数码(nt |
rt:S,SA拗口, 需再译).
对于非卓绝的压缩包,0个或越来越多的’改变’将会被打字与印刷.’改变’被打字与印刷时格式如下:
‘标志’+/-/=n 包数据的长度 压缩的尾秘书长度.
内部’标志’可以取以下值:
U(代表火急指针), W(指缓冲窗口), A(应答), S(连串号),
I(包ID),而增量表明’=n’表示被赋予新的值, +/-代表增添或减弱.

例如, 以下呈现了对三个外发压缩TCP数据包的打印,
那么些数据包隐含3个连连标识(connection identifier); 应答号扩展了陆,
顺序号增添了4玖, 包ID号扩展了陆; 包数据长度为三字节(octect),
压缩头部为陆字节.(nt:如此看来那应该不是2个非正规的压缩数据包).

ARP/RARP 数据包

tcpdump对Arp/rarp包的输出消息中会包蕴呼吁类型及该请求对应的参数.
显示格式简洁明了. 以下是从主机rtsg到主机csam的’rlogin’
(远程登录)进程起开首段的多少包样例:
arp who-has csam tell rtsg
arp reply csam is-at CSAM
第2行表示:rtsg发送了一个arp数据包(nt:向全网段发送,arp数据包)以理解csam的以太网地址
Csam(nt:可从下文看出来,
是Csam)以她要好的以太网地址做了应对(在那个例子中,
以太网地址以大写的名字标识, 而internet
地址(即ip地址)以1切的小写名字标识).

假定运用tcpdump -n, 能够清楚看到以太网以及ip地址而不是名字标识:
arp who-has 128.3.254.6 tell 128.3.254.68
arp reply 128.3.254.6 is-at 02:07:01:00:01:c4

比方大家选用tcpdump -e, 则能够清楚的看到第3个数据包是全网广播的,
而第三个数据包是点对点的:
RTSG Broadcast 0806 64: arp who-has csam tell rtsg
CSAM RTSG 0806 64: arp reply csam is-at CSAM
率先个数据包注解:以arp包的源以香港太古土地资金财产股份两合公司址是MuranoTSG, 目的地址是全以太网段,
type域的值为1陆进制080陆(表示ETHEQashqai_ARubiconP(nt:arp包的品种标识)),
包的总省长度为6四字节.

| source port | destination port |

TCP 数据包

(注意:以下将会假定你对 HummerH二FC-7九3所讲述的TCP了然. 假若不熟,
以下描述以及tcpdump程序或然对你协理相当的小.(nt:警告可忽略,
只需后续看, 不纯熟的地点可回头再看.).

平日tcpdump对tcp数据包的呈现格式如下:
src > dst: flags data-seqno ack window urgent options

src 和 dst 是源和指标IP地址以及相应的端口. flags 标志由S(SYN), F(FIN),
P(PUSH, 智跑(HavalST),
W(ECN CWT(nt | rep:未知, 需补充))或者 E(ECN-Echo(nt |
rep:未知, 需补充))组成,
单独1个’.’表示不曾flags标识.
数据段顺序号(Data-seqno)描述了此包中数量所对应种类号空间中的3个职分(nt:整个数据被隔绝,
每段有贰个顺序号, 全数的顺序号构成一个行列号空间)(可参照以下例子). Ack
描述的是同二个一连,同3个样子,下一个本端应该接收的
(对方相应发送的)数据片段的逐条号.
Window是本端可用的数额接收缓冲区的分寸(也是对方发送数据时需遵照这几个尺寸来公司数据).
Urg(urgent) 表示数据包中有火急的数据. options 描述了tcp的壹对增选,
那个选用都用尖括号来代表(如 <mss 拾贰4>).

src, dst 和 flags 那多少个域总是会被显示.
其他域的展现与否依赖于tcp协议头里的消息.

那是2个从trsg到csam的2个rlogin应用登录的早先阶段.
rtsg.1023 > csam.login: S 768512:768512(0) win 4096 <mss
1024>
csam.login > rtsg.1023: S 947648:947648(0) ack 768513 win 4096
<mss 1024>
rtsg.1023 > csam.login: . ack 1 win 4096
rtsg.1023 > csam.login: P 1:2(1) ack 1 win 4096
csam.login > rtsg.1023: . ack 2 win 4096
rtsg.1023 > csam.login: P 2:21(19) ack 1 win 4096
csam.login > rtsg.1023: P 1:2(1) ack 21 win 4077
csam.login > rtsg.1023: P 2:3(1) ack 21 win 4077 urg 1
csam.login > rtsg.1023: P 3:4(1) ack 21 win 4077 urg 1
第贰行表示有3个数码包从rtsg主机的tcp端口拾23发送到了csam主机的tcp端口login上(nt:udp合计的端口和tcp协议的端
口是分别的三个空中, 固然取值范围壹致). S表示设置了SYN标志.
包的顺序号是76851二, 并且未有包蕴数据.(表示格式
为:’first:last(nbytes)’,
其含义是’此包中数量的顺序号从first开头直到last甘休,不包罗last.
并且总共包含nbytes的
用户数量’.) 未有捎带应答(nt:从下文来看,第三行才是有捎带应答的数据包),
可用的收受窗口的大大小小为40九陆bytes, 并且请求端(rtsg)
的最大可承受的多少段大小是拾二四字节(nt:那几个信息作为请求发向应答端csam,
以便双方进一步的商业事务).

Csam 向rtsg 回复了基本相同的SYN数据包, 其分别只是多了1个’ piggy-backed
ack'(nt:捎带回的ack应答, 针对rtsg的SYN数据包).

rtsg 同样针对csam的SYN数据包回复了一ACK数据包作为应答.
‘.’的意义就是此包中并未有标明被设置. 由于此应答包中不含有数据, 所以
包中也不曾多少段体系号. 提醒! 此ACK数据包的顺序号只是3个小平头1.
有如下解释:tcpdump对于二个tcp连接上的对话, 只打字与印刷会话两端的
开始数据包的队列号,其后相应数据包只打字与印刷出与初叶包种类号的差距.即开端体系号之后的行列号, 可被用作此会话上脚下所传数据片段在任何
要传输的数目中的’相对字节’地方(nt:两方的首先个职位都以一,
即’相对字节’的发端编号). ’-S’将覆盖这些功能, 
使数据包的本来面目顺序号被打字与印刷出来.

第陆行的意思为:rtsg 向
csam发送了1玖字节的数额(字节的号码为二到20,传送方向为rtsg到csam).
包中安装了PUSH标志. 在第9行,
csam 喊到, 她曾经从rtsg中收受了二1以下的字节, 但不包涵二一号码的字节.
这几个字节存放在csam的socket的收取缓冲中, 相应地,
csam的接纳缓冲窗口大小会缩减1玖字节(nt:能够从第6行和第捌行win属性值的变动看出来).
csam在第9行那几个包中也向rtsg发送了3个
字节. 在第7行和第八行, csam 继续向rtsg
分别发送了多个只含有一个字节的数据包, 并且这一个数量包带PUSH标志.

1旦所抓到的tcp包(nt:即那里的snapshot)太小了,以至tcpdump不能够完全获得其底部数据,
那时, tcpdump会尽量解析这么些不完整的头,
并把结余不能够分析的有些显得为'[|tcp]’.
借使底部含有虚假的性情音讯(比如其尺寸属性其实比尾部实际尺寸长或短),
tcpdump会为该尾部
显示'[bad opt]’. 即使尾部的尺寸告诉大家一点选项(nt | rt:从下文来看,
指tcp包的尾部中针对ip包的片段摘取, 回头再翻)会在此包中,
而实在的IP(数据包的尺寸又不够容纳这几个选用, tcpdump会展现'[bad hdr
length]’.

抓取带有独特标志的的TCP包(如SYN-ACK标志, ULANDG-ACK标志等).

在TCP的头顶中, 有八比特(bit)用作决定位区域, 其取值为:
CWR | ECE | URG | ACK | PSH | RST | SYN | FIN
(nt | rt:从表达格局上可猜测:那七个位是用或的主意来整合的, 可回头再翻)

现假使我们想要监察和控制建立贰个TCP连接1切进度中所产生的数量包.
可回想如下:TCP使用三回握手球组织议来树立3个新的延续; 其与此三次握手
连年种种对应,并含有相应TCP控制标志的数量包如下:
一) 连接发起方(nt:Caller)发送SYN标志的数据包
二) 接收方(nt:Recipient)用含有SYN和ACK标志的数量包进行应对
三) 发起方收到接收方回应后再发送带有ACK标志的数额包进行应对

| sequence number |

0 15 31

| acknowledgment number |

| source port | destination port |

| HL | rsvd |C|E|U|A|P|R|S|F| window size |

| sequence number |

| TCP checksum | urgent pointer |

一个TCP头部,在不带有选项数据的情景下壹般占用二十一个字节(nt | rt:options
精通为接纳数据,需回译). 第三行包括0到叁编号的字节,
第一行李包裹涵编号四-7的字节.

比方编号从0开始算, TCP控制标志位于13字节(nt:第五行左半部分).

 

0 7 15 23 31
HL rsvd C E U A P R S F window size
—————- ————— ————— —————-
13th octet

让我们密切看看号码一三的字节:

C E U A P R S F
—————
7 5 3 0

这边有大家感兴趣的决定标志位. 从右往左那一个位被依次编号为0到7, 从而
PSH位在三号, 而UCRUISERG位在伍号.

 

提示一下协调, 大家只是要获取包罗SYN标志的数量包.
让我们看看在八个包的德阳中, 要是SYN位棉被服装置, 到底
在一3号字节产生了怎样:

C E U A P R S F
0 0 0 0 0 0 1 0
—————
7 6 5 4 3 2 1 0

在支配段的数量中, 唯有比特一(bit number 一)被置位.

借使编号为一3的字节是三个7位的无符号字符型,并且依据网络字节号排序(nt:对于三个字节来说,网络字节序等同于主机字节序),
其2进制值
正如所示:
00000010

并且其拾进制值为:

0*2^7 + 0*2^6 + 0*2^5 + 0*2^4 + 0*2^3 + 0*2^2 + 1*2^1 + 0*2^0 =
2(nt: 1 * 2^陆 表示1加倍二的6遍方, 或许那样更
驾驭些, 即把原来表明中的指数7 6 … 0挪到了下边来抒发)

看似指标了, 因为大家早已掌握, 如果数据威海部中的SYN被置位,
那么尾部中的第3二个字节的值为贰(nt: 依据互联网序, 即大头形式, 最主要的字节
在前边(在日前,即该字节实际内部存款和储蓄器地址比较小,
最根本的字节,指数学表示中数的要职, 如35陆中的三) ).

发布为tcpdump能领略的关系式就是:
tcp[13] 2

故而大家能够把此关系式当作tcpdump的过滤条件,
指标正是监督只含有SYN标志的数目包:
tcpdump -i xl0 tcp[13] 二 (nt: xl0 指网络接口, 如eth0)

本条表明式是说”让TCP数据包的第二三个字节拥有值2吗”, 那也是大家想要的结果.

近来, 即使我们需求抓取带SYN标志的数据包,
而忽略它是还是不是包罗别的标志.(nt:只要带SYN正是大家想要的).
让大家来探视当2个暗含
SYN-ACK的数据包(nt:SYN 和 ACK 标志都有), 来到时发出了如何:
|C|E|U|A|P|R|S|F|
|—————|
|0 0 0 1 0 0 1 0|
|—————|
|7 6 5 4 3 2 1 0|

一三号字节的壹号和四号位被置位, 其二进制的值为:
00010010

转换来十进制就是:

0*2^7 + 0*2^6 + 0*2^5 + 1*2^4 + 0*2^3 + 0*2^2 + 1*2^1 + 0*2 =
18(nt: 1 * 二^六 表示1倍增二的四回方, 可能那样更
精通些, 即把原来表达中的指数7 陆 … 0挪到了下边来表述)

现行反革命, 却不能够只用’tcp[13] 1八’作为tcpdump的过滤表明式,
因为那将导致只采用含有SYN-ACK标志的数据包, 其余的都被放弃.
唤醒一下和谐, 大家的对象是: 只要包的SYN标志棉被服装置就行,
其余的标志我们不理会.

为了落成大家的对象,
大家供给把一三号字节的二进制值与其余的叁个数做AND操作(nt:逻辑与)来收获SYN比特位的值.
目的是:只要SYN 被安装
就行, 于是大家就把她与上一3号字节的SYN值(nt: 000000拾).

00010010 SYN-ACK 00000010 SYN
AND 00000010 (we want SYN) AND 00000010 (we want SYN)


= 00000010 = 00000010

大家可以发现, 不管包的ACK或任何标志是不是被安装,
以上的AND操作都会给大家一样的值,
其拾进制表明正是二(二进制表明正是00000010).
由此大家领悟, 对于富含SYN标志的数据包, 以下的表明式的结果一连真(true):

( ( value of octet 一三 ) AND ( 二 ) ) ( 二 ) (nt: value of octet 1三,
即一三号字节的值)

灵感随之而来, 大家于是获得了如下的tcpdump 的过滤表明式
tcpdump -i xl0 ‘tcp[13] & 2 2’

只顾, 单引号或反斜杆(nt: 那里用的是单引号)不能够大致,
那足防止患shell对&的分解或替换.

| acknowledgment number |

UDP 数据包

UDP 数据包的展现格式,可经过rwho这么些具体使用所发出的多寡包来表达:
actinide.who > broadcast.who: udp 84

其意义为:actinide主机上的端口who向broadcast主机上的端口who发送了三个udp数据包(nt:
actinide和broadcast都以指Internet地址).
其一数目包承载的用户数据为八多个字节.

有个别UDP服务可从数据包的源或指标端口来识别,也可从所呈现的更加高层协商消息来识别.
比如, Domain Name service requests(DNS 请求,
在KugaFC-十34/十35中), 和Sun 君越PC calls to
NFS(对NFS服务器所倡导的长距离调用(nt: 即Sun
大切诺基PC),在智跑FC-1050中有对长途调用的叙说).

UDP 名称服务请求

(注意:以下的讲述借使你对Domain Service protoco(nt:在ENCOREFC-10三中有着描述),
不然你会意识以下描述就是天书(nt:希腊共和国文天书,
无需理会, 吓吓你的, 接着看就行))

名称服务请求有如下的格式:
src > dst: id op? flags qtype qclass name (len)
(nt: 从下文来看, 格式应该是src > dst: id op flags qtype qclass? name
(len))
譬如有三个其实呈现为:
h2opolo.1538 > helios.domain: 3+ A? ucbvax.berkeley.edu. (37)

长机h二opolo 向helios 上运营的名称服务器查询ucbvax.berkeley.edu
的地址记录(nt: qtype等于A). 此询问本身的id号为’叁’. 符号
‘+’意味着递归查询标志被安装(nt:
dns服务器可向更加高层dns服务器询问本服务器不分包的地址记录).
这么些最后通过IP包发送的查询请求
数量长度为三7字节, 个中不包蕴UDP和IP协议的头数据.
因为此询问操作为暗中认可值(nt | rt: normal one的领会), op字段被省略.
设若op字段没被容易, 会被显示在’三’ 和’+’之间. 同样, qclass也是暗许值,
C_IN, 从而也没被展现, 即使没被忽视, 她会被出示在’A’之后.

非常检查会在方括中突显出附加的域: 假使三个询问同时富含多个答复(nt:
可理解为, 对后面任何一个伸手的回应), 并且此回答包蕴权威或附加记录段, 
ancount, nscout, arcount(nt: 具体字段含义需补充) 将被出示为'[na]’,
‘[nn]’, ‘[nau]’, 在那之中n代表合适的计数. 要是包中以下
回应位(比如AA位, RA位, rcode位),
或许字节贰或3中别的1个’必须为0’的位被置位(nt: 设置为一), ‘[b2&3]=x’
将被呈现, 当中x表示
头顶字节二与字节三开始展览与操作后的值.

UDP 名称服务应对

对名称服务应对的数据包,tcpdump会有如下的显得格式
src > dst: id op rcode flags a/n/au type class data (len)
比如具体展现如下:
helios.domain > h2opolo.1538: 3 3/3/7 A 128.32.137.3 (273)
helios.domain > h2opolo.1537: 2 NXDomain* 0/1/0 (97)

第2行代表: helios 对h2opolo 所发送的三号查询请求应对了三条回复记录(nt |
rt: answer records), 3条名称服务器记录,
以及7条附加的记录. 第二个应答记录(nt: 三个应答记录中的第二个)类型为A(nt:
表示地址), 其数额为internet地址12八.3贰.一叁七.三.
此回应UDP数据包, 包涵273字节的数量(不包涵UPD和IP的尾部数据).
op字段和rcode字段被忽略(nt: op的实际值为Query, rcode, 即
response code的实际值为NoError), 同样被忽略的字段还有class 字段(nt | rt:
其值为C_IN, 那也是A类型记录私下认可取值)

其次行代表: helios 对h二opolo 所发送的2号查询请求做了回应. 回应中,
rcode编码为NXDomain(nt: 表示不设有的域)), 未有答应记录,
但含有三个称号服务器记录, 不含有权威服务器记录(nt | ck: 从上文来看,
此处的authority records 便是上文中对应的additional
records). ‘*’表示权威服务器回答标志被设置(nt: 从而additional
records就表示的是authority records).
出于并没有答应记录, type, class, data字段都被忽略.

flag字段还有极大希望出现别的一些字符, 比如’-‘(nt: 表示可递归地查询, 即RA
标志未有被设置), ‘|'(nt: 表示被截断的新闻, 即TC 标志
被置位). 若是答应(nt | ct: 可见道为, 包罗名称服务应对的UDP数据包,
tcpdump知道那类数据包该怎么解析其数额)的’question’段叁个条
目(entry)都不分包(nt: 每一种条目标含义, 需补充),'[nq]’ 会被打字与印刷出来.

要专注的是:名称服务器的伸手和回答数据量相比较大,
而私下认可的6八字节的抓取长度(nt: snaplen,
可分晓为tcpdump的二个装置选项)恐怕不足以抓取
数据包的满贯内容. 如若您实在需求仔细翻看名称服务器的负荷,
能够经过tcpdump 的-s 选项来扩张snaplen值.

| HL | rsvd |C|E|U|A|P|R|S|F| window size |

SMB/CIFS 解码

tcpdump 已能够对SMB/CIFS/NBT相关应用的多寡包内容开始展览解码(nt:
分别为’Server Message Block Common’, ‘Internet File System’
‘在TCP/IP上完结的互联网协议NETBIOS的简称’.
那多少个劳务普通采取UDP的137/138以及TCP的13九端口). 原来的对IPX和NetBEUI
SMB数据包的
解码能力照旧得以被选拔(nt: NetBEUI为NETBIOS的进步版本).

tcpdump暗中同意只依照最简易格局对相应数额包举行解码,
若是我们想要详尽的解码音信方可行使其-v 运维选现. 要留心的是, -v
会发生至极详尽的信息,
比如说对单1的三个SMB数据包, 将生出1显示器或更加多的音信, 所以此选项,
确有须要才使用.

关于SMB数据包格式的音讯, 以及种种域的意思能够参照www.cifs.org
大概samba.org 镜像站点的pub/samba/specs/ 目录. linux 上的SMB 补丁
(nt | rt: patch)由 Andrew Tridgell (tridge@samba.org)提供.

NFS 请求和答复

tcpdump对Sun
NFS(网络文件系统)请求和回答的UDP数据包有如下格式的打印输出:
src.xid > dst.nfs: len op args
src.nfs > dst.xid: reply stat len op results

以下是1组具体的输出数据
sushi.6709 > wrl.nfs: 112 readlink fh 21,24/10.73165
wrl.nfs > sushi.6709: reply ok 40 readlink “../var”
sushi.201b > wrl.nfs:
144 lookup fh 9,74/4096.6878 “xcolors”
wrl.nfs > sushi.201b:
reply ok 128 lookup fh 9,74/4134.3150

第3行输出表明: 主机sushi向长机wrl发送了多个’交流请求'(nt: transaction),
此请求的id为670九(注意, 主机名字后是换到
恳请id号, 而不是源端口号). 此呼吁数据为11二字节,
当中不包蕴UDP和IP尾部的长度. 操作类型为readlink(nt:
即此操作为读符号链接操作),
操作参数为fh 2一,24/⑩.731陆五(nt: 可按实际上运维环境, 解析如下, fd
代表描述的为文件句柄, 二一,二4 表示此句柄所对应设
备的主/从设备号对,
十象征此句柄所对应的i节点编号(nt:各种文件都会在操作系统中对应3个i节点,
限于unix类系统中),
7316伍是2个数码(nt: 可见道为标识此请求的一个随意数, 具体意思需补充)).

其次行中, wrl 做了’ok’的答复, 并且在results
字段中回到了sushi想要读的记号连接的真实目录(nt:
即sushi供给读的符号连接其实是1个索引).

其3行业评比释: sushi 再一次恳请 wrl 在’fh
九,74/40玖6.687八’所讲述的目录中摸索’xcolors’文件. 需求注意的是,
每行所展现的多少含义依赖于其中op字段的
品种(nt: 分裂op 所对应args 含义分裂等), 其格式遵循NFS 协商,
追求简洁明了.

 

假定tcpdump 的-v选项(详细打字与印刷选项) 棉被服装置, 附加的消息将被呈现. 比如:
sushi.1372a > wrl.nfs:
148 read fh 21,11/12.195 8192 bytes @ 24576
wrl.nfs > sushi.1372a:
reply ok 1472 read REG 100664 ids 417/0 sz 29388

(-v 选项壹般还会打字与印刷出IP尾部的TTL, ID, length, 以及fragmentation 域,
但在此例中, 都略过了(nt: 可领会为,简洁起见, 做了剔除))
在第三行, sushi 请求wrl 从文件 二壹,11/12.1九5(nt: 格式在上头有描述)中,
自偏移2457陆字节处初叶, 读取8192字节数据.
Wrl 回应读取成功; 由于第一行只是答复请求的发端片段,
所以只包涵147二字节(别的的多寡将在随着的reply片段中来到,
但那几个数量包不会再有NFS
头, 甚至UDP头音讯也为空(nt: 源和指标应该要有),
那将导致这么些部分不能够满意过滤条件, 从而未有被打字与印刷). -v
选项除了呈现文件数据消息, 还会来得
外加突显文件属性音讯: file type(文件类型, ”REG” 表示平常文书), file
mode(文件存取格局, 八进制表示的), uid 和gid(nt: 文件属主和
组属主), file size (文件大小).

1旦-v 标志被多次重复给出(nt: 如-vv), tcpdump会展现尤其详实的音信.

总得要留心的是, NFS 请求包中多少相比多, 借使tcpdump 的snaplen(nt:
抓取长度) 取太短将无法呈现其详细消息. 可应用
‘-s 1玖二’来扩张snaplen, 这可用于监测NFS应用的网络负载(nt: traffic).

NFS 的答疑包并不严加的紧随在此以前相应的请求包(nt: QX56PC operation). 从而,
tcpdump 会跟踪近日吸收接纳的一雨后玉兰片请求包, 再通过其
换来序号(nt: transaction ID)与相应请求包相相称. 那恐怕发生三个标题,
即使回应包来得太迟, 超出tcpdump 对相应请求包的跟踪范围,
该回应包将无法被分析.

| TCP checksum | urgent pointer |

1个TCP底部,在不包括选项数据的景况下1般占用1柒个字节(nt | rt:options
掌握为挑选数据,需回译). 第三行包含0到3编号的字节,
其次行李包裹蕴编号四-7的字节.

若是编号从0初步算, TCP控制标志位于一叁字节(nt:第肆行左半片段).

0 7 15 23 31
HL rsvd C E U A P R S F window size
—————- ————— ————— —————-
13th octet

让我们精心看看号码一三的字节:

C E U A P R S F
—————
7 5 3 0

此处有大家感兴趣的支配标志位. 从右往左这几个位被逐一编号为0到七, 从而
PSH位在3号, 而U奥迪Q伍G位在五号.

提示一下要好, 大家只是要博得包涵SYN标志的数目包.
让大家看看在五个包的邯郸中, 借使SYN位被设置, 到底
在1三号字节爆发了哪些:

C E U A P R S F
0 0 0 0 0 0 1 0
—————
7 6 5 4 3 2 1 0

在支配段的数目中, 唯有比特一(bit number 一)被置位.

借使编号为13的字节是二个7位的无符号字符型,并且根据网络字节号排序(nt:对于三个字节来说,网络字节序等同于主机字节序),
其2进制值
1般来说所示:
00000010

并且其十进制值为:

0*2^7 + 0*2^6 + 0*2^5 + 0*2^4 + 0*2^3 + 0*2^2 + 1*2^1 + 0*2^0 =
2(nt: 1 * 二^陆 表示一加倍2的五次方, 也许那样更
知情些, 即把原先表明中的指数7 6 … 0挪到了下边来发挥)

就如指标了, 因为我们早已领会, 假使数据邢台部中的SYN被置位,
那么尾部中的第三2个字节的值为2(nt: 遵照互联网序, 即大头方式, 最首要的字节
在头里(在头里,即该字节实际内部存款和储蓄器地址相比较小,
最根本的字节,指数学表示中数的上位, 如35陆中的三) ).

发挥为tcpdump能通晓的关系式正是:
tcp[13] 2

就此我们能够把此关系式当作tcpdump的过滤条件,
目的就是监察和控制只包蕴SYN标志的数额包:
tcpdump -i xl0 tcp[13] 二 (nt: xl0 指互连网接口, 如eth0)

以此表达式是说”让TCP数据包的第2三个字节拥有值贰啊”, 那也是大家想要的结果.

近期, 假使我们须求抓取带SYN标志的数据包,
而忽略它是或不是含有其余标志.(nt:只要带SYN正是我们想要的).
让大家来探视当叁个饱含
SYN-ACK的数据包(nt:SYN 和 ACK 标志都有), 来到时爆发了怎么:
|C|E|U|A|P|R|S|F|
|—————|
|0 0 0 1 0 0 1 0|
|—————|
|7 6 5 4 3 2 1 0|

13号字节的一号和4号位被置位, 其二进制的值为:
00010010

转换到10进制正是:

0*2^7 + 0*2^6 + 0*2^5 + 1*2^4 + 0*2^3 + 0*2^2 + 1*2^1 + 0*2 =
18(nt: 1 * 二^陆 表示一倍增贰的伍遍方, 只怕那样更
接头些, 即把原来表明中的指数七 陆 … 0挪到了上边来表达)

明天, 却不能只用’tcp[13] 1八’作为tcpdump的过滤表明式,
因为那将导致只选用含有SYN-ACK标志的数据包, 其余的都被废弃.
升迁一下友好, 大家的对象是: 只要包的SYN标志棉被服装置就行,
其余的注解大家不理会.

为了达到大家的指标,
我们要求把一3号字节的2进制值与任何的三个数做AND操作(nt:逻辑与)来赢得SYN比特位的值.
目的是:只要SYN 棉被服装置
就行, 于是我们就把他与上一三号字节的SYN值(nt: 000000拾).

00010010 SYN-ACK 00000010 SYN
AND 00000010 (we want SYN) AND 00000010 (we want SYN)


= 00000010 = 00000010

大家能够发现, 不管包的ACK或任何标志是还是不是被设置,
以上的AND操作都会给大家同样的值,
其十进制表明就是二(二进制表达就是000000十).
从而大家知晓, 对于富含SYN标志的数据包, 以下的表明式的结果三番五次真(true):

( ( value of octet 一三 ) AND ( 二 ) ) ( 二 ) (nt: value of octet 一叁,
即1叁号字节的值)

灵感随之而来, 我们于是获得了如下的tcpdump 的过滤表明式
tcpdump -i xl0 ‘tcp[13] & 2 2’

瞩目, 单引号或反斜杆(nt: 那里用的是单引号)不能够简单,
这足以免患shell对&的演讲或替换.

AFS 请求和应对

AFS(nt: 安德鲁 文件系统, Transarc , 未知, 需补充)请求和回应该如下的承诺

src.sport > dst.dport: rx packet-type
src.sport > dst.dport: rx packet-type service call call-name args
src.sport > dst.dport: rx packet-type service reply call-name args

elvis.7001 > pike.afsfs:
rx data fs call rename old fid 536876964/1/1 “.newsrc.new”
new fid 536876964/1/1 “.newsrc”
pike.afsfs > elvis.7001: rx data fs reply rename

在首先行, 主机elvis 向pike 发送了3个大切诺基X数据包.
那是三个对此文本服务的伸手数据包(nt: LX570X data packet, 发送数据包 ,
可通晓为发送包过去, 从而请求对方的服务), 那也是3个QashqaiPC
调用的开头(nt: 汉兰达PC, remote procedure call). 此瑞虎PC 请求pike
执行rename(nt: 重命名) 操作, 并钦赐了有关的参数:
原目录描述符为536876964/1/1, 原版的书文书名称叫 ‘.newsrc.new’,
新目录描述符为536876964/1/一, 新文件名称为 ‘.newsrc’.
主机pike 对此rename操作的BMWX叁PC请求作了回复(回应代表rename操作成功,
因为回应的是含有数据内容的包而不是分外包).

一般的话, 全数的’AFS ENVISIONPC’请求被出示时, 会被冠以二个名字(nt: 即decode,
解码), 那一个名字往往正是LacrossePC请求的操作名.
并且, 那么些PRADOPC请求的有个别参数在体现时, 也会被冠以三个名字(nt | rt:
即decode, 解码, 一般的话也是取名也很直白, 比如,
三个interesting 参数, 显示的时候就会一贯是’interesting’, 含义拗口,
需再翻).

那种展现格式的规划初衷为’壹看就懂’, 但对于素不相识AFS 和 库罗德X
工作规律的人恐怕不是很
有用(nt: 依旧永不管, 书面吓吓你的, 往下看就行).

如若 -v(详细)标志被重复给出(nt: 如-vv), tcpdump 会打字与印刷出肯定包(nt:
可领略为, 与应对包有分别的包)以及附加底部音信
(nt: 可领悟为, 全部包, 而不仅仅是承认包的叠加底部音信), 比如, PAJEROX call
ID(请求包中’请求调用’的ID),
call number(‘请求调用’的号码), sequence number(nt: 包顺序号),
serial number(nt | rt: 可见晓为与包中数据相关的另一个顺实信号,
具体意思需补充), 请求包的标识. (nt: 接下来1段为重复描述,
故而略去了), 别的确认包中的MTU协商音讯也会被打字与印刷出来(nt:
确认包为相对于请求包的确认包, 马克西姆um Transmission Unit, 最大传输单元).

比方 -v 选项被再一次了3回(nt: 如-vvv),
那么AFS应用类型数据包的’安全索引'(‘security
index’)以及’服务索引'(‘service id’)将会
被打印.

对此代表十一分的数据包(nt: abort packet, 可见道为,
此包正是用来通知接受者某种非常已发生), tcpdump 会打字与印刷出错误号(error
codes).
但对此Ubik beacon packets(nt: Ubik 灯塔提醒包,
Ubik可知晓为独特的通讯协议, beacon packets, 灯塔数据包,
可驾驭为指明通讯中
一言九鼎消息的局地数据包), 错误号不会被打字与印刷, 因为对于Ubik 协议,
极度数据包不是表示错误, 相反却是表示1种必然答复(nt: 即, yes vote).

AFS 请求数据量大, 参数也多, 所以需求tcpdump的 snaplen 比较大,
壹般可因而运转tcpdump时设置选项’-s 25陆’ 来增大snaplen, 以
监测AFS 应用通讯负载.

AFS 回应包并不显得标识昂CoraPC 属于何种远程调用. 从而, tcpdump
会跟踪近年来一段时间内的乞请包, 并通过call number(调用编号), service ID
(服务目录) 来合营收到的回答包. 假诺回应包不是对准近日1段时间内的央浼包,
tcpdump将无法解析该包.

UDP 数据包

UDP 数据包的显得格式,可透过rwho那么些现实应用所发出的数码包来表达:
actinide.who > broadcast.who: udp 84

其含义为:actinide主机上的端口who向broadcast主机上的端口who发送了1个udp数据包(nt:
actinide和broadcast都以指Internet地址).
以此数额包承载的用户数据为八伍个字节.

1些UDP服务可从数据包的源或目标端口来鉴定识别,也可从所出示的越来越高层协商消息来识别.
比如, Domain Name service requests(DNS 请求,
在LacrosseFC-十3四成3第55中学), 和Sun 昂科威PC calls to
NFS(对NFS服务器所倡导的长途调用(nt: 即Sun
EvoquePC),在奥德赛FC-十50中有对长途调用的讲述).

UDP 名称服务请求

(注意:以下的叙述即便你对Domain Service protoco(nt:在奇骏FC-10三中持有描述),
不然你会意识以下描述就是天书(nt:希腊语(Greece)文天书,
无需理会, 吓吓你的, 接着看就行))

名称服务请求有如下的格式:
src > dst: id op? flags qtype qclass name (len)
(nt: 从下文来看, 格式应该是src > dst: id op flags qtype qclass? name
(len))
譬如有多个实在彰显为:
h2opolo.1538 > helios.domain: 3+ A? ucbvax.berkeley.edu. (37)

长机h二opolo 向helios 上运转的名称服务器查询ucbvax.berkeley.edu
的地方记录(nt: qtype等于A). 此询问自己的id号为’三’. 符号
‘+’意味着递归查询标志被安装(nt:
dns服务器可向更加高层dns服务器询问本服务器不带有的地址记录).
这些最后通过IP包发送的查询请求
多长为三7字节, 个中不蕴含UDP和IP协议的头数据.
因为此询问操作为私下认可值(nt | rt: normal one的接头), op字段被省略.
只要op字段没被略去, 会被显示在’三’ 和’+’之间. 同样, qclass也是暗中认可值,
C_IN, 从而也没被出示, 如若没被忽视, 她会被呈现在’A’之后.

老大检查会在方括中体现出附加的域: 假使多少个询问同时含有二个应对(nt:
可领略为, 对在此之前其余叁个呼吁的答疑), 并且此回应包涵权威或附加记录段, 
ancount, nscout, arcount(nt: 具体字段含义需填补) 将被突显为'[na]’,
‘[nn]’, ‘[nau]’, 个中n代表合适的计数. 假如包中以下
回应位(比如AA位, RA位, rcode位),
大概字节二或3中任何三个’必须为0’的位被置位(nt: 设置为1), ‘[b2&3]=x’
将被出示, 个中x表示
底部字节二与字节叁开始展览与操作后的值.

UDP 名称服务应对

对名称服务应对的数据包,tcpdump会有如下的来得格式
src > dst: id op rcode flags a/n/au type class data (len)
例如具体显示如下:
helios.domain > h2opolo.1538: 3 3/3/7 A 128.32.137.3 (273)
helios.domain > h2opolo.1537: 2 NXDomain* 0/1/0 (97)

先是行代表: helios 对h二opolo 所发送的3号查询请求应对了叁条回复记录(nt |
rt: answer records), 三条名称服务器记录,
以及七条附加的记录. 第三个应答记录(nt: 二个应答记录中的第三个)类型为A(nt:
表示地址), 其数据为internet地址128.3二.一三7.三.
此回应UDP数据包, 包括273字节的数额(不包括UPD和IP的头顶数据).
op字段和rcode字段被忽略(nt: op的实际值为Query, rcode, 即
response code的实际值为NoError), 同样被忽略的字段还有class 字段(nt | rt:
其值为C_IN, 那也是A类型记录私下认可取值)

其次行代表: helios 对h二opolo 所发送的二号查询请求做了回应. 回应中,
rcode编码为NXDomain(nt: 表示不设有的域)), 未有回答记录,
但含有3个称号服务器记录, 不含有权威服务器记录(nt | ck: 从上文来看,
此处的authority records 正是上文中对应的additional
records). ‘*’表示权威服务器回答标志被安装(nt: 从而additional
records就意味着的是authority records).
鉴于未有回答记录, type, class, data字段都被忽略.

flag字段还有非常的大概率出现其余部分字符, 比如’-‘(nt: 表示可递归地询问, 即RA
标志未有被安装), ‘|'(nt: 表示被截断的新闻, 即TC 标志
被置位). 假设答应(nt | ct: 可见道为, 包括名称服务应对的UDP数据包,
tcpdump知道那类数据包该怎样解析其数额)的’question’段一个条
目(entry)都不分包(nt: 各个条指标意义, 需补充),'[nq]’ 会被打字与印刷出来.

要专注的是:名称服务器的请求和回答数据量相比较大,
而私下认可的68字节的抓取长度(nt: snaplen,
可精晓为tcpdump的1个设置选项)大概不足以抓取
数据包的满贯内容. 假使您实在供给仔细查阅名称服务器的负荷,
能够经过tcpdump 的-s 选项来增添snaplen值.

KIP AppleTalk协议

(nt | rt: DDP in UDP可明白为, DDP, The AppleTalk Data Delivery
Protocol,
一定于支撑KIP AppleTalk协议栈的网络层协议, 而DDP
自个儿又是通过UDP来传输的,
即在UDP 上落实的用来别的网络的互连网层,KIP
AppleTalk是苹果公司支付的一体互连网协议栈).

AppleTalk DDP 数据包被封装在UDP数据包中, 其解封装(nt:
约等于解码)和对应新闻的转储也根据DDP 包规则.
(nt:encapsulate, 封装, 约等于编码, de-encapsulate, 解封装, 约等于解码,
dump, 转储, 平常正是指对其音讯举行打字与印刷).

/etc/atalk.names 文件中蕴藏了AppleTalk
网络和节点的数字标识到名称的对应关系. 其文件格式平日如下所示:
number name

1.254 ether
16.1 icsd-net
1.254.110 ace

头两行代表有多个AppleTalk 互连网.
第一行提交了特定网络上的主机(1个主机会用二个字节来标识,
而一个互联网的标识经常唯有七个字节, 这也是两者标识的根本差异)(nt:
一.25四.110 可分晓为ether网络上的ace主机).
标识与其对应的名字之间必要求用空白分开. 除了上述内容,
/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 文件不存在, 只怕未有相应AppleTalk 主机/网络的条目,
数据包的互连网地址将以数字情势显得).

在第一行中,
互连网144.一上的节点20玖通过二端口,向互联网icsd-net上监听在220端口的11贰节点发送了三个NBP应用数据包
(nt | rt: NBP, name binding protocol, 名称绑定协议, 从数量来看,
NBP服务器会在端口二提供此服务.
‘DDP port 二’ 可驾驭为’DDP 对应传输层的端口2′, DDP本人并没有端口的概念,
那点未规定, 需补充).

第2行与第2行类似, 只是源的总体地方可用’office’举行标识.
其叁行代表:
jssmag网络上的14玖节点通过23五向icsd-net互联网上的有所节点的贰端口(NBP端口)发送了数码包.(供给留意的是,
在AppleTalk 互联网中假使地方中尚无节点, 则表示广播地址,
从而节点标识和网络标识最佳在/etc/atalk.names有所差异.
nt: 不然2个标识x.port
不恐怕分明x是指1个网络上具备主机的port口照旧指定主机x的port口).

tcpdump 可分析NBP (名称绑定协议) and 木质素酸 (AppleTalk传输协议)数据包,
对于其余应用层的商业事务, 只会打印出相应协议名字(
设若此协议未有登记1个通用名字, 只会打字与印刷其协议号)以及数据包的大小.

NBP 数据包会依据如下格式展现:
icsd-net.112.220 > jssmag.2: nbp-lkup 190: “=:LaserWriter@*”
jssmag.209.2 > icsd-net.112.220: nbp-reply 190:
“RM1140:LaserWriter@*” 250
techpit.2 > icsd-net.112.220: nbp-reply 190: “techpit:LaserWriter@*”
186

第二行表示: 网络icsd-net 中的节点112 通过220端口向网络jssmag
中负有节点的端口贰发送了对’LaserWriter’的名称查询请求(nt:
此地名称可分晓为三个能源的称呼, 比如打字与印刷机). 此询问请求的种类号为190.

第叁行表示: 网络jssmag 中的节点20九通过2端口向icsd-net.11二节点的端口220展开了回应: 笔者有’LaserWriter’财富,
其财富名称
为’奥迪Q7M1140′, 并且在端口250上提供改财富的服务. 此回答的体系号为190,
对应事先查询的行列号.

其三行也是对第二行请求的答应: 节点techpit
通过二端口向icsd-net.112节点的端口220拓展了应对:作者有’LaserWriter’财富,
其能源名称
为’techpit’, 并且在端口1八陆上提供改财富的服务. 此回应的系列号为190,
对应事先查询的体系号.

木质素酸 数据包的展现格式如下:
jssmag.209.165 > helios.132: atp-req 12266<0-7> 0xae030001
helios.132 > jssmag.209.165: atp-resp 12266:0 (512) 0xae040000
helios.132 > jssmag.209.165: atp-resp 12266:1 (512) 0xae040000
helios.132 > jssmag.209.165: atp-resp 12266:2 (512) 0xae040000
helios.132 > jssmag.209.165: atp-resp 12266:3 (512) 0xae040000
helios.132 > jssmag.209.165: atp-resp 12266:5 (512) 0xae040000
helios.132 > jssmag.209.165: atp-resp 12266:6 (512) 0xae040000
helios.132 > jssmag.209.165: atp-resp*12266:7 (512) 0xae040000
jssmag.209.165 > helios.132: atp-req 12266<3,5> 0xae030001
helios.132 > jssmag.209.165: atp-resp 12266:3 (512) 0xae040000
helios.132 > jssmag.209.165: atp-resp 12266:5 (512) 0xae040000
jssmag.209.165 > helios.132: atp-rel 12266<0-7> 0xae030001
jssmag.209.133 > helios.132: atp-req* 12267<0-7> 0xae030002

先是行代表节点 Jssmag.209 向节点helios
发送了一个会话编号为1226六的央求包, 请求helios
回应七个数据包(这些数据包的顺序号为0-七(nt: 顺序号与会话编号分裂,
后者为一次完整传输的数码,
前端为该传输中每一个数据包的编号. transaction, 会话, 平日也被叫做传输)).
行尾的1陆进制数字代表
该请求包中’userdata’域的值(nt: 从下文来看,
那并不曾把具备用户数据都打字与印刷出来 ).

Helios 回应了九个51二字节的数目包. 跟在对话编号(nt:
1226陆)后的数字代表该数量包在该会话中的顺序号.
括号中的数字代表该数量包中数据的高低, 那不包含atp 的底部.
在顺序号为七数据包(第八行)外带了八个’*’号,
代表该数据包的EOM 标志棉被服装置了.(nt: EOM, End Of Media, 可见道为,
表示一回对话的数据回应完成).

接下去的第拾行代表, Jssmag.20玖 又向helios 提出了请求:
顺序号为三以及伍的多寡包请重新传送. Helios 收到那个
请求后重新发送了这一个八个数据包, jssmag.20九 再度接到那三个数据包之后,
主动甘休(release)了此会话.

在最终1行, jssmag.20玖 向helios 发送了开端下1次对话的呼吁包.
请求包中的’*’表示该包的XO 标志未有被设置.
(nt: XO, exactly once, 可精晓为在该会话中,
数据包在接受者只被准确无误地拍卖一回, 固然对方再也传送了该数据包,
接收方也只会处理叁次, 那亟需利用尤其企划的数据包接收和拍卖体制).

SMB/CIFS 解码

tcpdump 已足以对SMB/CIFS/NBT相关应用的数额包内容举行解码(nt:
分别为’Server Message Block Common’, ‘Internet File System’
‘在TCP/IP上贯彻的网络协议NETBIOS的简称’.
那个劳务普通接纳UDP的137/13八以及TCP的13九端口). 原来的对IPX和NetBEUI
SMB数据包的
解码能力依然得以被选用(nt: NetBEUI为NETBIOS的增强版本).

tcpdump暗中同意只依照最简便方式对相应数额包进行解码,
借使大家想要详尽的解码消息方可采取其-v 运营选现. 要留意的是, -v
会爆发至极详细的新闻,
譬如对纯粹的叁个SMB数据包, 将发生一显示器或更加多的音讯, 所以此选项,
确有须求才使用.

有关SMB数据包格式的音讯, 以及各样域的含义能够参考www.cifs.org
或然samba.org 镜像站点的pub/samba/specs/ 目录. linux 上的SMB 补丁
(nt | rt: patch)由 Andrew Tridgell (tridge@samba.org)提供.

NFS 请求和回应

tcpdump对Sun
NFS(互联网文件系统)请求和回复的UDP数据包有如下格式的打字与印刷输出:
src.xid > dst.nfs: len op args
src.nfs > dst.xid: reply stat len op results

以下是一组具体的出口数据
sushi.6709 > wrl.nfs: 112 readlink fh 21,24/10.73165
wrl.nfs > sushi.6709: reply ok 40 readlink “../var”
sushi.201b > wrl.nfs:
144 lookup fh 9,74/4096.6878 “xcolors”
wrl.nfs > sushi.201b:
reply ok 128 lookup fh 9,74/4134.3150

第一行输出申明: 主机sushi向长机wrl发送了1个’调换请求'(nt: transaction),
此请求的id为670玖(注意, 主机名字后是换到
恳请id号, 而不是源端口号). 此恳请数据为11二字节,
个中不包罗UDP和IP底部的长度. 操作类型为readlink(nt:
即此操作为读符号链接操作),
操作参数为fh 二1,24/十.73165(nt: 可按实际运转环境, 解析如下, fd
代表描述的为文件句柄, 二壹,二4 表示此句柄所对应设
备的主/从设备号对,
十代表此句柄所对应的i节点编号(nt:种种文件都会在操作系统中对应三个i节点,
限于unix类系统中),
73165是二个号码(nt: 可明白为标识此请求的贰个四意数, 具体意思需补充)).

第3行中, wrl 做了’ok’的答疑, 并且在results
字段中回到了sushi想要读的记号连接的真实性目录(nt:
即sushi供给读的符号连接其实是八个目录).

其叁行注脚: sushi 再度请求 wrl 在’fh
玖,74/40九六.687八’所描述的目录中查找’xcolors’文件. 需求小心的是,
每行所展现的多寡含义重视于在那之中op字段的
品种(nt: 不一致op 所对应args 含义不均等), 其格式遵从NFS 研商,
追求简洁明了.

假定tcpdump 的-v选项(详细打字与印刷选项) 被安装, 附加的新闻将被展现. 比如:
sushi.1372a > wrl.nfs:
148 read fh 21,11/12.195 8192 bytes @ 24576
wrl.nfs > sushi.1372a:
reply ok 1472 read REG 100664 ids 417/0 sz 29388

(-v 选项一般还会打字与印刷出IP尾部的TTL, ID, length, 以及fragmentation 域,
但在此例中, 都略过了(nt: 可领略为,简洁起见, 做了删减))
在第3行, sushi 请求wrl 从文件 二一,11/12.1九伍(nt: 格式在上边有描述)中,
自偏移2457陆字节处初阶, 读取819贰字节数据.
Wrl 回应读取成功; 由于第一行只是回答请求的开首片段,
所以只含有147贰字节(其余的多寡将在跟着的reply片段中来到,
但那么些数据包不会再有NFS
头, 甚至UDP头音讯也为空(nt: 源和指标应该要有),
那将招致那个片段不可能满意过滤条件, 从而未有被打字与印刷). -v
选项除了展现文件数据消息, 还会展现
外加突显文件属性消息: file type(文件类型, ”REG” 表示平时文书), file
mode(文件存取格局, 8进制表示的), uid 和gid(nt: 文件属主和
组属主), file size (文件大小).

1旦-v 标志被多次重复给出(nt: 如-vv), tcpdump会呈现越发详实的音信.

必须求留意的是, NFS 请求包中数据比较多, 假如tcpdump 的snaplen(nt:
抓取长度) 取太短将无法显得其详细消息. 可选用
‘-s 1九二’来充实snaplen, 那可用以监测NFS应用的互连网负载(nt: traffic).

NFS 的对答包并不严格的紧随在此之前相应的呼吁包(nt: 福睿斯PC operation). 从而,
tcpdump 会跟踪近日接收的一文山会海请求包, 再经过其
调换序号(nt: transaction ID)与相应请求包相相配. 那说不定产生两个题材,
假诺回应包来得太迟, 超出tcpdump 对相应请求包的跟踪范围,
该回应包将不能够被分析.

IP 数据包破碎

(nt: 指把多少个IP数据包分成三个IP数据包)

散装IP数据包(nt:
即3个大的IP数据包破碎后变更的小IP数据包)有如下二种突显格式.
(frag id:size@offset+)
(frag id:size@offset)
(第2种格式表示, 此碎片之后还有继续碎片. 第三种格式表示,
此碎片为末段三个碎片.)

id 代表破碎编号(nt: 从下文来看, 会为各样要破碎的大IP包分配二个破碎编号,
以便区分各类小碎片是还是不是由同样数据包破碎而来).
size 代表此碎片的大小 , 不含有碎片尾部数据.
offset表示此碎片所含数据在原始整个IP包中的偏移((nt: 从下文来看,
一个IP数据包是作为二个全部被破碎的, 包含头和数据, 而不只是数据被剪切).

种种碎片都会使tcpdump发生相应的输出打字与印刷.
第一个七零8落包涵了高层磋商的头数据(nt:从下文来看,
被破碎IP数据包中相应tcp头以及
IP头都坐落了第4个七零八落中 ), 从而tcpdump会针对第2个七零8落突显那几个消息,
并接着呈现此碎片本身的消息. 其后的局地散装并不分包
高层协商头音讯, 从而只会在展现源和指标之后显得碎片本身的新闻.
以下有三个事例: 那是三个从arizona.edu 到lbl-rtsg.arpa
途经CSNET互连网(nt: CSNET connection 可见道为确立在CSNET
互联网上的连天)的ftp应用通讯片段:
arizona.ftp-data > rtsg.1170: . 1024:1332(308) ack 1 win 4096 (frag
595a:328@0+)
arizona > rtsg: (frag 595a:204@328)
rtsg.1170 > arizona.ftp-data: . ack 1536 win 2560

有几点值得注意:
第三, 第壹行的打字与印刷中, 地址前边未有端口号.
那是因为TCP协议音信都放到了第多个七零八落中, 当显示第一个七零8落时,
大家无能为力精晓此碎片所对应TCP包的次第号.

第1, 从第一行的消息中, 能够窥见arizona要求向rtsg发送30八字节的用户数量,
而事实是, 相应IP包经破碎后会总共爆发512字节
多少(第多个七零8落包涵30八字节的多少, 第叁个七零捌落包含20陆个字节的多寡,
那超越了308字节). 假设您在搜索数据包的顺序号空间中的
局地浮泛(nt: hole,空洞, 指数据包之间的顺序号未有前后衔接上),
51贰以此数据就足足使您迷茫壹阵(nt: 其实假若关切30八就行,
不用关心破碎后的数码总量).

3个数据包(nt | rt: 指IP数据包)要是含有非IP破碎标志,
则呈现时会在终极显示'(DF)’.(nt: 意味着此IP包未有被破碎过).

AFS 请求和回复

AFS(nt: 安德鲁 文件系统, Transarc , 未知, 需补充)请求和回应该如下的允诺

src.sport > dst.dport: rx packet-type
src.sport > dst.dport: rx packet-type service call call-name args
src.sport > dst.dport: rx packet-type service reply call-name args

elvis.7001 > pike.afsfs:
rx data fs call rename old fid 536876964/1/1 “.newsrc.new”
new fid 536876964/1/1 “.newsrc”
pike.afsfs > elvis.7001: rx data fs reply rename

在率先行, 主机elvis 向pike 发送了三个奥迪Q5X数据包.
那是2个对此文本服务的央求数据包(nt: 大切诺基X data packet, 发送数据包 ,
可精晓为发送包过去, 从而请求对方的劳务), 那也是二个LANDPC
调用的启幕(nt: 奔驰G级PC, remote procedure call). 此福特ExplorerPC 请求pike
执行rename(nt: 重命名) 操作, 并钦点了连带的参数:
原目录描述符为536876964/1/一, 原版的书文件名称为 ‘.newsrc.new’,
新目录描述符为536876964/1/壹, 新文件名叫 ‘.newsrc’.
长机pike 对此rename操作的索罗德PC请求作了答复(回应表示rename操作成功,
因为回应的是富含数据内容的包而不是非常包).

诚如的话, 全部的’AFS 中华VPC’请求被展现时, 会被冠以贰个名字(nt: 即decode,
解码), 这一个名字往往就是安德拉PC请求的操作名.
再者, 这个EvoquePC请求的一些参数在展现时, 也会被冠以3个名字(nt | rt:
即decode, 解码, 1般的话也是取名也很直白, 比如,
三个interesting 参数, 展现的时候就会直接是’interesting’, 含义拗口,
需再翻).

那种突显格式的布置性初衷为’一看就懂’, 但对于面生AFS 和 牧马人X
工作原理的人也许不是很
有用(nt: 照旧并非管, 书面吓吓你的, 往下看就行).

一旦 -v(详细)标志被另行给出(nt: 如-vv), tcpdump 会打字与印刷出肯定包(nt:
可领悟为, 与回复包有分其余包)以及附加尾部音信
(nt: 可清楚为, 全数包, 而不光是确认包的叠加头部音讯), 比如, WranglerX call
ID(请求包中’请求调用’的ID),
call number(‘请求调用’的数码), sequence number(nt: 包顺序号),
serial number(nt | rt: 可分晓为与包中数据有关的另3个顺时限信号,
具体意思需填补), 请求包的标识. (nt: 接下来壹段为再次描述,
于是略去了), 其余确认包中的MTU协商音信也会被打字与印刷出来(nt:
确认包为相对于请求包的认可包, 马克西姆um Transmission Unit, 最大传输单元).

如若 -v 选项被另行了三回(nt: 如-vvv),
那么AFS应用类型数据包的’安全索引'(‘security
index’)以及’服务索引'(‘service id’)将会
被打印.

对此代表格外的数据包(nt: abort packet, 可通晓为,
此包正是用来打招呼接受者某种万分已发出), tcpdump 会打字与印刷出错误号(error
codes).
但对于Ubik beacon packets(nt: Ubik 灯塔提醒包,
Ubik可领略为优秀的通讯协议, beacon packets, 灯塔数据包,
可分晓为指明通讯中
最主要音讯的有个别数据包), 错误号不会被打字与印刷, 因为对于Ubik 协议,
很是数据包不是意味错误, 相反却是表示一种必然答应(nt: 即, yes vote).

AFS 请求数据量大, 参数也多, 所以供给tcpdump的 snaplen 相比大,
1般可经过运行tcpdump时设置选项’-s 25陆’ 来增大snaplen, 以
监测AFS 应用通讯负载.

AFS 回应包并不出示标识科雷傲PC 属于何种远程调用. 从而, tcpdump
会跟踪近来1段时间内的伸手袋, 并通过call number(调用编号), service ID
(服务索引) 来合营收到的回答包. 假使回应包不是对准近期一段时间内的乞请包,
tcpdump将不能解析该包.

时间戳

tcpdump的兼具出口打字与印刷行中都会私下认可包涵时间戳新闻.
光阴戳音信的呈现格式如下
hh:mm:ss.frac (nt: 小时:分钟:秒.(nt: frac未知, 需补充))
此时间戳的精度与根本时间精度1致, 反映的是水源第三重放到相应数据包的日子(nt:
saw, 即可对该数额包实行操作). 
而数据包从物理线路传递到基本的时间,
以及水源开支在此包上的暂停处理时间都未有算进来.

 

KIP AppleTalk协议

(nt | rt: DDP in UDP可明白为, DDP, The AppleTalk Data Delivery
Protocol,
一定于支撑KIP AppleTalk协议栈的网络层协议, 而DDP
本人又是经过UDP来传输的,
即在UDP 上落到实处的用于其余互连网的互连网层,KIP
AppleTalk是苹果公司支付的1体网络协议栈).

AppleTalk DDP 数据包被封装在UDP数据包中, 其解封装(nt:
也等于解码)和相应消息的转储也如约DDP 包规则.
(nt:encapsulate, 封装, 约等于编码, de-encapsulate, 解封装, 也正是解码,
dump, 转储, 平时便是指对其新闻举行打印).

/etc/atalk.names 文件中蕴涵了AppleTalk
网络和节点的数字标识到名称的应和关系. 其文件格式平时如下所示:
number name

1.254 ether
16.1 icsd-net
1.254.110 ace

头两行表示有七个AppleTalk 互连网.
第一行提交了一定网络上的主机(3个主机会用三个字节来标识,
而2个网络的标识平日唯有五个字节, 那也是相互标识的要害不一样)(nt:
1.25四.1十 可见晓为ether互联网上的ace主机).
标识与其对应的名字之间要求求用空白分开. 除了上述内容,
/etc/atalk.names中还含有空行以及注释行(以’#’早先的行).

AppleTalk 完整网络地址将以如下格式突显:
net.host.port

以下为1段具体彰显:
144.1.209.2 > icsd-net.112.220
office.2 > icsd-net.112.220
jssmag.149.235 > icsd-net.2

(倘使/etc/atalk.names 文件不设有, 也许未有相应AppleTalk 主机/网络的条规,
数据包的网络地址将以数字方式突显).

在率先行中,
网络14肆.1上的节点20九经过2端口,向互连网icsd-net上监听在220端口的11二节点发送了1个NBP应用数据包
(nt | rt: NBP, name binding protocol, 名称绑定协议, 从数据来看,
NBP服务器会在端口二提供此服务.
‘DDP port 二’ 可见道为’DDP 对应传输层的端口2′, DDP本人并未有端口的定义,
那一点未规定, 需补充).

其次行与第3行类似, 只是源的任哪里方可用’office’实行标识.
其叁行代表:
jssmag互连网上的14九节点通过23伍向icsd-net网络上的保有节点的2端口(NBP端口)发送了数额包.(供给小心的是,
在AppleTalk 互联网中假设地点中未有节点, 则象征广播地址,
从而节点标识和互连网标识最佳在/etc/atalk.names有所不同.
nt: 否则3个标识x.port
不能够显明x是指一个互联网上存有主机的port口依旧内定主机x的port口).

tcpdump 可分析NBP (名称绑定协议) and 木质素酸 (AppleTalk传输协议)数据包,
对于其他应用层的磋商, 只会打字与印刷出相应协议名字(
若果此协议未有挂号二个通用名字, 只会打字与印刷其协议号)以及数据包的大小.

NBP 数据包会根据如下格式展现:
icsd-net.112.220 > jssmag.2: nbp-lkup 190: “=:LaserWriter@*”
jssmag.209.2 > icsd-net.112.220: nbp-reply 190:
“RM1140:LaserWriter@*” 250
techpit.2 > icsd-net.112.220: nbp-reply 190: “techpit:LaserWriter@*”
186

先是行代表: 网络icsd-net 中的节点11贰 通过220端口向互连网jssmag
中全数节点的端口二发送了对’LaserWriter’的称谓查询请求(nt:
此间名称可见晓为二个财富的称号, 比如打字与印刷机). 此询问请求的种类号为190.

其次行代表: 网络jssmag 中的节点209通过二端口向icsd-net.11贰节点的端口220进行了应对: 笔者有’LaserWriter’财富,
其财富名称
为’QX56M1140′, 并且在端口250上提供改能源的服务. 此回答的连串号为190,
对应事先查询的行列号.

其3行也是对第三行请求的应对: 节点techpit
通过二端口向icsd-net.11二节点的端口220进展了答复:笔者有’LaserWriter’能源,
其能源名称
为’techpit’, 并且在端口1八陆上提供改财富的服务. 此回应的连串号为190,
对应事先查询的体系号.

ATP 数据包的来得格式如下:
jssmag.209.165 > helios.132: atp-req 12266<0-7> 0xae030001
helios.132 > jssmag.209.165: atp-resp 12266:0 (512) 0xae040000
helios.132 > jssmag.209.165: atp-resp 12266:1 (512) 0xae040000
helios.132 > jssmag.209.165: atp-resp 12266:2 (512) 0xae040000
helios.132 > jssmag.209.165: atp-resp 12266:3 (512) 0xae040000
helios.132 > jssmag.209.165: atp-resp 12266:5 (512) 0xae040000
helios.132 > jssmag.209.165: atp-resp 12266:6 (512) 0xae040000
helios.132 > jssmag.209.165: atp-resp*12266:7 (512) 0xae040000
jssmag.209.165 > helios.132: atp-req 12266<3,5> 0xae030001
helios.132 > jssmag.209.165: atp-resp 12266:3 (512) 0xae040000
helios.132 > jssmag.209.165: atp-resp 12266:5 (512) 0xae040000
jssmag.209.165 > helios.132: atp-rel 12266<0-7> 0xae030001
jssmag.209.133 > helios.132: atp-req* 12267<0-7> 0xae030002

首先行代表节点 Jssmag.20玖 向节点helios
发送了三个会话编号为1226六的呼吁包, 请求helios
回应8个数据包(那八个数据包的顺序号为0-七(nt: 顺序号与会话编号不一样,
后者为1遍完整传输的编号,
前端为该传输中种种数据包的编号. transaction, 会话, 经常也被称为传输)).
行尾的16进制数字代表
该请求包中’userdata’域的值(nt: 从下文来看,
那并不曾把具有用户数据都打字与印刷出来 ).

Helios 回应了7个512字节的数据包. 跟在对话编号(nt:
1226陆)后的数字代表该多少包在该会话中的顺序号.
括号中的数字代表该多少包中数据的轻重缓急, 那不包蕴atp 的底部.
在顺序号为柒数据包(第八行)外带了一个’*’号,
代表该数据包的EOM 标志棉被服装置了.(nt: EOM, End Of Media, 可清楚为,
表示三回对话的多少回应实现).

接下去的第八行代表, Jssmag.20九 又向helios 提议了请求:
顺序号为三以及5的数码包请重新传送. Helios 收到这一个
呼吁后再行发送了这么些多少个数据包, jssmag.20九 再次收到这五个数据包之后,
主动甘休(release)了此会话.

在终极一行, jssmag.20九 向helios 发送了启幕下1回对话的伸托特包.
请求包中的’*’表示该包的XO 标志未有被设置.
(nt: XO, exactly once, 可了解为在该会话中,
数据包在接受者只被准确无误地拍卖二遍, 固然对方再度传送了该数据包,
接收方也只会处理三回, 那要求使用尤其规划的多少包接收和处理体制).

命令使用

tcpdump选择命令行格局,它的指令格式为:

图片 1

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 ]

图片 2

IP 数据包破碎

(nt: 指把3个IP数据包分成三个IP数据包)

零星IP数据包(nt:
即1个大的IP数据包破碎后转移的小IP数据包)有如下三种显示格式.
(frag id:size@offset+)
(frag id:size@offset)
(第二种格式表示, 此碎片之后还有继续碎片. 第二种格式表示,
此碎片为尾声2个碎片.)

id 表示破碎编号(nt: 从下文来看, 会为每个要破碎的大IP包分配3个破烂不堪编号,
以便区分各样小碎片是不是由同样数据包破碎而来).
size 代表此碎片的大小 , 不含有碎片底部数据.
offset表示此碎片所含数据在原本整个IP包中的偏移((nt: 从下文来看,
二个IP数据包是作为3个完全被破碎的, 包蕴头和数码, 而不只是数额被分割).

各种碎片都会使tcpdump发生相应的输出打字与印刷.
第三个七零8落包括了高层磋商的头数据(nt:从下文来看,
被破碎IP数据包中相应tcp头以及
IP头都置身了第三个七零捌落中 ), 从而tcpdump会针对第三个七零8落展现那几个新闻,
并接着彰显此碎片自身的音讯. 其后的有个别零碎并不带有
高层磋商头音讯, 从而只会在呈现源和指标之后显得碎片自身的音讯.
以下有三个事例: 这是多个从arizona.edu 到lbl-rtsg.arpa
途经CSNET互联网(nt: CSNET connection 可见道为确立在CSNET
网络上的总是)的ftp应用通信片段:
arizona.ftp-data > rtsg.1170: . 1024:1332(308) ack 1 win 4096 (frag
595a:328@0+)
arizona > rtsg: (frag 595a:204@328)
rtsg.1170 > arizona.ftp-data: . ack 1536 win 2560

有几点值得注意:
首先, 第叁行的打印中, 地址前面未有端口号.
那是因为TCP协议音信都放到了第二个七零8落中, 当突显第3个七零捌落时,
大家无能为力精晓此碎片所对应TCP包的逐条号.

第3, 从第二行的新闻中, 能够发现arizona须要向rtsg发送308字节的用户数据,
而事实是, 相应IP包经破碎后会总共爆发512字节
数码(第三个七零8落包括30捌字节的数目, 首个七零捌落包罗20多少个字节的数码,
那当先了30八字节). 借使你在寻找数据包的顺序号空间中的
部分空洞(nt: hole,空洞, 指数据包之间的顺序号未有前后衔接上),
51二那些数额就丰裕使你迷茫一阵(nt: 其实只要关心30八就行,
不要关心破碎后的数据总量).

3个数据包(nt | rt: 指IP数据包)假若带有非IP破碎标志,
则突显时会在终极突显'(DF)’.(nt: 意味着此IP包未有被破碎过).

tcpdump的差不多选取介绍

图片 3

-A  以ASCII码方式显示每一个数据包(不会显示数据包中链路层头部信息). 在抓取包含网页数据的数据包时, 可方便查看数据(nt: 即Handy for capturing web pages).

-c  count
    tcpdump将在接受到count个数据包后退出.

-C  file-size (nt: 此选项用于配合-w file 选项使用)
    该选项使得tcpdump 在把原始数据包直接保存到文件中之前, 检查此文件大小是否超过file-size. 如果超过了, 将关闭此文件,另创一个文件继续用于原始数据包的记录. 新创建的文件名与-w 选项指定的文件名一致, 但文件名后多了一个数字.该数字会从1开始随着新创建文件的增多而增加. file-size的单位是百万字节(nt: 这里指1,000,000个字节,并非1,048,576个字节, 后者是以1024字节为1k, 1024k字节为1M计算所得, 即1M=1024 * 1024 = 1,048,576)

-d  以容易阅读的形式,在标准输出上打印出编排过的包匹配码, 随后tcpdump停止.(nt | rt: human readable, 容易阅读的,通常是指以ascii码来打印一些信息. compiled, 编排过的. packet-matching code, 包匹配码,含义未知, 需补充)

-dd 以C语言的形式打印出包匹配码.

-ddd 以十进制数的形式打印出包匹配码(会在包匹配码之前有一个附加的'count'前缀).

-D  打印系统中所有tcpdump可以在其上进行抓包的网络接口. 每一个接口会打印出数字编号, 相应的接口名字, 以及可能的一个网络接口描述. 其中网络接口名字和数字编号可以用在tcpdump 的-i flag 选项(nt: 把名字或数字代替flag), 来指定要在其上抓包的网络接口.

    此选项在不支持接口列表命令的系统上很有用(nt: 比如, Windows 系统, 或缺乏 ifconfig -a 的UNIX系统); 接口的数字编号在windows 2000 或其后的系统中很有用, 因为这些系统上的接口名字比较复杂, 而不易使用.

    如果tcpdump编译时所依赖的libpcap库太老,-D 选项不会被支持, 因为其中缺乏 pcap_findalldevs()函数.

-e  每行的打印输出中将包括数据包的数据链路层头部信息

-E  spi@ipaddr algo:secret,...

    可通过spi@ipaddr algo:secret 来解密IPsec ESP包(nt | rt:IPsec Encapsulating Security Payload,IPsec 封装安全负载, IPsec可理解为, 一整套对ip数据包的加密协议, ESP 为整个IP 数据包或其中上层协议部分被加密后的数据,前者的工作模式称为隧道模式; 后者的工作模式称为传输模式 . 工作原理, 另需补充).

    需要注意的是, 在终端启动tcpdump 时, 可以为IPv4 ESP packets 设置密钥(secret).

    可用于加密的算法包括des-cbc, 3des-cbc, blowfish-cbc, rc3-cbc, cast128-cbc, 或者没有(none).默认的是des-cbc(nt: des, Data Encryption Standard, 数据加密标准, 加密算法未知, 另需补充).secret 为用于ESP 的密钥, 使用ASCII 字符串方式表达. 如果以 0x 开头, 该密钥将以16进制方式读入.

    该选项中ESP 的定义遵循RFC2406, 而不是 RFC1827. 并且, 此选项只是用来调试的, 不推荐以真实密钥(secret)来使用该选项, 因为这样不安全: 在命令行中输入的secret 可以被其他人通过ps 等命令查看到.

    除了以上的语法格式(nt: 指spi@ipaddr algo:secret), 还可以在后面添加一个语法输入文件名字供tcpdump 使用(nt:即把spi@ipaddr algo:secret,... 中...换成一个语法文件名). 此文件在接受到第一个ESP 包时会打开此文件, 所以最好此时把赋予tcpdump 的一些特权取消(nt: 可理解为, 这样防范之后, 当该文件为恶意编写时,不至于造成过大损害).

-f  显示外部的IPv4 地址时(nt: foreign IPv4 addresses, 可理解为, 非本机ip地址), 采用数字方式而不是名字.(此选项是用来对付Sun公司的NIS服务器的缺陷(nt: NIS, 网络信息服务, tcpdump 显示外部地址的名字时会用到她提供的名称服务): 此NIS服务器在查询非本地地址名字时,常常会陷入无尽的查询循环).

    由于对外部(foreign)IPv4地址的测试需要用到本地网络接口(nt: tcpdump 抓包时用到的接口)及其IPv4 地址和网络掩码. 如果此地址或网络掩码不可用, 或者此接口根本就没有设置相应网络地址和网络掩码(nt: linux 下的 'any' 网络接口就不需要设置地址和掩码, 不过此'any'接口可以收到系统中所有接口的数据包), 该选项不能正常工作.

-F  file
    使用file 文件作为过滤条件表达式的输入, 此时命令行上的输入将被忽略.

-i  interface

    指定tcpdump 需要监听的接口.  如果没有指定, tcpdump 会从系统接口列表中搜寻编号最小的已配置好的接口(不包括 loopback 接口).一但找到第一个符合条件的接口, 搜寻马上结束.

    在采用2.2版本或之后版本内核的Linux 操作系统上, 'any' 这个虚拟网络接口可被用来接收所有网络接口上的数据包(nt: 这会包括目的是该网络接口的, 也包括目的不是该网络接口的). 需要注意的是如果真实网络接口不能工作在'混杂'模式(promiscuous)下,则无法在'any'这个虚拟的网络接口上抓取其数据包.

    如果 -D 标志被指定, tcpdump会打印系统中的接口编号,而该编号就可用于此处的interface 参数.

-l  对标准输出进行行缓冲(nt: 使标准输出设备遇到一个换行符就马上把这行的内容打印出来).在需要同时观察抓包打印以及保存抓包记录的时候很有用. 比如, 可通过以下命令组合来达到此目的:
    ``tcpdump  -l  |  tee dat'' 或者 ``tcpdump  -l   > dat  &  tail  -f  dat''.(nt: 前者使用tee来把tcpdump 的输出同时放到文件dat和标准输出中, 而后者通过重定向操作'>', 把tcpdump的输出放到dat 文件中, 同时通过tail把dat文件中的内容放到标准输出中)

-L  列出指定网络接口所支持的数据链路层的类型后退出.(nt: 指定接口通过-i 来指定)

-m  module
    通过module 指定的file 装载SMI MIB 模块(nt: SMI,Structure of Management Information, 管理信息结构MIB, Management Information Base, 管理信息库. 可理解为, 这两者用于SNMP(Simple Network Management Protoco)协议数据包的抓取. 具体SNMP 的工作原理未知, 另需补充).

    此选项可多次使用, 从而为tcpdump 装载不同的MIB 模块.

-M  secret  如果TCP 数据包(TCP segments)有TCP-MD5选项(在RFC 2385有相关描述), 则为其摘要的验证指定一个公共的密钥secret.

-n  不对地址(比如, 主机地址, 端口号)进行数字表示到名字表示的转换.

-N  不打印出host 的域名部分. 比如, 如果设置了此选现, tcpdump 将会打印'nic' 而不是 'nic.ddn.mil'.

-O  不启用进行包匹配时所用的优化代码. 当怀疑某些bug是由优化代码引起的, 此选项将很有用.

-p  一般情况下, 把网络接口设置为非'混杂'模式. 但必须注意 , 在特殊情况下此网络接口还是会以'混杂'模式来工作; 从而, '-p' 的设与不设, 不能当做以下选现的代名词:'ether host {local-hw-add}' 或  'ether broadcast'(nt: 前者表示只匹配以太网地址为host 的包, 后者表示匹配以太网地址为广播地址的数据包).

-q  快速(也许用'安静'更好?)打印输出. 即打印很少的协议相关信息, 从而输出行都比较简短.

-R  设定tcpdump 对 ESP/AH 数据包的解析按照 RFC1825而不是RFC1829(nt: AH, 认证头, ESP, 安全负载封装, 这两者会用在IP包的安全传输机制中). 如果此选项被设置, tcpdump 将不会打印出'禁止中继'域(nt: relay prevention field). 另外,由于ESP/AH规范中没有规定ESP/AH数据包必须拥有协议版本号域,所以tcpdump不能从收到的ESP/AH数据包中推导出协议版本号.

-r  file
    从文件file 中读取包数据. 如果file 字段为 '-' 符号, 则tcpdump 会从标准输入中读取包数据.

-S  打印TCP 数据包的顺序号时, 使用绝对的顺序号, 而不是相对的顺序号.(nt: 相对顺序号可理解为, 相对第一个TCP 包顺序号的差距,比如, 接受方收到第一个数据包的绝对顺序号为232323, 对于后来接收到的第2个,第3个数据包, tcpdump会打印其序列号为1, 2分别表示与第一个数据包的差距为1 和 2. 而如果此时-S 选项被设置, 对于后来接收到的第2个, 第3个数据包会打印出其绝对顺序号:232324, 232325).

-s  snaplen
    设置tcpdump的数据包抓取长度为snaplen, 如果不设置默认将会是68字节(而支持网络接口分接头(nt: NIT, 上文已有描述,可搜索'网络接口分接头'关键字找到那里)的SunOS系列操作系统中默认的也是最小值是96).68字节对于IP, ICMP(nt: Internet Control Message Protocol,因特网控制报文协议), TCP 以及 UDP 协议的报文已足够, 但对于名称服务(nt: 可理解为dns, nis等服务), NFS服务相关的数据包会产生包截短. 如果产生包截短这种情况, tcpdump的相应打印输出行中会出现''[|proto]''的标志(proto 实际会显示为被截短的数据包的相关协议层次). 需要注意的是, 采用长的抓取长度(nt: snaplen比较大), 会增加包的处理时间, 并且会减少tcpdump 可缓存的数据包的数量, 从而会导致数据包的丢失. 所以, 在能抓取我们想要的包的前提下, 抓取长度越小越好.把snaplen 设置为0 意味着让tcpdump自动选择合适的长度来抓取数据包.

-T  type
    强制tcpdump按type指定的协议所描述的包结构来分析收到的数据包.  目前已知的type 可取的协议为:
    aodv (Ad-hoc On-demand Distance Vector protocol, 按需距离向量路由协议, 在Ad hoc(点对点模式)网络中使用),
    cnfp (Cisco  NetFlow  protocol),  rpc(Remote Procedure Call), rtp (Real-Time Applications protocol),
    rtcp (Real-Time Applications con-trol protocol), snmp (Simple Network Management Protocol),
    tftp (Trivial File Transfer Protocol, 碎文件协议), vat (Visual Audio Tool, 可用于在internet 上进行电
    视电话会议的应用层协议), 以及wb (distributed White Board, 可用于网络会议的应用层协议).

-t     在每行输出中不打印时间戳

-tt    不对每行输出的时间进行格式处理(nt: 这种格式一眼可能看不出其含义, 如时间戳打印成1261798315)

-ttt   tcpdump 输出时, 每两行打印之间会延迟一个段时间(以毫秒为单位)

-tttt  在每行打印的时间戳之前添加日期的打印

-u     打印出未加密的NFS 句柄(nt: handle可理解为NFS 中使用的文件句柄, 这将包括文件夹和文件夹中的文件)

-U    使得当tcpdump在使用-w 选项时, 其文件写入与包的保存同步.(nt: 即, 当每个数据包被保存时, 它将及时被写入文件中,而不是等文件的输出缓冲已满时才真正写入此文件)

      -U 标志在老版本的libcap库(nt: tcpdump 所依赖的报文捕获库)上不起作用, 因为其中缺乏pcap_cump_flush()函数.

-v    当分析和打印的时候, 产生详细的输出. 比如, 包的生存时间, 标识, 总长度以及IP包的一些选项. 这也会打开一些附加的包完整性检测, 比如对IP或ICMP包头部的校验和.

-vv   产生比-v更详细的输出. 比如, NFS回应包中的附加域将会被打印, SMB数据包也会被完全解码.

-vvv  产生比-vv更详细的输出. 比如, telent 时所使用的SB, SE 选项将会被打印, 如果telnet同时使用的是图形界面,
      其相应的图形选项将会以16进制的方式打印出来(nt: telnet 的SB,SE选项含义未知, 另需补充).

-w    把包数据直接写入文件而不进行分析和打印输出. 这些包数据可在随后通过-r 选项来重新读入并进行分析和打印.

-W    filecount
      此选项与-C 选项配合使用, 这将限制可打开的文件数目, 并且当文件数据超过这里设置的限制时, 依次循环替代之前的文件, 这相当于一个拥有filecount 个文件的文件缓冲池. 同时, 该选项会使得每个文件名的开头会出现足够多并用来占位的0, 这可以方便这些文件被正确的排序.

-x    当分析和打印时, tcpdump 会打印每个包的头部数据, 同时会以16进制打印出每个包的数据(但不包括连接层的头部).总共打印的数据大小不会超过整个数据包的大小与snaplen 中的最小值. 必须要注意的是, 如果高层协议数据没有snaplen 这么长,并且数据链路层(比如, Ethernet层)有填充数据, 则这些填充数据也会被打印.(nt: so for link  layers  that pad, 未能衔接理解和翻译, 需补充 )

-xx   tcpdump 会打印每个包的头部数据, 同时会以16进制打印出每个包的数据, 其中包括数据链路层的头部.

-X    当分析和打印时, tcpdump 会打印每个包的头部数据, 同时会以16进制和ASCII码形式打印出每个包的数据(但不包括连接层的头部).这对于分析一些新协议的数据包很方便.

-XX   当分析和打印时, tcpdump 会打印每个包的头部数据, 同时会以16进制和ASCII码形式打印出每个包的数据, 其中包括数据链路层的头部.这对于分析一些新协议的数据包很方便.

-y    datalinktype
      设置tcpdump 只捕获数据链路层协议类型是datalinktype的数据包

-Z    user
      使tcpdump 放弃自己的超级权限(如果以root用户启动tcpdump, tcpdump将会有超级用户权限), 并把当前tcpdump的用户ID设置为user, 组ID设置为user首要所属组的ID(nt: tcpdump 此处可理解为tcpdump 运行之后对应的进程)

      此选项也可在编译的时候被设置为默认打开.(nt: 此时user 的取值未知, 需补充)

图片 4

时间戳

tcpdump的有所出口打字与印刷行中都会默许包涵时间戳音讯.
岁月戳音讯的展现格式如下
hh:mm:ss.frac (nt: 小时:分钟:秒.(nt: frac未知, 需补充))
此时间戳的精度与根本时间精度1致, 反映的是水源第三遍见到相应数据包的时刻(nt:
saw, 即可对该数额包进行操作). 
而数据包从物理线路传递到根本的年华,
以及基础费用在此包上的暂停处理时间都未有算进来.

tcpdump条件表明式

  该表明式用于决定哪些数据包将被打字与印刷. 借使不给定标准表明式,
互联网上具备被抓获的包都会被打字与印刷,不然,
唯有满意条件表明式的多少包被打字与印刷.(nt: all packets, 可见晓为,
全体被钦定接口捕获的数据包).

  表达式由1个或多少个’表明元’组成(nt: primitive, 表达元,
可分晓为组合表达式的着力要素).
3个宣布元平时由二个或五个修饰符(qualifiers)后跟二个名字或数字代表的id组成(nt:
即, ‘qualifiers id’).有三种不相同品类的修饰符:type, dir以及 proto.

图片 5

type 修饰符指定id 所代表的对象类型, id可以是名字也可以是数字. 可选的对象类型有: host, net, port 以及portrange(nt: host 表明id表示主机, net 表明id是网络, port 表明id是端而portrange 表明id 是一个端口范围).  如, 'host foo', 'net 128.3', 'port 20', 'portrange 6000-6008'(nt: 分别表示主机 foo,网络 128.3, 端口 20, 端口范围 6000-6008). 如果不指定type 修饰符, id默认的修饰符为host.

dir 修饰符描述id 所对应的传输方向, 即发往id 还是从id 接收(nt: 而id 到底指什么需要看其前面的type 修饰符).可取的方向为: src, dst, src 或 dst, src并且dst.(nt:分别表示, id是传输源, id是传输目的, id是传输源或者传输目的, id是传输源并且是传输目的). 例如, 'src foo','dst net 128.3', 'src or dst port ftp-data'.(nt: 分别表示符合条件的数据包中, 源主机是foo, 目的网络是128.3, 源或目的端口为 ftp-data).如果不指定dir修饰符, id 默认的修饰符为src 或 dst.对于链路层的协议,比如SLIP(nt: Serial Line InternetProtocol, 串联线路网际网络协议), 以及linux下指定'any' 设备, 并指定'cooked'(nt | rt: cooked 含义未知, 需补充) 抓取类型, 或其他设备类型,可以用'inbound' 和 'outbount' 修饰符来指定想要的传输方向.

proto 修饰符描述id 所属的协议. 可选的协议有: ether, fddi, tr, wlan, ip, ip6, arp, rarp, decnet, tcp以及 upd.(nt | rt: ether, fddi, tr, 具体含义未知, 需补充. 可理解为物理以太网传输协议, 光纤分布数据网传输协议,以及用于路由跟踪的协议.  wlan, 无线局域网协议; ip,ip6 即通常的TCP/IP协议栈中所使用的ipv4以及ipv6网络层协议;arp, rarp 即地址解析协议,反向地址解析协议; decnet, Digital Equipment Corporation开发的, 最早用于PDP-11 机器互联的网络协议; tcp and udp, 即通常TCP/IP协议栈中的两个传输层协议).

    例如, `ether src foo', `arp net 128.3', `tcp port 21', `udp portrange 7000-7009'分别表示 '从以太网地址foo 来的数据包','发往或来自128.3网络的arp协议数据包', '发送或接收端口为21的tcp协议数据包', '发送或接收端口范围为7000-7009的udp协议数据包'.

    如果不指定proto 修饰符, 则默认为与相应type匹配的修饰符. 例如, 'src foo' 含义是 '(ip or arp or rarp) src foo' (nt: 即, 来自主机foo的ip/arp/rarp协议数据包, 默认type为host),`net bar' 含义是`(ip  or  arp  or rarp) net bar'(nt: 即, 来自或发往bar网络的ip/arp/rarp协议数据包),`port 53' 含义是 `(tcp or udp) port 53'(nt: 即, 发送或接收端口为53的tcp/udp协议数据包).(nt: 由于tcpdump 直接通过数据链路层的 BSD 数据包过滤器或 DLPI(datalink provider interface, 数据链层提供者接口)来直接获得网络数据包, 其可抓取的数据包可涵盖上层的各种协议, 包括arp, rarp, icmp(因特网控制报文协议),ip, ip6, tcp, udp, sctp(流控制传输协议).

    对于修饰符后跟id 的格式,可理解为, type id 是对包最基本的过滤条件: 即对包相关的主机, 网络, 端口的限制;dir 表示对包的传送方向的限制; proto表示对包相关的协议限制)

    'fddi'(nt: Fiber Distributed Data Interface) 实际上与'ether' 含义一样: tcpdump 会把他们当作一种''指定网络接口上的数据链路层协议''. 如同ehter网(以太网), FDDI 的头部通常也会有源, 目的, 以及包类型, 从而可以像ether网数据包一样对这些域进行过滤. 此外, FDDI 头部还有其他的域, 但不能被放到表达式中用来过滤

    同样, 'tr' 和 'wlan' 也和 'ether' 含义一致, 上一段对fddi 的描述同样适用于tr(Token Ring) 和wlan(802.11 wireless LAN)的头部. 对于802.11 协议数据包的头部, 目的域称为DA, 源域称为 SA;而其中的 BSSID, RA, TA 域(nt | rt: 具体含义需补充)不会被检测(nt: 不能被用于包过虑表达式中).

图片 6

  除以上所描述的抒发元(‘primitive’), 还有别的情势的发表元,
并且与上述表述元格式分裂. 比如: gateway, broadcast, less,
greater以及算术表达式(nt: 在那之中每一个都算壹种新的说明元).
下边将会对那几个发布元举办表明.

  表明元以内还是能透过重大字and, or 以及 not 举办三番五次,
从而可组合相比复杂的条件发挥式. 比如,`host foo and not port ftp and not
port ftp-data'(nt: 其过滤条件可领略为,
数据包的主机为foo,并且端口不是ftp(端口二1) 和ftp-data(端口20,
常用端口和名字的相应可在linux 系统中的/etc/service 文件中找到)).

  为了表示方便, 同样的修饰符能够被归纳, 如’tcp dst port ftp or ftp-data
or domain’ 与以下的表达式含义相同’tcp dst port ftp or tcp dst port
ftp-data or tcp dst port domain’.(nt: 其过滤条件可分晓为,包的合计为tcp,
指标端口为ftp 或 ftp-data 或 domain(端口5三) ).

 
借助括号以及相应操作符,可把发挥元组合在1起利用(由于括号是shell的特殊字符,
所以在shell脚本或极端中选取时务必对括号进行转义, 即'(‘
与’)’须要各自表完毕’\(‘ 与 ‘\)’).

  有效的操作符有:

 否定操作 (`!' 或 `not')
 与操作(`&&' 或 `and')
 或操作(`||' 或 `or')

  否定操作符的先行级别最高. 与操作和或操作优先级别相同,
并且二者的结缘顺序是从左到右. 要专注的是, 表明’与操作’时,

  必要显式写出’and’操作符, 而不只是把前后发布元并列放置(nt:
2者中间的’and’ 操作符不可省略).

  如果四个标识符前从不重点字,
则表明式的辨析进度中近期用过的机要字(往往也是从左往右距离标识符近来的重大字)将被使用.比如,
    not host vs and ace
  是以下表明的凝练:
    not host vs and host ace
  而不是not (host vs or ace).(nt: 前两者表示,
所需数据包不是发源或发往host vs,
而是来自或发往ace.而后者表示数据包只要不是根源或发往vs或ac都符合要求)

 
整个条件表明式能够被看做1个独门的字符串参数也得以被用作空格分割的七个参数字传送入tcpdump,
后者更利于些. 平日, 假使表达式中涵盖元字符(nt: 如正则表明式中的’*’,
‘.’以及shell中的'(‘等字符), 最棒照旧利用单独字符串的法子传入.
那时,整个表明式必要被单引号括起来. 多参数的流传形式中,
全体参数最终照旧被空格串联在共同, 作为3个字符串被解析.

 

一声令下使用

tcpdump接纳命令汇兑势,它的命令格式为:

图片 7

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 ]

图片 8

附录:tcpdump的表明元

(nt: True 在偏下的描述中含义为:
相应标准表明式中只包括以下所列的3个特定表达元, 此时表明式为真,
即条件得到满意)

dst host host
只要IPv4/v陆 数据包的指标域是host, 则与此对应的基准表明式为真.host
可以是1个ip地址, 也能够是1个主机名.
src host host
设若IPv4/v6 数据包的源域是host, 则与此对应的条件表明式为真.
host 能够是1个ip地址, 也能够是三个主机名.
host host

比方IPv4/v陆数据包的源或指标地址是 host,
则与此对应的标准表明式为真.以上的多少个host
表明式此前能够增加以下重点字:ip, arp, rarp, 以及 ip6.比如:
ip host host
也能够表明为:
ether proto \ip and host host(nt: 那种表明方式在底下有证实,
在那之中ip从前要求有\来转义,因为ip 对tcpdump 来说已经是叁个生死攸关字了.)

如果host 是三个负有多少个IP 的主机, 那么其余多少个地方都会用于包的合作(nt:
即发向host 的数据包的指标地址能够是那个IP中的任何二个, 从host
接收的数据包的源地址也可以是那多少个IP中的任何1个).

ether dst ehost
若是数据包(nt: 指tcpdump 可抓取的数据包, 包罗ip 数据包,
tcp数据包)的以太网目的地点是ehost,则与此对应的基准表达式为真. Ehost
可以是/etc/ethers 文件中的名字或五个数字地址(nt: 可透过 man ethers
看到对/etc/ethers 文件的描述, 样例中用的是数字地址)

ether src ehost
比方数据包的以太网源地址是ehost, 则与此对应的尺码表明式为真.

ether host ehost
1经数据包的以太网源地址或指标地址是ehost, 则与此对应的口径表达式为真.

gateway host
假定数据包的网关地址是host, 则与此对应的尺码表达式为真. 要求留意的是,
那里的网关地址是指以太网地址, 而不是IP 地址(nt | rt: I.e., 例如,
可领略为’注意’.the Ethernet source or destination address,
以太网源和指标地址, 可清楚为, 指代上句中的’网关地址’ ).host 必须是名字而不是数字,
并且必须在机械的’主机名-ip地址’以及’主机名-以太地址’两大映射关系中 有其条款(前一映射关系可经过/etc/hosts文件,
DNS 或 NIS获得, 而后壹映射提到可透过/etc/ethers 文件获得. nt:
/etc/ethers并不一定期存款在 , 可由此man ethers 看到其数据格式,
怎么样创制该文件, 未知,需补充).也便是说host 的意思是 ether host ehost
而不是 host host, 并且ehost必须是名字而不是数字.
当前, 该接纳在协助IPv6地址格式的配置环境中不起功能(nt: configuration,
配置环境, 可领略为,通讯双方的网络安排).

dst net net
若果数据包的靶子地点(IPv四或IPv陆格式)的网络号字段为 net,
则与此对应的尺码表达式为真.
net 能够是从互联网数据库文件/etc/networks 中的名字,
也得以是一个数字格局的互连网编号.

2个数字IPv四 互连网编号将以点分肆元组(比如, 1九2.16八.一.0), 或点分安慕希组(比如, 1九2.168.① ), 或点分2元组(比如, 17二.1陆), 或纯粹单元组(比如, 十)来表明;

对应于那各个情状的网络掩码分别是:四元组:25伍.25伍.255.255(那也表示对net
的匹配仿佛对主机地址(host)的协作:地址的多少个部分都用到了),伊利组:255.25伍.25伍.0, 二元组: 255.25伍.0.0, 一元组:255.0.0.0.

对此IPv陆 的地方格式, 网络编号必须1切写出来(七个部分必须全方位写出来);
相应互联网掩码为:
ff:ff:ff:ff:ff:ff:ff:ff, 所以IPv6 的网络相称是实在的’host’方式的合营(nt |
rt | rc:地址的8个部分都会用到,是不是不属于网络的字节填写0, 需接下去补充),
但同时须要三个互连网掩码长度参数来具体钦定前面多少字节为互联网掩码(nt:
可经过上边包车型客车net net/len 来钦定)

src net net
要是数据包的源地址(IPv四或IPv6格式)的网络号字段为 net,
则与此对应的尺度表明式为真.

net net
万一数据包的源或指标地址(IPv四或IPv6格式)的网络号字段为 net,
则与此对应的规则表明式为真.

net net mask netmask
若是数据包的源或目标地址(IPv四或IPv陆格式)的互连网掩码与netmask 相称,
则与此对应的标准化表明式为真.此选项此前还足以相称src和dst来相称源网络地址或目的网络地址(nt:
比如 src net net mask 25伍.25五.255.0).该选拔对于ipv六 互连网地址无效.

net net/len
要是数据包的源或目标地址(IPv肆或IPv6格式)的互联网编号字段的比特数与len相同,
则与此对应的原则表明式为真.此选项此前还足以合营src和dst来相称源网络地址或目的网络地址(nt
| rt | tt: src net net/二四,
表示需求相称源地址的网络编号有二4人的数据包).

dst port port
假定数据包(包涵ip/tcp, ip/udp, ip6/tcp or ip6/udp协议)的目标端口为port,
则与此对应的尺度表明式为真.port
能够是二个数字也能够是二个名字(相应名字能够在/etc/services 中找到该名字,
也得以因而man tcp 和man udp来获取有关描述新闻 ). 假若使用名字,
则该名字对应的端口号和相应选拔的磋商都会被检查.
如若只是选取二个数字端口号,则唯有相应端口号被检查(比如, dst port5一叁 将会使tcpdump抓取tcp协议的login 服务和udp商事的who
服务数据包, 而port domain 将会使tcpdump 抓取tcp协议的domain 服务数据包,
以及udp 协和式飞机的domain 数据包)(nt | rt: ambiguous name is used 不可精通, 需补充).

src port port
要是数据包的源端口为port, 则与此对应的标准化表明式为真.

port port
假诺数据包的源或目标端口为port, 则与此对应的尺度表明式为真.

dst portrange port1-port2
若果数据包(包括ip/tcp, ip/udp, ip6/tcp or
ip6/udp协议)的指标端口属于port一到port二那一个端口范围(包罗port壹, port2),
则与此对应的原则表达式为真. tcpdump 对port一 和port贰 解析与对port
的解析1致(nt:在dst port port 选项的叙述中有证实).

src portrange port1-port2
假使数据包的源端口属于port一到port二这些端口范围(包含 port一, port贰),
则与此对应的基准表明式为真.

portrange port1-port2
比方数据包的源端口或指标端口属于port一到port2这么些端口范围(包含 port壹,
port二), 则与此对应的原则表明式为真.

以上有关port 的选项都得以在其前方添加关键字:tcp 只怕udp, 比如:
tcp src port port
那将使tcpdump 只抓取源端口是port 的tcp数据包.

less length
假如数据包的尺寸比length 小或等于length, 则与此对应的规则表达式为真.
那与’len <= length’ 的意义一致.

greater length
倘使数据包的长度比length 大或等于length, 则与此对应的尺码表达式为真.
那与’len >= length’ 的含义一致.

ip proto protocol
若果数据包为ipv四数据包并且其情商项目为protocol,
则与此对应的标准表达式为真.
Protocol 能够是七个数字也得以是名字, 比如:icmp陆, igmp, igrp(nt: Interior
Gateway Routing Protocol,内部网关路由协和式飞机), pim(Protocol Independent
Multicast, 独立组播协议, 应用于组播路由器),ah, esp(nt: ah, 认证头, esp
安全负载封装, 那两边会用在IP包的防城港传输体制中 ), vrrp(Virtual Router
Redundancy Protocol, 虚拟路由器冗余协议), udp, or tcp. 由于tcp , udp
以及icmp是tcpdump
的首要性字,所以在这几个协议名字在此以前必供给用\来进展转义(要是在C-shell
中须求用\\来进行转义).
注意此公布元不会把数据包中协议头链中负有协议头内容全方位打印出来(nt:
实际上只会打字与印刷钦定协议的一些尾部音讯, 比如能够用tcpdump -i eth0 ‘ip proto \tcp and host
1玖二.16捌.三.14四’, 则只打印主机1九二.16捌.叁.144 发出或接受的多寡包中tcp
协议头所富含的新闻)

ip6 proto protocol
若果数量包为ipv陆数据包并且其情商项目为protocol,
则与此对应的标准化表明式为真.
小心此公布元不会把数据包中协议头链中具备协议头内容全方位打印出来

ip6 protochain protocol
假定数量包为ipv陆数据包并且其情商链中包涵类型为protocol协议头,
则与此对应的规范表明式为真. 比如,
ip6 protochain 6

将非凡其情商头链中全部TCP
协议头的IPv六数据包.此数据包的IPv5只和TCP头之间只怕还会含有验证头,
路由头, 大概逐跳寻径选项头.
因而所接触的呼应BPF(Berkeley Packets Filter, 可领会为,
在多少链路层提供数据包过滤的一种机制)代码比较麻烦,
而且BPF优化代码也无从照顾到此部分,
从而此选项所接触的包相配恐怕会相比慢.

ip protochain protocol
与ip六 protochain protocol 含义相同, 但那用在IPv四数据包.

ether broadcast
一经数据包是以太网广播数据包, 则与此对应的准绳表明式为真. ether
关键字是可选的.

ip broadcast
假使数据包是IPv四广播数据包, 则与此对应的尺度表达式为真. 那将使tcpdump
检查广播地址是或不是顺应全0和全一的部分预定,并物色网络接口的网络掩码(网络接口为当下在其上抓包的互联网接口).

比方抓包所在互联网接口的网络掩码不合规,
只怕此接口根本就从未有过安装相应互连网地址和网络, 亦或是在linux下的’any’网络接口上抓包(此’any’接口能够吸纳系统中穿梭八个接口的数据包(nt: 实际上,
可领略为系统中颇具可用的接口)),互联网掩码的检讨不能够正常实行.

ether multicast
假诺数据包是一个以太网多点广播数据包(nt: 多点广播,
可领略为把新闻还要传递给一组目标地址,
而不是互联网中有所地方,后者为可称之为广播(broadcast)),
则与此对应的尺度表明式为真. 关键字ether 可以省略.
此选项的意义与以下规则表达式含义壹致:`ether[0]
& 1 != 0′(nt: 可清楚为, 以太网数据包中第0个字节的最低位是1,
那意味着那是二个多点广播数据包).

ip multicast
假诺数据包是ipv肆多点广播数据包, 则与此对应的原则表达式为真.

ip6 multicast
若是数据包是ipv陆多点广播数据包, 则与此对应的标准化表明式为真.

ether proto protocol
一旦数据包属于以下以太协议项目, 则与此对应的标准表达式为真.
商业事务(protocol)字段, 能够是数字或以下所列出了名字: ip, ip六, arp, rarp,
atalk(AppleTalk互连网协议),
aarp(nt: AppleTalk Address Resolution Protocol,
AppleTalk互连网的地方解析协议),
decnet(nt: 一个由DEC集团所提供的互联网协议栈), sca(nt: 未知, 需补充),
lat(Local Area Transport, 区域传输协议,
由DEC公司开发的以太网主机互联协议),
mopdl, moprc, iso(nt: 未知, 需补充), stp(Spanning tree protocol,
生成树协议, 可用于制止互联网中发生链接循环),
ipx(nt: Internetwork Packet Exchange, Novell 互联网中运用的互联网层协议),
只怕
netbeui(nt: NetBIOS Extended User Interface,可精晓为,
网络基本输入输出系统接口扩张).

protocol字段能够是叁个数字或以下协议名之一:ip, ip陆, arp, rarp, atalk,
aarp, decnet, sca, lat,
mopdl, moprc, iso, stp, ipx, 或者netbeui.
务须求小心的是标识符也是首要字, 从而必须透过’\’来进行转义.

(SNAP:子网接入协议 (SubNetwork Access Protocol))

在光纤分布式数据互联网接口(其发挥元样式得以是’fddi protocol arp’),
令牌环网(其表明元样式能够是’tr
protocol arp’),
以及IEEE 802.11 无线局域网(其发挥元样式能够是’wlan protocol arp’)中, protocol
标识符来自802.二 逻辑链路控制层头,
在FDDI, Token Ring 或 80贰.贰头中会蕴藏此逻辑链路控制层头.

当以这一个互连网上的应和的合计标识为过滤条件时,
tcpdump只是检查LLC底部中以0x000000为组合单元标识符(OUI, 0x000000
标识贰个里头以太网)的1段’SNAP格式结构’中的protocol ID 域,
而不会管包中是或不是有壹段OUI为0x000000的’SNAP格式
布局'(nt: SNAP, SubNetwork Access
Protocol,子网接入协议 ). 以下两样:

iso tcpdump 会检查LLC底部中的DSAP域(Destination service Access Point,
指标服务接入点)和
SSAP域(源服务接入点).(nt: iso 磋商未知, 需补充)

stp 以及 netbeui
tcpdump 将会检查LLC 尾部中的指标服务接入点(Destination service Access
Point);

atalk
tcpdump 将会检查LLC 底部中以0x0柒仟七 为OUI标识的’SNAP格式结构’,
并会检查AppleTalk etype域.
(nt: AppleTalk etype 是不是位于SNAP格式结构中, 未知, 需补充).

其余, 在以太网中, 对于ether proto protocol 选项, tcpdump 会为 protocol
所钦定的协商品检查评定查
以太网类型域(the Ethernet type 田野同志), 但以下那个协议除此而外:

iso, stp, and netbeui
tcpdump 将会检查80二.3 物理帧以及LLC
头(那三种检查与FDDI, T猎豹CS陆, 80二.1一互联网中的相应检查壹致);
(nt: 80二.三, 掌握为IEEE 80二.三,
其为壹多级IEEE 标准的集合. 此聚众定义了有线以太互联网中的物理层以及数额
链路层的媒体连着控制子层. stp 在上文已有描述)

atalk
tcpdump 将会检讨以太网物理帧中的AppleTalk etype 域
, 同时也会检查数据包中LLC底部中的’SNAP格式结构’
(那二种检查与FDDI, T索罗德, 802.1壹互联网中的相应检查1致)

aarp tcpdump 将会检查AppleTalk A本田CR-VP etype 域, 此域或存在于以太网物理帧中,
或存在于LLC(由80贰.2 所定义)的
‘SNAP格式结构’中, 当为后任时, 该’SNAP格式结构’的OUI标识为0x000000;
(nt: 802.贰, 可见晓为, IEEE802.二,
个中定义了逻辑链路控制层(LLC), 该层对应于OSI
互连网模型中多少链路层的上层部分.
LLC 层为利用数据链路层的用户提供了1个统1的接口(日常用户是网络层).
LLC层以下是传播媒介连着控制层(nt: MAC层,
对应于数据链路层的下层部分).该层的达成以及工作措施会依照分化物理传输媒介的例外而有所差别(比如,
以太网, 令牌环网,
光导纤维分布数据接口(nt: 实际可见晓为壹种光纤网络), 有线局域网(802.1一), 等等.)

ipx tcpdump 将会检讨物理以太帧中的IPX etype域, LLC头中的IPX
DSAP域,无LLC头并对IPX举行了包装的80贰.3帧,
以及LLC 底部’SNAP格式结构’中的IPX etype 域(nt | rt: SNAP frame, 可精晓为, LLC
头中的’SNAP格式结构’.
该意义属开头精晓阶段, 需补充).

decnet src host
假诺数据包中DECNET源地址为host, 则与此对应的规则表明式为真.
(nt:decnet, 由Digital Equipment Corporation 开发, 最早用于PDP-1一 机器互联的互连网协议)

decnet dst host
倘诺数额包中DECNET指标地址为host, 则与此对应的规格表明式为真.
(nt: decnet 在上文已有表达)

decnet host host
若果数额包中DECNET目标地址或DECNET源地址为host,
则与此对应的规范表明式为真.
(nt: decnet 在上文已有表达)

ifname interface
假如数额包已被标记为从钦赐的网络接口中收到的,
则与此对应的规格表明式为真.
(此选项只适用于被OpenBSD中pf程序做过标记的包(nt: pf, packet filter,
可领略为OpenBSD中的防火墙程序))

on interface
与 ifname interface 含义1致.

rnr num
只要数量包已被标记为相配PF的平整, 则与此对应的尺码表明式为真.
(此选项只适用于被OpenBSD中pf程序做过标记的包(nt: pf, packet filter,
可分晓为OpenBSD中的防火墙程序))

rulenum num
与 rulenum num 含义一致.

reason code
假如数据包已被标记为带有PF的相称结果代码,
则与此对应的尺度表明式为真.有效的结果代码有: match, bad-offset,
fragment, short, normalize, 以及memory.
(此选项只适用于被OpenBSD中pf程序做过标记的包(nt: pf, packet filter,
可通晓为OpenBSD中的防火墙程序))

rset name
假若数额包已被标记为合营钦赐的规则集, 则与此对应的规范表明式为真.
(此选项只适用于被OpenBSD中pf程序做过标记的包(nt: pf, packet filter,
可明白为OpenBSD中的防火墙程序))

ruleset name
与 rset name 含义1致.

srnr num
若果数量包已被标记为合营钦命的平整集中的一定规则(nt: specified PF rule
number, 特定规则编号, 即特定规则),
则与此对应的尺度表明式为真.(此选项只适用于被OpenBSD中pf程序做过标记的包(nt:
pf, packet filter, 可清楚为
OpenBSD中的防火墙程序))

subrulenum num
与 srnr 含义1致.

action act
1旦包被记录时PF会执行act钦赐的动作, 则与此对应的条件表达式为真.
有效的动作有: pass, block.
(此选项只适用于被OpenBSD中pf程序做过标记的包(nt: pf, packet filter,
可见道为OpenBSD中的防火墙程序))

ip, ip6, arp, rarp, atalk, aarp, decnet, iso, stp, ipx, netbeui
与以下表达元含义一致:
ether proto p
p是以上协议中的1个.

lat, moprc, mopdl
与以下表明元含义一致:
ether proto p
p是以上协议中的多个. 必须要注意的是tcpdump最近还不能够分析那一个协议.

vlan [vlan_id]
假若数量包为IEEE80二.一Q VLAN 数据包, 则与此对应的尺度表明式为真.
(nt: IEEE802.一Q VLAN, 即IEEE802.1Q 虚拟互联网协议,
此商业事务用于不相同互连网的里边的打成一片).
如果[vlan_id] 被钦命, 则只有数量包括有钦点的虚构互连网id(vlan_id),
则与此对应的规格表明式为真.
要留心的是, 对于VLAN数据包,
在表明式中相见的率先个vlan关键字会改变表明式中接下去关键字所对应数据包中数据的
起来地方(即解码偏移). 在VLAN互联网体系中过滤数据包时, vlan
[vlan_id]说明式能够被一再选择. 关键字vlan每现身1遍都会追加
肆字节过滤偏移(nt: 过滤偏移, 可驾驭为地点的解码偏移).

例如:
vlan 100 && vlan 200
代表: 过滤封装在VLAN100中的VLAN200网络上的数据包
再例如:
vlan && vlan 300 && ip
代表: 过滤封装在VLAN300 网络中的IPv4数据包,
而VLAN300网络又被更外层的VLAN封装

mpls [label_num]
如若数据包为MPLS数据包, 则与此对应的规格表明式为真.
(nt: MPLS, Multi-Protocol Label Switch, 多切磋标签沟通,
壹种在开放的通讯网上利用标签引导数据传输的技术).

如果[label_num] 被钦点, 则唯有数据包涵有内定的竹签id(label_num),
则与此对应的标准化表明式为真.
要留意的是, 对于内含MPLS新闻的IP数据包(即MPLS数据包),
在表明式中遇到的率先个MPLS关键字会改变表明式中接下去关键字所对应数据包中数据的
开端地点(即解码偏移). 在MPLS互联网体系中过滤数据包时, mpls
[label_num]表明式能够被反复运用. 关键字mpls每出现一回都会增多
肆字节过滤偏移(nt: 过滤偏移, 可掌握为地点的解码偏移).

例如:
mpls 100000 && mpls 1024
表示: 过滤外层标签为一千00 而层标签为十2四的数量包

再如:
mpls && mpls 1024 && host 192.9.200.1
代表: 过滤发往或出自1玖二.玖.200.1的数据包,
该数据包的内层标签为10贰4, 且拥有叁个外层标签.

pppoed
假诺数量包为PPP-over-Ethernet的服务器探寻数据包(nt: Discovery packet,
其ethernet type 为0x88陆三),则与此对应的准绳表明式为真.
(nt: PPP-over-Ethernet, 点对点以太网承载协议,
其点对点的接二连三建立分为Discovery阶段(地址发现) 和
PPPoE 会话建立阶段 , discovery 数据包便是首先等级发出来的包. ethernet
type
是以太帧里的二个字段,用来指明应用于帧数据字段的磋商)

pppoes
万1数额包为PPP-over-Ethernet会话数据包(nt: ethernet type 为0x886四,
PPP-over-Ethernet在上文已有认证, 可检索
重在字’PPP-over-Ethernet’找到其叙述), 则与此对应的标准化表明式为真.

要留心的是, 对于PPP-over-Ethernet会话数据包,
在表明式中相遇的第三个pppoes关键字会改变表明式中接下去关键字所对应数据包中数据的
伊始地方(即解码偏移).

例如:
pppoes && ip
意味着: 过滤嵌入在PPPoE数据包中的ipv4数据包

tcp, udp, icmp
与以下说明元含义壹致:
ip proto p or ip6 proto p
当中p 是以上协议之1(含义分别为:
假设数量包为ipv四或ipv六数据包并且其情商项目为 tcp,udp, 或icmp则与此对
应的条件表明式为真)

iso proto protocol
假若数据包的说道项目为iso-osi协议栈中protocol协议,
则与此对应的标准化表明式为真.(nt: [初解]iso-osi 网络模型中每
层的具体磋商与tcp/ip相应层采用的商议不相同.
iso-osi各层中的具体协议另需补充 )

protocol 能够是3个数字编号, 或以下名字中之一:
clnp, esis, or isis.
(nt: clnp, Connectionless Network Protocol, 那是OSI网络模型中网络层协议
, esis, isis 未知, 需补充)

clnp, esis, isis
是以下表明的缩写
iso proto p
当中p 是以上协议之①

l1, l2, iih, lsp, snp, csnp, psnp
为IS-IS PDU 类型 的缩写.
(nt: IS-IS PDU, Intermediate system to intermediate system Protocol Data
Unit, 中间系统到
高中级系统的协议数据单元. OSI(Open Systems Interconnection)互连网由终端系统,
中间系统构成.
终极系统指路由器, 而终端系统指用户设备. 路由器形成的地头组称之为’区域’(Area)和多少个区域整合八个’域’(Domain).
IS-IS 提供域内或区域内的路由. l一, l2, iih, lsp, snp, csnp, psnp
表示PDU的档次, 具体意思另需填补)

vpi n
若果数量包为ATM数据包, 则与此对应的口径表明式为真. 对于Solaris
操作系统上的SunATM设备 ,
要是数额包为ATM数据包, 并且其虚构路径标识为n,
则与此对应的准绳表明式为真.
(nt: ATM, Asychronous Transfer Mode,
实际上可驾驭为由ITU-T(国际电信联盟邮电通讯标准化部门)建议的多个与
TCP/IP中IP层功效雷同的一文山会大陆海峡两岸关系组织议, 具体磋商层次另需补充)

vci n
一经数据包为ATM数据包, 则与此对应的基准表明式为真. 对于Solaris
操作系统上的SunATM设备 ,
假若数量包为ATM数据包, 并且其虚构通道标识为n,
则与此对应的原则表明式为真.
(nt: ATM, 在上文已有描述)

lane
假若数量包为ATM LANE 数据包, 则与此对应的尺度表明式为真. 要专注的是,
假使是模仿以太网的LANE数据包或许
LANE逻辑单元控制包,
表达式中第3个lane关键字会改变表达式中随后条件的测试. 倘诺未有
钦赐lane关键字,
条件测试将循序渐进数据包中内含LLC(逻辑链路层)的ATM包来进行.

llc
要是数额包为ATM数据包, 则与此对应的尺度表明式为真. 对于Solaris
操作系统上的SunATM设备 ,
假如数据包为ATM数据包, 并且内含LLC则与此对应的规则表达式为真

oamf4s
万1数量包为ATM数据包, 则与此对应的尺度说明式为真. 对于Solaris
操作系统上的SunATM设备 , 假设数据包为ATM数据包
而且是Segment OAM F四 信元(VPI=0 并且 VCI=3), 则与此对应的尺度表明式为真.

(nt: OAM, Operation Administration and Maintenance,
操作管护,可分晓为:ATM互联网中用来互连网
管理所发生的ATM信元的归类格局.

ATM互联网中传输单位为信元,
要传输的数量终归会被分开成固定长度(⑤叁字节)的信元,
(初驾驭: 一条物理线路可被复用, 形成虚拟路径(virtual path). 而一条虚拟路径再度被复用, 形成虚拟信道(virtual channel)).
通讯双方的编址格局为:虚拟路径编号(VPI)/虚拟信道编号(VCI)).

OAM F四 flow 信元又可分为segment 类和end-to-end 类, 其分别未知,
需补充.)

oamf4e
假诺数量包为ATM数据包, 则与此对应的标准说明式为真. 对于Solaris
操作系统上的SunATM设备 , 若是数据包为ATM数据包
同时是 end-to-end OAM F四 信元(VPI=0 并且 VCI=四), 则与此对应的条件表明式为真.
(nt: OAM 与 end-to-end OAM F四 在上文已有描述, 可检索’oamf四s’来恒定)

oamf4
假如数量包为ATM数据包, 则与此对应的标准表明式为真. 对于Solaris
操作系统上的SunATM设备 , 假诺数据包为ATM数据包
还借使 end-to-end 或 segment OAM F4 信元(VPI=0 并且
VCI=3 恐怕 VCI=四),
则与此对应的条件表明式为真.
(nt: OAM 与 end-to-end OAM F四 在上文已有描述, 可寻找’oamf四s’来稳定)

oam
即使数额包为ATM数据包, 则与此对应的标准表明式为真. 对于Solaris
操作系统上的SunATM设备 , 假使数据包为ATM数据包
与此同时是 end-to-end 或 segment OAM F4 信元(VPI=0 并且
VCI=三 依旧 VCI=四),
则与此对应的条件表明式为真.
(nt: 此选项与oamf4再一次, 需确认)

metac
1经数额包为ATM数据包, 则与此对应的尺度表达式为真. 对于Solaris
操作系统上的SunATM设备 , 假诺数据包为ATM数据包
并且是缘于’元信令线路'(nt: VPI=0 并且 VCI=1, ‘元信令线路’, meta signaling circuit, 具体意思未知, 需补充),
则与此对应的尺度表明式为真.

bcc
假如数额包为ATM数据包, 则与此对应的规格表明式为真. 对于Solaris
操作系统上的SunATM设备 , 假如数据包为ATM数据包
并且是来源于’广播信令线路'(nt: VPI=0 并且 VCI=二, ‘广播信令线路’, broadcast signaling circuit, 具体意思未知, 需补充),
则与此对应的原则表明式为真.

sc
设若数额包为ATM数据包, 则与此对应的标准化表达式为真. 对于Solaris
操作系统上的SunATM设备 , 要是数据包为ATM数据包
还借使出自’信令线路'(nt: VPI=0 并且 VCI=5, ‘信令线路’, signaling circuit, 具体意思未知, 需补充),
则与此对应的规范表明式为真.

ilmic
若果数量包为ATM数据包, 则与此对应的尺码表明式为真. 对于Solaris
操作系统上的SunATM设备 , 要是数据包为ATM数据包
同时是缘于’ILMI线路'(nt: VPI=0 并且 VCI=1陆, ‘ILMI’, Interim Local Management Interface , 可明白为
据说SNMP(简易网络管理协议)的用来网络管理的接口)
则与此对应的原则表达式为真.

connectmsg

万1数量包为ATM数据包, 则与此对应的标准化表明式为真. 对于Solaris
操作系统上的SunATM设备 , 即使数据包为ATM数据包
而且是缘于’信令线路’并且是Q.2931切磋中规定的以下三种新闻: Setup, Calling
Proceeding, Connect,
Connect Ack, Release, 可能Release Done. 则与此对应的条件表明式为真.
(nt: Q.293一 为ITU(国际电信联盟)制定的信令协议.
在这之中规定了在宽带综合业务数字互连网的用户接口层建立, 维护, 撤废
互连网连接的相干步骤.)

metaconnect
只要数据包为ATM数据包, 则与此对应的规则表达式为真. 对于Solaris
操作系统上的SunATM设备 , 假如数据包为ATM数据包
再就是是来自’元信令线路’并且是Q.293一研究中规定的以下三种音讯: Setup, Calling
Proceeding, Connect,
Connect Ack, Release, 或许Release Done. 则与此对应的尺度表明式为真.

expr relop expr
比方relop 两侧的操作数(expr)满足relop 钦赐的关系,
则与此对应的规则表明式为真.
relop 能够是以下关系操作符之一: >, <, <=, =, !=.
expr 是1个算术表达式. 此表明式中可使用整型常量(表示方法与标准C中千篇一律),
二进制操作符(+, -, *, /, &, |,
<<, >>), 长度操作符, 以及对特定数据包中数据的引用操作符.
要小心的是, 全数的相比操作都暗许操作数是无符号的,
比如, 0x九千0000 和 0xffffffff 都以大于0的(nt: 对于有标志的比较,
根据补码规则, 0xffffffff
会小于0). 即便要引用数据包中的数目, 可应用以下表明情势:
proto [expr : size]

proto 的取值能够是以下取值之一:ether, fddi, tr, wlan, ppp, slip, link,
ip, arp, rarp,
tcp, udp, icmp, ip陆 要么 radio. 那指明了该引用操作所对应的商谈层.(ether,
fddi, wlan,
tr, ppp, slip and link 对应于数据链路层, radio 对应于80贰.11(wlan,有线局域网)有些数据包中的附带的
“radio”头(nt:
当中描述了波特率, 数据加密等音讯)).
要小心的是, tcp, udp
等上层协议近期只得动用于网络层采取为IPv肆或IPv6共谋的互连网(此限制会在tcpdump未来版本中
开始展览修改). 对于钦定协议的所需数据, 其在包数据中的偏移字节由expr
来内定.

如上表明中size 是可选的,
用来指明大家关注那部分数据段的长短(nt:经常那段数据
是数据包的二个域), 其长度能够是一, 贰, 或5个字节.
若是不给定size, 私下认可是二个字节. 长度操作符的要害字为len,
那代码整个数据包的长度.

例如, ‘ether[0] & 1 != 0’ 将会使tcpdump 抓取全体多点广播数据包.(nt: ether[0]字节的最低位为一象征
多少包目标地点是多点广播地址). ‘ip[0] & 0xf != 伍’ 对应抓取全数带有选项的
IPv4数据包. ‘ip[6:2] & 0x壹fff =
0’对应抓取没被破碎的IPv肆数据包也许
其部分编号为0的已破损的IPv肆数据包.
这种数量检查办法也适用于tcp和udp数据的引用,
即, tcp[0]对应于TCP 头中率先个字节,
而不是对应任何一个中级的字节.

局地偏移以及域的取值除了能够用数字也可用名字来表明.
以下为可用的1些域(协议头中的域)的名字: icmptype (指ICMP 协议头
中type域), icmpcode (指ICMP 协议头code 域),
以及tcpflags(指TCP协议头的flags 域)

以下为ICMP 协议头中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 协议头中flags 域的可用取值:tcp-fin, tcp-syn, tcp-rst,
tcp-push,
tcp-ack,
tcp-urg.

tcpdump的粗略选择介绍

图片 9

-A  以ASCII码方式显示每一个数据包(不会显示数据包中链路层头部信息). 在抓取包含网页数据的数据包时, 可方便查看数据(nt: 即Handy for capturing web pages).

-c  count
    tcpdump将在接受到count个数据包后退出.

-C  file-size (nt: 此选项用于配合-w file 选项使用)
    该选项使得tcpdump 在把原始数据包直接保存到文件中之前, 检查此文件大小是否超过file-size. 如果超过了, 将关闭此文件,另创一个文件继续用于原始数据包的记录. 新创建的文件名与-w 选项指定的文件名一致, 但文件名后多了一个数字.该数字会从1开始随着新创建文件的增多而增加. file-size的单位是百万字节(nt: 这里指1,000,000个字节,并非1,048,576个字节, 后者是以1024字节为1k, 1024k字节为1M计算所得, 即1M=1024 * 1024 = 1,048,576)

-d  以容易阅读的形式,在标准输出上打印出编排过的包匹配码, 随后tcpdump停止.(nt | rt: human readable, 容易阅读的,通常是指以ascii码来打印一些信息. compiled, 编排过的. packet-matching code, 包匹配码,含义未知, 需补充)

-dd 以C语言的形式打印出包匹配码.

-ddd 以十进制数的形式打印出包匹配码(会在包匹配码之前有一个附加的'count'前缀).

-D  打印系统中所有tcpdump可以在其上进行抓包的网络接口. 每一个接口会打印出数字编号, 相应的接口名字, 以及可能的一个网络接口描述. 其中网络接口名字和数字编号可以用在tcpdump 的-i flag 选项(nt: 把名字或数字代替flag), 来指定要在其上抓包的网络接口.

    此选项在不支持接口列表命令的系统上很有用(nt: 比如, Windows 系统, 或缺乏 ifconfig -a 的UNIX系统); 接口的数字编号在windows 2000 或其后的系统中很有用, 因为这些系统上的接口名字比较复杂, 而不易使用.

    如果tcpdump编译时所依赖的libpcap库太老,-D 选项不会被支持, 因为其中缺乏 pcap_findalldevs()函数.

-e  每行的打印输出中将包括数据包的数据链路层头部信息

-E  spi@ipaddr algo:secret,...

    可通过spi@ipaddr algo:secret 来解密IPsec ESP包(nt | rt:IPsec Encapsulating Security Payload,IPsec 封装安全负载, IPsec可理解为, 一整套对ip数据包的加密协议, ESP 为整个IP 数据包或其中上层协议部分被加密后的数据,前者的工作模式称为隧道模式; 后者的工作模式称为传输模式 . 工作原理, 另需补充).

    需要注意的是, 在终端启动tcpdump 时, 可以为IPv4 ESP packets 设置密钥(secret).

    可用于加密的算法包括des-cbc, 3des-cbc, blowfish-cbc, rc3-cbc, cast128-cbc, 或者没有(none).默认的是des-cbc(nt: des, Data Encryption Standard, 数据加密标准, 加密算法未知, 另需补充).secret 为用于ESP 的密钥, 使用ASCII 字符串方式表达. 如果以 0x 开头, 该密钥将以16进制方式读入.

    该选项中ESP 的定义遵循RFC2406, 而不是 RFC1827. 并且, 此选项只是用来调试的, 不推荐以真实密钥(secret)来使用该选项, 因为这样不安全: 在命令行中输入的secret 可以被其他人通过ps 等命令查看到.

    除了以上的语法格式(nt: 指spi@ipaddr algo:secret), 还可以在后面添加一个语法输入文件名字供tcpdump 使用(nt:即把spi@ipaddr algo:secret,... 中...换成一个语法文件名). 此文件在接受到第一个ESP 包时会打开此文件, 所以最好此时把赋予tcpdump 的一些特权取消(nt: 可理解为, 这样防范之后, 当该文件为恶意编写时,不至于造成过大损害).

-f  显示外部的IPv4 地址时(nt: foreign IPv4 addresses, 可理解为, 非本机ip地址), 采用数字方式而不是名字.(此选项是用来对付Sun公司的NIS服务器的缺陷(nt: NIS, 网络信息服务, tcpdump 显示外部地址的名字时会用到她提供的名称服务): 此NIS服务器在查询非本地地址名字时,常常会陷入无尽的查询循环).

    由于对外部(foreign)IPv4地址的测试需要用到本地网络接口(nt: tcpdump 抓包时用到的接口)及其IPv4 地址和网络掩码. 如果此地址或网络掩码不可用, 或者此接口根本就没有设置相应网络地址和网络掩码(nt: linux 下的 'any' 网络接口就不需要设置地址和掩码, 不过此'any'接口可以收到系统中所有接口的数据包), 该选项不能正常工作.

-F  file
    使用file 文件作为过滤条件表达式的输入, 此时命令行上的输入将被忽略.

-i  interface

    指定tcpdump 需要监听的接口.  如果没有指定, tcpdump 会从系统接口列表中搜寻编号最小的已配置好的接口(不包括 loopback 接口).一但找到第一个符合条件的接口, 搜寻马上结束.

    在采用2.2版本或之后版本内核的Linux 操作系统上, 'any' 这个虚拟网络接口可被用来接收所有网络接口上的数据包(nt: 这会包括目的是该网络接口的, 也包括目的不是该网络接口的). 需要注意的是如果真实网络接口不能工作在'混杂'模式(promiscuous)下,则无法在'any'这个虚拟的网络接口上抓取其数据包.

    如果 -D 标志被指定, tcpdump会打印系统中的接口编号,而该编号就可用于此处的interface 参数.

-l  对标准输出进行行缓冲(nt: 使标准输出设备遇到一个换行符就马上把这行的内容打印出来).在需要同时观察抓包打印以及保存抓包记录的时候很有用. 比如, 可通过以下命令组合来达到此目的:
    ``tcpdump  -l  |  tee dat'' 或者 ``tcpdump  -l   > dat  &  tail  -f  dat''.(nt: 前者使用tee来把tcpdump 的输出同时放到文件dat和标准输出中, 而后者通过重定向操作'>', 把tcpdump的输出放到dat 文件中, 同时通过tail把dat文件中的内容放到标准输出中)

-L  列出指定网络接口所支持的数据链路层的类型后退出.(nt: 指定接口通过-i 来指定)

-m  module
    通过module 指定的file 装载SMI MIB 模块(nt: SMI,Structure of Management Information, 管理信息结构MIB, Management Information Base, 管理信息库. 可理解为, 这两者用于SNMP(Simple Network Management Protoco)协议数据包的抓取. 具体SNMP 的工作原理未知, 另需补充).

    此选项可多次使用, 从而为tcpdump 装载不同的MIB 模块.

-M  secret  如果TCP 数据包(TCP segments)有TCP-MD5选项(在RFC 2385有相关描述), 则为其摘要的验证指定一个公共的密钥secret.

-n  不对地址(比如, 主机地址, 端口号)进行数字表示到名字表示的转换.

-N  不打印出host 的域名部分. 比如, 如果设置了此选现, tcpdump 将会打印'nic' 而不是 'nic.ddn.mil'.

-O  不启用进行包匹配时所用的优化代码. 当怀疑某些bug是由优化代码引起的, 此选项将很有用.

-p  一般情况下, 把网络接口设置为非'混杂'模式. 但必须注意 , 在特殊情况下此网络接口还是会以'混杂'模式来工作; 从而, '-p' 的设与不设, 不能当做以下选现的代名词:'ether host {local-hw-add}' 或  'ether broadcast'(nt: 前者表示只匹配以太网地址为host 的包, 后者表示匹配以太网地址为广播地址的数据包).

-q  快速(也许用'安静'更好?)打印输出. 即打印很少的协议相关信息, 从而输出行都比较简短.

-R  设定tcpdump 对 ESP/AH 数据包的解析按照 RFC1825而不是RFC1829(nt: AH, 认证头, ESP, 安全负载封装, 这两者会用在IP包的安全传输机制中). 如果此选项被设置, tcpdump 将不会打印出'禁止中继'域(nt: relay prevention field). 另外,由于ESP/AH规范中没有规定ESP/AH数据包必须拥有协议版本号域,所以tcpdump不能从收到的ESP/AH数据包中推导出协议版本号.

-r  file
    从文件file 中读取包数据. 如果file 字段为 '-' 符号, 则tcpdump 会从标准输入中读取包数据.

-S  打印TCP 数据包的顺序号时, 使用绝对的顺序号, 而不是相对的顺序号.(nt: 相对顺序号可理解为, 相对第一个TCP 包顺序号的差距,比如, 接受方收到第一个数据包的绝对顺序号为232323, 对于后来接收到的第2个,第3个数据包, tcpdump会打印其序列号为1, 2分别表示与第一个数据包的差距为1 和 2. 而如果此时-S 选项被设置, 对于后来接收到的第2个, 第3个数据包会打印出其绝对顺序号:232324, 232325).

-s  snaplen
    设置tcpdump的数据包抓取长度为snaplen, 如果不设置默认将会是68字节(而支持网络接口分接头(nt: NIT, 上文已有描述,可搜索'网络接口分接头'关键字找到那里)的SunOS系列操作系统中默认的也是最小值是96).68字节对于IP, ICMP(nt: Internet Control Message Protocol,因特网控制报文协议), TCP 以及 UDP 协议的报文已足够, 但对于名称服务(nt: 可理解为dns, nis等服务), NFS服务相关的数据包会产生包截短. 如果产生包截短这种情况, tcpdump的相应打印输出行中会出现''[|proto]''的标志(proto 实际会显示为被截短的数据包的相关协议层次). 需要注意的是, 采用长的抓取长度(nt: snaplen比较大), 会增加包的处理时间, 并且会减少tcpdump 可缓存的数据包的数量, 从而会导致数据包的丢失. 所以, 在能抓取我们想要的包的前提下, 抓取长度越小越好.把snaplen 设置为0 意味着让tcpdump自动选择合适的长度来抓取数据包.

-T  type
    强制tcpdump按type指定的协议所描述的包结构来分析收到的数据包.  目前已知的type 可取的协议为:
    aodv (Ad-hoc On-demand Distance Vector protocol, 按需距离向量路由协议, 在Ad hoc(点对点模式)网络中使用),
    cnfp (Cisco  NetFlow  protocol),  rpc(Remote Procedure Call), rtp (Real-Time Applications protocol),
    rtcp (Real-Time Applications con-trol protocol), snmp (Simple Network Management Protocol),
    tftp (Trivial File Transfer Protocol, 碎文件协议), vat (Visual Audio Tool, 可用于在internet 上进行电
    视电话会议的应用层协议), 以及wb (distributed White Board, 可用于网络会议的应用层协议).

-t     在每行输出中不打印时间戳

-tt    不对每行输出的时间进行格式处理(nt: 这种格式一眼可能看不出其含义, 如时间戳打印成1261798315)

-ttt   tcpdump 输出时, 每两行打印之间会延迟一个段时间(以毫秒为单位)

-tttt  在每行打印的时间戳之前添加日期的打印

-u     打印出未加密的NFS 句柄(nt: handle可理解为NFS 中使用的文件句柄, 这将包括文件夹和文件夹中的文件)

-U    使得当tcpdump在使用-w 选项时, 其文件写入与包的保存同步.(nt: 即, 当每个数据包被保存时, 它将及时被写入文件中,而不是等文件的输出缓冲已满时才真正写入此文件)

      -U 标志在老版本的libcap库(nt: tcpdump 所依赖的报文捕获库)上不起作用, 因为其中缺乏pcap_cump_flush()函数.

-v    当分析和打印的时候, 产生详细的输出. 比如, 包的生存时间, 标识, 总长度以及IP包的一些选项. 这也会打开一些附加的包完整性检测, 比如对IP或ICMP包头部的校验和.

-vv   产生比-v更详细的输出. 比如, NFS回应包中的附加域将会被打印, SMB数据包也会被完全解码.

-vvv  产生比-vv更详细的输出. 比如, telent 时所使用的SB, SE 选项将会被打印, 如果telnet同时使用的是图形界面,
      其相应的图形选项将会以16进制的方式打印出来(nt: telnet 的SB,SE选项含义未知, 另需补充).

-w    把包数据直接写入文件而不进行分析和打印输出. 这些包数据可在随后通过-r 选项来重新读入并进行分析和打印.

-W    filecount
      此选项与-C 选项配合使用, 这将限制可打开的文件数目, 并且当文件数据超过这里设置的限制时, 依次循环替代之前的文件, 这相当于一个拥有filecount 个文件的文件缓冲池. 同时, 该选项会使得每个文件名的开头会出现足够多并用来占位的0, 这可以方便这些文件被正确的排序.

-x    当分析和打印时, tcpdump 会打印每个包的头部数据, 同时会以16进制打印出每个包的数据(但不包括连接层的头部).总共打印的数据大小不会超过整个数据包的大小与snaplen 中的最小值. 必须要注意的是, 如果高层协议数据没有snaplen 这么长,并且数据链路层(比如, Ethernet层)有填充数据, 则这些填充数据也会被打印.(nt: so for link  layers  that pad, 未能衔接理解和翻译, 需补充 )

-xx   tcpdump 会打印每个包的头部数据, 同时会以16进制打印出每个包的数据, 其中包括数据链路层的头部.

-X    当分析和打印时, tcpdump 会打印每个包的头部数据, 同时会以16进制和ASCII码形式打印出每个包的数据(但不包括连接层的头部).这对于分析一些新协议的数据包很方便.

-XX   当分析和打印时, tcpdump 会打印每个包的头部数据, 同时会以16进制和ASCII码形式打印出每个包的数据, 其中包括数据链路层的头部.这对于分析一些新协议的数据包很方便.

-y    datalinktype
      设置tcpdump 只捕获数据链路层协议类型是datalinktype的数据包

-Z    user
      使tcpdump 放弃自己的超级权限(如果以root用户启动tcpdump, tcpdump将会有超级用户权限), 并把当前tcpdump的用户ID设置为user, 组ID设置为user首要所属组的ID(nt: tcpdump 此处可理解为tcpdump 运行之后对应的进程)

      此选项也可在编译的时候被设置为默认打开.(nt: 此时user 的取值未知, 需补充)

图片 10

tcpdump条件表明式

  该表明式用于决定怎样数据包将被打字与印刷. 假诺不给定规则表明式,
互连网上有所被抓获的包都会被打字与印刷,不然,
唯有满足条件表明式的多少包被打字与印刷.(nt: all packets, 可领会为,
全体被钦定接口捕获的数据包).

  表明式由四个或多少个’表明元’组成(nt: primitive, 说明元,
可见晓为组合表达式的中央因素).
三个宣布元平日由3个或三个修饰符(qualifiers)后跟三个名字或数字代表的id组成(nt:
即, ‘qualifiers id’).有二种分裂品类的修饰符:type, dir以及 proto.

图片 11

type 修饰符指定id 所代表的对象类型, id可以是名字也可以是数字. 可选的对象类型有: host, net, port 以及portrange(nt: host 表明id表示主机, net 表明id是网络, port 表明id是端而portrange 表明id 是一个端口范围).  如, 'host foo', 'net 128.3', 'port 20', 'portrange 6000-6008'(nt: 分别表示主机 foo,网络 128.3, 端口 20, 端口范围 6000-6008). 如果不指定type 修饰符, id默认的修饰符为host.

dir 修饰符描述id 所对应的传输方向, 即发往id 还是从id 接收(nt: 而id 到底指什么需要看其前面的type 修饰符).可取的方向为: src, dst, src 或 dst, src并且dst.(nt:分别表示, id是传输源, id是传输目的, id是传输源或者传输目的, id是传输源并且是传输目的). 例如, 'src foo','dst net 128.3', 'src or dst port ftp-data'.(nt: 分别表示符合条件的数据包中, 源主机是foo, 目的网络是128.3, 源或目的端口为 ftp-data).如果不指定dir修饰符, id 默认的修饰符为src 或 dst.对于链路层的协议,比如SLIP(nt: Serial Line InternetProtocol, 串联线路网际网络协议), 以及linux下指定'any' 设备, 并指定'cooked'(nt | rt: cooked 含义未知, 需补充) 抓取类型, 或其他设备类型,可以用'inbound' 和 'outbount' 修饰符来指定想要的传输方向.

proto 修饰符描述id 所属的协议. 可选的协议有: ether, fddi, tr, wlan, ip, ip6, arp, rarp, decnet, tcp以及 upd.(nt | rt: ether, fddi, tr, 具体含义未知, 需补充. 可理解为物理以太网传输协议, 光纤分布数据网传输协议,以及用于路由跟踪的协议.  wlan, 无线局域网协议; ip,ip6 即通常的TCP/IP协议栈中所使用的ipv4以及ipv6网络层协议;arp, rarp 即地址解析协议,反向地址解析协议; decnet, Digital Equipment Corporation开发的, 最早用于PDP-11 机器互联的网络协议; tcp and udp, 即通常TCP/IP协议栈中的两个传输层协议).

    例如, `ether src foo', `arp net 128.3', `tcp port 21', `udp portrange 7000-7009'分别表示 '从以太网地址foo 来的数据包','发往或来自128.3网络的arp协议数据包', '发送或接收端口为21的tcp协议数据包', '发送或接收端口范围为7000-7009的udp协议数据包'.

    如果不指定proto 修饰符, 则默认为与相应type匹配的修饰符. 例如, 'src foo' 含义是 '(ip or arp or rarp) src foo' (nt: 即, 来自主机foo的ip/arp/rarp协议数据包, 默认type为host),`net bar' 含义是`(ip  or  arp  or rarp) net bar'(nt: 即, 来自或发往bar网络的ip/arp/rarp协议数据包),`port 53' 含义是 `(tcp or udp) port 53'(nt: 即, 发送或接收端口为53的tcp/udp协议数据包).(nt: 由于tcpdump 直接通过数据链路层的 BSD 数据包过滤器或 DLPI(datalink provider interface, 数据链层提供者接口)来直接获得网络数据包, 其可抓取的数据包可涵盖上层的各种协议, 包括arp, rarp, icmp(因特网控制报文协议),ip, ip6, tcp, udp, sctp(流控制传输协议).

    对于修饰符后跟id 的格式,可理解为, type id 是对包最基本的过滤条件: 即对包相关的主机, 网络, 端口的限制;dir 表示对包的传送方向的限制; proto表示对包相关的协议限制)

    'fddi'(nt: Fiber Distributed Data Interface) 实际上与'ether' 含义一样: tcpdump 会把他们当作一种''指定网络接口上的数据链路层协议''. 如同ehter网(以太网), FDDI 的头部通常也会有源, 目的, 以及包类型, 从而可以像ether网数据包一样对这些域进行过滤. 此外, FDDI 头部还有其他的域, 但不能被放到表达式中用来过滤

    同样, 'tr' 和 'wlan' 也和 'ether' 含义一致, 上一段对fddi 的描述同样适用于tr(Token Ring) 和wlan(802.11 wireless LAN)的头部. 对于802.11 协议数据包的头部, 目的域称为DA, 源域称为 SA;而其中的 BSSID, RA, TA 域(nt | rt: 具体含义需补充)不会被检测(nt: 不能被用于包过虑表达式中).

图片 12

  除以上所描述的抒发元(‘primitive’), 还有别的情势的公布元,
并且与上述表述元格式差异. 比如: gateway, broadcast, less,
greater以及算术表达式(nt: 个中每1个都算1种新的表明元).
上面将会对这么些表述元进行表达.

  表达元以内还足以通过首要字and, or 以及 not 进行连接,
从而可组合相比较复杂的尺度发挥式. 比如,`host foo and not port ftp and not
port ftp-data'(nt: 其过滤条件可分晓为,
数据包的主机为foo,并且端口不是ftp(端口二1) 和ftp-data(端口20,
常用端口和名字的应和可在linux 系统中的/etc/service 文件中找到)).

  为了表示方便, 同样的修饰符能够被简单, 如’tcp dst port ftp or ftp-data
or domain’ 与以下的表达式含义相同’tcp dst port ftp or tcp dst port
ftp-data or tcp dst port domain’.(nt: 其过滤条件可明白为,包的商业事务为tcp,
目标端口为ftp 或 ftp-data 或 domain(端口伍三) ).

 
借助括号以及相应操作符,可把发挥元组合在一起行使(由于括号是shell的特殊字符,
所以在shell脚本或极端中应用时务必对括号进行转义, 即'(‘
与’)’供给各自表完结’\(‘ 与 ‘\)’).

  有效的操作符有:

 否定操作 (`!' 或 `not')
 与操作(`&&' 或 `and')
 或操作(`||' 或 `or')

  否定操作符的先行级别最高. 与操作和或操作优先级别相同,
并且2者的整合顺序是从左到右. 要专注的是, 表明’与操作’时,

  必要显式写出’and’操作符, 而不只是把前后公布元并列放置(nt:
2者中间的’and’ 操作符不可省略).

  假使一个标识符前从不重点字,
则表明式的分析进程中近年来用过的机要字(往往也是从左往右距离标识符方今的重大字)将被使用.比如,
    not host vs and ace
  是以下表达的简短:
    not host vs and host ace
  而不是not (host vs or ace).(nt: 前两者表示,
所需数据包不是发源或发往host vs,
而是来自或发往ace.而后者表示数据包只要不是来源于或发往vs或ac都符合必要)

 
整个条件表明式能够被看成1个独门的字符串参数也能够被看作空格分割的多个参数字传送入tcpdump,
后者更利于些. 常常, 要是表明式中富含元字符(nt: 如正则表明式中的’*’,
‘.’以及shell中的'(‘等字符), 最棒只怕使用单独字符串的点子传入.
那时,整个表明式需求被单引号括起来. 多参数的扩散格局中,
全体参数最后仍旧被空格串联在协同, 作为叁个字符串被解析.

附录:tcpdump的表明元

(nt: True 在偏下的叙说中含义为:
相应标准表明式中只蕴涵以下所列的多个一定表明元, 此时表达式为真,
即条件获得满意)

dst host host
万1IPv4/v六 数据包的指标域是host, 则与此对应的规范表达式为真.host
能够是二个ip地址, 也得以是一个主机名.
src host host
借使IPv4/v6 数据包的源域是host, 则与此对应的标准化说明式为真.
host 能够是3个ip地址, 也足以是一个主机名.
host host
假定IPv4/v陆数据包的源或指标地址是 host,
则与此对应的规范表明式为真.以上的多少个host
表达式此前能够添加以下重点字:ip, arp, rarp, 以及 ip6.比如:
ip host host
也足以发挥为:
ether proto \ip and host host(nt: 这种表达格局在上边有认证,
在那之中ip在此之前供给有\来转义,因为ip 对tcpdump 来说早已是二个重大字了.)
借使host 是一个独具几个IP 的主机, 那么任何三个地方都会用来包的万分(nt:
即发向host 的数据包的目标地址能够是那多少个IP中的任何3个, 从host
接收的数据包的源地址也足以是那个IP中的任何3个).
ether dst ehost
只要数据包(nt: 指tcpdump 可抓取的数据包, 包含ip 数据包,
tcp数据包)的以太网目的地址是ehost,则与此对应的规范表达式为真. Ehost
可以是/etc/ethers 文件中的名字或一个数字地址(nt: 可经过 man ethers
看到对/etc/ethers 文件的讲述, 样例中用的是数字地址)
ether src ehost
假定数据包的以太网源地址是ehost, 则与此对应的口径表明式为真.
ether host ehost
比方数据包的以太网源地址或指标地址是ehost, 则与此对应的准绳表明式为真.
gateway host
假若数据包的网关地址是host, 则与此对应的口径表明式为真. 须要注意的是,
这里的网关地址是指以太网地址, 而不是IP 地址(nt | rt: I.e., 例如,
可见道为’注意’.the Ethernet source or destination address,
以太网源和指标地方, 可领略为, 指代上句中的’网关地址’ ).host
必须是名字而不是数字,
并且必须在机器的’主机名-ip地址’以及’主机名-以太地址’两大映射关系中
有其条款(前一映射关系可通过/etc/hosts文件, DNS 或 NIS得到,
而后壹映射关系可经过/etc/ethers 文件得到. nt: /etc/ethers并不一定存在 ,
可透过man ethers 看到其数额格式, 怎样创设该公文,
未知,需补充).约等于说host 的意义是 ether host ehost 而不是 host host,
并且ehost必须是名字而不是数字.
当前, 该选用在支撑IPv陆地址格式的配置环境中不起效能(nt: configuration,
配置环境, 可领略为,通讯双方的网络布局).
dst net net
一经数据包的靶子地方(IPv四或IPv六格式)的互联网号字段为 net,
则与此对应的基准表达式为真.
net 能够是从网络数据库文件/etc/networks 中的名字,
也足以是2个数字情势的互联网编号.
三个数字IPv四 互连网编号将以点分肆元组(比如, 1玖二.16八.1.0),
或点分长富组(比如, 1九二.16八.一 ), 或点分二元组(比如, 17二.1六),
或纯粹单元组(比如, 十)来表述;
对应于那四种情景的互连网掩码分别是:肆元组:25五.255.25伍.255(那也意味对net
的合营就像是对主机地址(host)的万分:地址的多个部分都用到了),长富组:25伍.25五.255.0,
2元组:255.25伍.0.0, 1元组:25五.0.0.0.
对此IPv6 的地点格式, 网络编号必须全方位写出来(8个部分必须全体写出来);
相应网络掩码为:
ff:ff:ff:ff:ff:ff:ff:ff, 所以IPv陆 的互连网相配是的确的’host’情势的非凡(nt
| rt | rc:地址的七个部分都会用到,是不是不属于网络的字节填写0,
需接下去补充),
但同时必要一个网络掩码长度参数来具体内定前边多少字节为网络掩码(nt:
可透过上边包车型地铁net net/len 来钦点)
src net net
假定数据包的源地址(IPv四或IPv六格式)的网络号字段为 net,
则与此对应的原则表明式为真.
net net
万1数据包的源或目标地址(IPv4或IPv六格式)的互联网号字段为 net,
则与此对应的规格表明式为真.
net net mask netmask
要是数据包的源或指标地址(IPv四或IPv陆格式)的网络掩码与netmask 相称,
则与此对应的规范表达式为真.此选项在此以前还足以包容src和dst来相称源网络地址或指标网络地址(nt:
比如 src net net mask 25伍.255.25伍.0).该选拔对于ipv陆 网络地址无效.
net net/len
比方数据包的源或目标地址(IPv四或IPv六格式)的互联网编号字段的比特数与len相同,
则与此对应的标准表明式为真.此选项在此以前还足以相称src和dst来匹配源互联网地址或目的网络地址(nt
| rt | tt: src net net/二四,
表示须要相称源地址的网络编号有2多少人的数据包).
dst port port
假定数据包(包罗ip/tcp, ip/udp, ip6/tcp or ip6/udp协议)的指标端口为port,
则与此对应的基准表明式为真.port
能够是三个数字也足以是3个名字(相应名字能够在/etc/services 中找到该名字,
也可以经过man tcp 和man udp来获取有关描述音讯 ). 假设利用名字,
则该名字对应的端口号和呼应选取的商谈都会被检查.
假诺只是利用三个数字端口号,则唯有相应端口号被检查(比如, dst port 513将会使tcpdump抓取tcp协议的login 服务和udp商业事务的who 服务数据包, 而port
domain 将会使tcpdump 抓取tcp协议的domain 服务数据包, 以及udp
协商的domain 数据包)(nt | rt: ambiguous name is used 不可精通,
需补充).
src port port
假定数据包的源端口为port, 则与此对应的规范表明式为真.
port port
若是数据包的源或目标端口为port, 则与此对应的尺度表明式为真.
dst portrange port1-port2
若果数据包(包涵ip/tcp, ip/udp, ip6/tcp or
ip6/udp协议)的目标端口属于port1到port二这些端口范围(包涵port一, port二),
则与此对应的基准表明式为真. tcpdump 对port1 和port2 解析与对port
的辨析壹致(nt:在dst port port 选项的讲述中有认证).
src portrange port1-port2
假定数据包的源端口属于port一到port二那几个端口范围(包罗 port一, port2),
则与此对应的尺码表达式为真.
portrange port1-port2
比方数据包的源端口或指标端口属于port一到port二这些端口范围(包含 port一,
port二), 则与此对应的标准表明式为真.
以上有关port 的选项都得以在其前边添加关键字:tcp 只怕udp, 比如:
tcp src port port
那将使tcpdump 只抓取源端口是port 的tcp数据包.
less length
借使数据包的尺寸比length 小或等于length, 则与此对应的口径表达式为真.
那与’len <= length’ 的含义一致.
greater length
假使数据包的长短比length 大或等于length, 则与此对应的准绳表达式为真.
这与’len >= length’ 的意思壹致.
ip proto protocol
一经数额包为ipv肆数据包并且其情商项目为protocol,
则与此对应的尺度表明式为真.
Protocol 能够是3个数字也能够是名字, 比如:icmp6, igmp, igrp(nt: Interior
Gateway Routing Protocol,内部网关路由协和式飞机), pim(Protocol Independent
Multicast, 独立组播协议, 应用于组播路由器),ah, esp(nt: ah, 认证头, esp
安全负载封装, 那五头会用在IP包的安全传输体制中 ), vrrp(Virtual Router
Redundancy Protocol, 虚拟路由器冗余协议), udp, or tcp. 由于tcp , udp
以及icmp是tcpdump
的重中之重字,所以在这个协议名字在此之前务供给用\来展开转义(假设在C-shell
中须求用\\来拓展转义).
注意此公布元不会把数据包中协议头链中有着协议头内容总体打字与印刷出来(nt:
实际上只会打字与印刷钦赐协议的有些底部音讯, 比如能够用tcpdump -i eth0 ‘ip
proto \tcp and host 192.168.三.14四’, 则只打字与印刷主机1玖贰.16捌.三.14四发出或接受的数额包中tcp 协议头所蕴涵的音讯)
ip6 proto protocol
假诺数量包为ipv6数据包并且其情商项目为protocol,
则与此对应的规格表达式为真.
在意此公布元不会把数量包中协议头链中保有协议头内容全方位打印出来
ip6 protochain protocol
若果数额包为ipv陆数据包并且其情商链中包涵类型为protocol协议头,
则与此对应的尺度表达式为真. 比如,
ip6 protochain 6
将同盟其情商头链中装有TCP
协议头的IPv⑥数据包.此数据包的IPv八头和TCP头之间大概还会包蕴验证头,
路由头, 只怕逐跳寻径选项头.
通过所接触的相应BPF(伯克利 Packets Filter, 可清楚为,
在数据链路层提供数据包过滤的一种机制)代码相比较麻烦,
再正是BPF优化代码也得不到照顾到此部分,
从而此选项所接触的包匹配恐怕会相比慢.
ip protochain protocol
与ip陆 protochain protocol 含义相同, 但那用在IPv四数据包.
ether broadcast
只要数据包是以太网广播数据包, 则与此对应的准绳表明式为真. ether
关键字是可选的.
ip broadcast
假定数据包是IPv四广播数据包, 则与此对应的规格表达式为真. 那将使tcpdump
检查广播地址是还是不是吻合全0和全壹的片段约定,并寻找互连网接口的网络掩码(互连网接口为及时在其上抓包的网络接口).
借使抓包所在网络接口的网络掩码违规,
或然此接口根本就不曾设置相应网络地址和互连网,
亦或是在linux下的’any’网络接口上抓包(此’any’接口能够吸收接纳系统中不断2个接口的数据包(nt:
实际上, 可领略为系统中有所可用的接口)),网络掩码的自小编批评不可能健康进行.
ether multicast
若果数据包是多少个以太网多点广播数据包(nt: 多点广播,
可领略为把新闻还要传递给一组指标地址,
而不是网络中负有地方,后者为可称之为广播(broadcast)),
则与此对应的尺度表明式为真. 关键字ether 能够省略.
此选项的含义与以下原则表达式含义壹致:`ether[0] & 1 != 0′(nt:
可领略为, 以太网数据包中第0个字节的最低位是一,
这代表那是1个多点广播数据包).
ip multicast
万1数据包是ipv四多点广播数据包, 则与此对应的口径表明式为真.
ip6 multicast
只要数据包是ipv6多点广播数据包, 则与此对应的基准表明式为真.
ether proto protocol
借使数量包属于以下以太协议项目, 则与此对应的条件表明式为真.
情商(protocol)字段, 能够是数字或以下所列出了名字: ip, ip陆, arp, rarp,
atalk(AppleTalk互连网协议),
aarp(nt: AppleTalk Address Resolution Protocol,
AppleTalk互连网的地址解析协议),
decnet(nt: 三个由DEC集团所提供的互联网协议栈), sca(nt: 未知, 需补充),
lat(Local Area Transport, 区域传输协议,
由DEC公司支付的以太网主机互联协议),
mopdl, moprc, iso(nt: 未知, 需补充), stp(Spanning tree protocol,
生成树协议, 可用于防止互联网中发出链接循环),
ipx(nt: Internetwork Packet Exchange, Novell 互连网中利用的互连网层协议),
可能
netbeui(nt: NetBIOS Extended User Interface,可精通为,
网络基本输入输出系统接口增加).
protocol字段能够是1个数字或以下协议名之一:ip, ip陆, arp, rarp, atalk,
aarp, decnet, sca, lat,
mopdl, moprc, iso, stp, ipx, 或者netbeui.
需要求注意的是标识符也是重中之重字, 从而必须通过’\’来展开转义.
(SNAP:子网接入协议 (SubNetwork Access Protocol))
在光导纤维分布式数据网络接口(其表明元样式得以是’fddi protocol arp’),
令牌环网(其发挥元样式得以是’tr protocol arp’),
以及IEEE 80贰.1一 有线局域网(其发挥元样式得以是’wlan protocol arp’)中,
protocol
标识符来自80二.贰 逻辑链路控制层头,
在FDDI, Token Ring 或 80二.2只中会蕴藏此逻辑链路控制层头.
当以这几个互连网上的呼应的合计标识为过滤条件时,
tcpdump只是检查LLC底部中以0x000000为组合单元标识符(OUI, 0x000000
标识3个内部以太网)的1段’SNAP格式结构’中的protocol ID 域,
而不会管包中是不是有一段OUI为0x000000的’SNAP格式
布局'(nt: SNAP, SubNetwork Access Protocol,子网接入协议 ). 以下两样:
iso tcpdump 会检查LLC底部中的DSAP域(Destination service Access Point,
目的服务接入点)和
SSAP域(源服务接入点).(nt: iso 研讨未知, 需补充)
stp 以及 netbeui
tcpdump 将会检查LLC 底部中的指标服务接入点(Destination service Access
Point);
atalk
tcpdump 将会检查LLC 底部中以0x0柒仟7 为OUI标识的’SNAP格式结构’,
并会检查AppleTalk etype域.
(nt: AppleTalk etype 是还是不是位于SNAP格式结构中, 未知, 需补充).
其它, 在以太网中, 对于ether proto protocol 选项, tcpdump 会为 protocol
所钦点的商业事务检查
以太网类型域(the Ethernet type 田野同志), 但以下那个协议除却:
iso, stp, and netbeui
tcpdump 将会检查802.三 物理帧以及LLC 头(那二种检查与FDDI, TXC60,
80二.1壹网络中的相应检查1致);
(nt: 80二.叁, 明白为IEEE 80贰.三, 其为一雨后春笋IEEE 标准的集合.
此聚众定义了有线以太网络中的物理层以及数额
链路层的传播媒介连着控制子层. stp 在上文已有描述)
atalk
tcpdump 将会检讨以太网物理帧中的AppleTalk etype 域
, 同时也会检查数据包中LLC底部中的’SNAP格式结构’
(那三种检查与FDDI, TLAND, 80二.1一网络中的相应检查1致)
aarp tcpdump 将会检查AppleTalk ACR-VP etype 域, 此域或存在于以太网物理帧中,
或存在于LLC(由80贰.贰 所定义)的
‘SNAP格式结构’中, 当为后人时, 该’SNAP格式结构’的OUI标识为0x000000;
(nt: 802.二, 可见晓为, IEEE80二.贰, 当中定义了逻辑链路控制层(LLC),
该层对应于OSI 网络模型中数量链路层的上层部分.
LLC 层为利用数据链路层的用户提供了2个合并的接口(平时用户是网络层).
LLC层以下是传播媒介连着控制层(nt: MAC层,
对应于数据链路层的下层部分).该层的贯彻以及工作章程会基于不相同物理传输媒介的不等而有所差距(比如,
以太网, 令牌环网,
光导纤维分布数据接口(nt: 实际可精通为1种光导纤维网络), 有线局域网(802.11),
等等.)
ipx tcpdump 将会检讨物理以太帧中的IPX etype域, LLC头中的IPX
DSAP域,无LLC头并对IPX进行了包装的80二.三帧,
以及LLC 底部’SNAP格式结构’中的IPX etype 域(nt | rt: SNAP frame,
可见晓为, LLC 头中的’SNAP格式结构’.
该意义属开端驾驭阶段, 需补充).
decnet src host
万一数额包中DECNET源地址为host, 则与此对应的口径表明式为真.
(nt:decnet, 由Digital Equipment Corporation 开发, 最早用于PDP-1一机器互联的互联网协议)
decnet dst host
假使数据包中DECNET目标地址为host, 则与此对应的条件表明式为真.
(nt: decnet 在上文已有认证)
decnet host host
假使数据包中DECNET指标地址或DECNET源地址为host,
则与此对应的口径表明式为真.
(nt: decnet 在上文已有认证)
ifname interface
1经数据包已被标记为从内定的网络接口中收到的,
则与此对应的规范表明式为真.
(此选项只适用于被OpenBSD中pf程序做过标记的包(nt: pf, packet filter,
可清楚为OpenBSD中的防火墙程序))
on interface
与 ifname interface 含义1致.
rnr num
假如数额包已被标记为相称PF的条条框框, 则与此对应的准绳表明式为真.
(此选项只适用于被OpenBSD中pf程序做过标记的包(nt: pf, packet filter,
可明白为OpenBSD中的防火墙程序))
rulenum num
与 rulenum num 含义一致.
reason code
若是数量包已被标记为带有PF的同盟结果代码,
则与此对应的标准表明式为真.有效的结果代码有: match, bad-offset,
fragment, short, normalize, 以及memory.
(此选项只适用于被OpenBSD中pf程序做过标记的包(nt: pf, packet filter,
可明白为OpenBSD中的防火墙程序))
rset name
万1数额包已被标记为同盟钦点的规则集, 则与此对应的规格表明式为真.
(此选项只适用于被OpenBSD中pf程序做过标记的包(nt: pf, packet filter,
可通晓为OpenBSD中的防火墙程序))
ruleset name
与 rset name 含义1致.
srnr num
要是数量包已被标记为同盟钦命的平整集中的一定规则(nt: specified PF rule
number, 特定规则编号, 即特定规则),
则与此对应的标准表明式为真.(此选项只适用于被OpenBSD中pf程序做过标记的包(nt:
pf, packet filter, 可清楚为
OpenBSD中的防火墙程序))
subrulenum num
与 srnr 含义1致.
action act
设若包被记录时PF会执行act钦命的动作, 则与此对应的规格表明式为真.
有效的动作有: pass, block.
(此选项只适用于被OpenBSD中pf程序做过标记的包(nt: pf, packet filter,
可精通为OpenBSD中的防火墙程序))
ip, ip6, arp, rarp, atalk, aarp, decnet, iso, stp, ipx, netbeui
与以下表明元含义一致:
ether proto p
p是以上协议中的3个.
lat, moprc, mopdl
与以下表明元含义1致:
ether proto p
p是以上协议中的二个. 必要求留心的是tcpdump近年来还不能够分析那一个协议.
vlan [vlan_id]
假若数额包为IEEE80二.一Q VLAN 数据包, 则与此对应的规则表明式为真.
(nt: IEEE80二.一Q VLAN, 即IEEE80二.一Q 虚拟互联网协议,
此协商用于不相同网络的里边的强强联合).
如果[vlan_id] 被钦赐, 则唯有多少包蕴有钦点的杜撰互联网id(vlan_id),
则与此对应的基准表明式为真.
要留意的是, 对于VLAN数据包,
在表达式中碰着的第一个vlan关键字会改变表明式中接下去关键字所对应数据包中数据的
初叶地方(即解码偏移). 在VLAN网络种类中过滤数据包时, vlan
[vlan_id]表明式能够被频仍应用. 关键字vlan每出现叁次都会大增
四字节过滤偏移(nt: 过滤偏移, 可清楚为地方的解码偏移).
例如:
vlan 100 && vlan 200
意味着: 过滤封装在VLAN100中的VLAN200网络上的数据包
再例如:
vlan && vlan 300 && ip
意味着: 过滤封装在VLAN300 互连网中的IPv四数据包,
而VLAN300网络又被更外层的VLAN封装
mpls [label_num]
若是数量包为MPLS数据包, 则与此对应的基准表达式为真.
(nt: MPLS, Multi-Protocol Label Switch, 多商业事务标签交换,
一种在开放的通讯网上利用标签辅导数据传输的技巧).
如果[label_num] 被钦赐, 则唯有数量包括有钦定的价签id(label_num),
则与此对应的标准表达式为真.
要注意的是, 对于内含MPLS音讯的IP数据包(即MPLS数据包),
在表明式中蒙受的第二个MPLS关键字会改变表达式中接下去关键字所对应数据包中数据的
始于地方(即解码偏移). 在MPLS网络连串中过滤数据包时, mpls
[label_num]表明式能够被频仍施用. 关键字mpls每出现三遍都会追加
四字节过滤偏移(nt: 过滤偏移, 可见晓为地点的解码偏移).
例如:
mpls 100000 && mpls 1024
意味着: 过滤外层标签为一千00 而层标签为十2四的数据包
再如:
mpls && mpls 1024 && host 192.9.200.1
意味着: 过滤发往或缘于19二.玖.200.1的数据包, 该数据包的内层标签为拾2四,
且拥有三个外层标签.
pppoed
若果数额包为PPP-over-Ethernet的服务器探寻数据包(nt: Discovery packet,
其ethernet type 为0x8八63),则与此对应的条件表达式为真.
(nt: PPP-over-Ethernet, 点对点以太网承载协议,
其点对点的连天建立分为Discovery阶段(地址发现) 和
PPPoE 会话建立阶段 , discovery 数据包正是首先等级发出来的包. ethernet
type
是以太帧里的二个字段,用来指明应用于帧数据字段的说道)
pppoes
固然数额包为PPP-over-Ethernet会话数据包(nt: ethernet type 为0x8864,
PPP-over-Ethernet在上文已有认证, 可检索
要害字’PPP-over-Ethernet’找到其描述), 则与此对应的尺度表达式为真.
要注意的是, 对于PPP-over-Ethernet会话数据包,
在表明式中蒙受的首个pppoes关键字会改变表明式中接下去关键字所对应数据包中数据的
始于地点(即解码偏移).
例如:
pppoes && ip
意味着: 过滤嵌入在PPPoE数据包中的ipv四数据包
tcp, udp, icmp
与以下表达元含义一致:
ip proto p or ip6 proto p
个中p 是以上协议之1(含义分别为:
假诺数量包为ipv肆或ipv陆数据包并且其情商项目为 tcp,udp, 或icmp则与此对
应的尺度表明式为真)
iso proto protocol
万一数据包的商谈项目为iso-osi协议栈中protocol协议,
则与此对应的口径表达式为真.(nt: [初解]iso-osi 网络模型中每
层的实际协议与tcp/ip相应层选取的磋商分化.
iso-osi各层中的具体磋商另需补充 )
protocol 可以是一个数字编号, 或以下名字中之一:
clnp, esis, or isis.
(nt: clnp, Connectionless Network Protocol, 这是OSI互连网模型中网络层协议
, esis, isis 未知, 需补充)
clnp, esis, isis
是以下表明的缩写
iso proto p
内部p 是上述协议之壹
l1, l2, iih, lsp, snp, csnp, psnp
为IS-IS PDU 类型 的缩写.
(nt: IS-IS PDU, Intermediate system to intermediate system Protocol Data
Unit, 中间系统到
中间系统的协商数据单元. OSI(Open Systems Interconnection)网络由终端系统,
中间系统构成.
极限系统指路由器, 而终端系统指用户设备.
路由器形成的当地组称之为’区域’(Area)和多个区域整合1个’域’(Domain).
IS-IS 提供域内或区域内的路由. l1, l2, iih, lsp, snp, csnp, psnp
表示PDU的品类, 具体意思另需补充)
vpi n
只要数据包为ATM数据包, 则与此对应的规格表明式为真. 对于Solaris
操作系统上的SunATM设备 ,
设若数量包为ATM数据包, 并且其虚构路径标识为n,
则与此对应的准绳表明式为真.
(nt: ATM, Asychronous Transfer Mode,
实际上可清楚为由ITU-T(国际电信联盟邮电通讯标准化部门)提出的二个与
TCP/IP中IP层作用雷同的一名目繁多协议, 具体协议层次另需补充)
vci n
只要数额包为ATM数据包, 则与此对应的标准表明式为真. 对于Solaris
操作系统上的SunATM设备 ,
借使数据包为ATM数据包, 并且其虚构通道标识为n,
则与此对应的条件表达式为真.
(nt: ATM, 在上文已有描述)
lane
假设数据包为ATM LANE 数据包, 则与此对应的口径表明式为真. 要小心的是,
若是是仿照以太网的LANE数据包大概
LANE逻辑单元控制包,
表明式中率先个lane关键字会改变表明式中随后条件的测试. 假如没有
内定lane关键字,
条件测试将依照数据包中内含LLC(逻辑链路层)的ATM包来实行.
llc
若是数额包为ATM数据包, 则与此对应的尺度表明式为真. 对于Solaris
操作系统上的SunATM设备 ,
尽管数据包为ATM数据包, 并且内含LLC则与此对应的规则表明式为真
oamf4s
一旦数量包为ATM数据包, 则与此对应的原则表明式为真. 对于Solaris
操作系统上的SunATM设备 , 若是数据包为ATM数据包
同时是Segment OAM F4 信元(VPI=0 并且 VCI=叁),
则与此对应的口径表明式为真.
(nt: OAM, Operation Administration and Maintenance,
操作管理和保卫安全,可精通为:ATM互联网中用来互连网
管理所爆发的ATM信元的分类方式.
ATM互连网中传输单位为信元,
要传输的多寡毕竟会被细分成固定长度(53字节)的信元,
(初明白: 一条物理线路可被复用, 形成虚拟路径(virtual path).
而一条虚拟路径再一次被复用, 形成虚拟信道(virtual channel)).
通讯双方的编址情势为:虚拟路径编号(VPI)/虚拟信道编号(VCI)).
OAM F4 flow 信元又可分为segment 类和end-to-end 类, 其分别未知,
需补充.)
oamf4e
万壹数据包为ATM数据包, 则与此对应的标准表达式为真. 对于Solaris
操作系统上的SunATM设备 , 假使数据包为ATM数据包
同时是 end-to-end OAM F4 信元(VPI=0 并且 VCI=4),
则与此对应的条件表明式为真.
(nt: OAM 与 end-to-end OAM F四 在上文已有描述, 可寻找’oamf肆s’来恒定)
oamf4
假若数量包为ATM数据包, 则与此对应的标准表明式为真. 对于Solaris
操作系统上的SunATM设备 , 固然数据包为ATM数据包
还如果 end-to-end 或 segment OAM F四 信元(VPI=0 并且 VCI=三 要么 VCI=肆),
则与此对应的条件表明式为真.
(nt: OAM 与 end-to-end OAM F四 在上文已有描述, 可搜索’oamf四s’来稳定)
oam
假若数额包为ATM数据包, 则与此对应的标准表明式为真. 对于Solaris
操作系统上的SunATM设备 , 要是数据包为ATM数据包
与此同时是 end-to-end 或 segment OAM F四 信元(VPI=0 并且 VCI=三 或许 VCI=肆),
则与此对应的条件表明式为真.
(nt: 此选项与oamf四再一次, 需确认)
metac
若果数额包为ATM数据包, 则与此对应的口径表明式为真. 对于Solaris
操作系统上的SunATM设备 , 假若数据包为ATM数据包
并且是根源’元信令线路'(nt: VPI=0 并且 VCI=1, ‘元信令线路’, meta
signaling circuit, 具体意思未知, 需补充),
则与此对应的尺度表明式为真.
bcc
假诺数量包为ATM数据包, 则与此对应的规格表明式为真. 对于Solaris
操作系统上的SunATM设备 , 假如数据包为ATM数据包
与此同时是出自’广播信令线路'(nt: VPI=0 并且 VCI=二, ‘广播信令线路’, broadcast
signaling circuit, 具体意思未知, 需补充),
则与此对应的条件表明式为真.
sc
借使数量包为ATM数据包, 则与此对应的标准化表明式为真. 对于Solaris
操作系统上的SunATM设备 , 尽管数据包为ATM数据包
还假若缘于’信令线路'(nt: VPI=0 并且 VCI=伍, ‘信令线路’, signaling
circuit, 具体意思未知, 需补充),
则与此对应的规范表明式为真.
ilmic
只要数据包为ATM数据包, 则与此对应的尺度表达式为真. 对于Solaris
操作系统上的SunATM设备 , 若是数据包为ATM数据包
并且是根源’ILMI线路'(nt: VPI=0 并且 VCI=16, ‘ILMI’, Interim Local
Management Interface , 可见道为
听别人说SNMP(简易互连网管理协议)的用于网络管理的接口)
则与此对应的条件表明式为真.
connectmsg
一经数据包为ATM数据包, 则与此对应的尺码表明式为真. 对于Solaris
操作系统上的SunATM设备 , 倘若数据包为ATM数据包
同时是来源于’信令线路’并且是Q.2931协议中显明的以下两种音信: Setup, Calling
Proceeding, Connect,
Connect Ack, Release, 或然Release Done. 则与此对应的条件表明式为真.
(nt: Q.293一 为ITU(电联)制定的信令协议.
个中分明了在宽带综合工作数字网络的用户接口层建立, 维护, 废除
互联网连接的相关步骤.)
metaconnect
即便数据包为ATM数据包, 则与此对应的规则表明式为真. 对于Solaris
操作系统上的SunATM设备 , 即使数据包为ATM数据包
再者是根源’元信令线路’并且是Q.293一协议中分明的以下二种新闻: Setup,
Calling Proceeding, Connect,
Connect Ack, Release, 可能Release Done. 则与此对应的尺度表达式为真.
expr relop expr
壹旦relop 两侧的操作数(expr)满意relop 内定的涉嫌,
则与此对应的规则表明式为真.
relop 能够是以下关系操作符之1: >, <, <=, =, !=.
expr 是三个算术表明式. 此表明式中可选取整型常量(表示方法与标准C中1致),
二进制操作符(+, -, *, /, &, |,
<<, >>), 长度操作符, 以及对一定数据包中数据的引用操作符.
要留意的是, 全体的比较操作都默许操作数是无符号的,
比如说, 0x七千0000 和 0xffffffff 都是大于0的(nt: 对于有标志的可比,
依照补码规则, 0xffffffff
会小于0). 如若要引用数据包中的多寡, 可使用以下表达格局:
proto [expr : size]
proto 的取值可以是以下取值之1:ether, fddi, tr, wlan, ppp, slip, link,
ip, arp, rarp,
tcp, udp, icmp, ip陆 依然 radio. 这指明了该引用操作所对应的协议层.(ether,
fddi, wlan,
tr, ppp, slip and link 对应于数据链路层, radio
对应于80②.11(wlan,有线局域网)有些数据包中的附带的
“radio”头(nt: 个中描述了Porter率, 数据加密等音讯)).
要留意的是, tcp, udp
等上层协议近日只好接纳于互联网层采纳为IPv四或IPv陆说道的互连网(此限制会在tcpdump今后版本中
进展修改). 对于钦赐协议的所需数据, 其在包数据中的偏移字节由expr
来内定.
如上表明中size 是可选的,
用来指明大家关心那有个别数据段的长短(nt:日常那段数据
是数据包的一个域), 其长度能够是一, ②, 或五个字节. 假若不给定size,
暗中认可是三个字节. 长度操作符的重点字为len,
那代码整个数据包的长度.
例如, ‘ether[0] & 1 != 0’ 将会使tcpdump 抓取全部多点广播数据包.(nt:
ether[0]字节的最低位为一象征
数据包指标地址是多点广播地址). ‘ip[0] & 0xf != 五’
对应抓取全部带有选项的
IPv4数据包. ‘ip[6:2] & 0x一fff = 0’对应抓取没被破碎的IPv四数据包或然
其部分编号为0的已破损的IPv肆数据包.
那种多少检查措施也适用于tcp和udp数据的引用,
即, tcp[0]对应于TCP 头中第二个字节, 而不是对应任何四个中等的字节.
有的偏移以及域的取值除了能够用数字也可用名字来表明.
以下为可用的壹些域(协议头中的域)的名字: icmptype (指ICMP 协议头
中type域), icmpcode (指ICMP 协议头code 域),
以及tcpflags(指TCP协议头的flags 域)
以下为ICMP 协议头中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 协议头中flags 域的可用取值:tcp-fin, tcp-syn, tcp-rst,
tcp-push,
tcp-ack, tcp-urg.