tcpdump分析工具

布拉迪斯拉发前行之快,似乎要把过去消灭一般

简介

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

 

但一个都市的成才印记绝不会消失或调减,只是在不留神的地点逐步积攒

实用命令实例

默许启动

tcpdump

常备意况下,直接开行tcpdump将监视第四个互联网接口上装有流过的数据包。

 

监视指定互连网接口的数据包

tcpdump -i eth1

只要不指定网卡,默许tcpdump只会监视第三个网络接口,一般是eth0,上边的例证都并未点名互联网接口。 

 

蹲点指定主机的数据包

打印所有进入或离开sundown的数目包.

tcpdump host sundown

也可以指定ip,例如截获所有210.27.48.1 的主机收到的和暴发的保有的数据包

tcpdump host 210.27.48.1 

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

tcpdump host helios and \( hot or ace \)

收获主机210.27.48.1 和主机210.27.48.2 或210.27.48.3的通讯

tcpdump host 210.27.48.1 and \ (210.27.48.2 or 210.27.48.3 \) 

打印ace与其余其它主机之间通讯的IP 数据包, 但不包涵与helios之间的数据包.

tcpdump ip host ace and not helios

借使想要获取主机210.27.48.1除了和主机210.27.48.2之外所有主机通讯的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

 

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

一经想要获取主机210.27.48.1接受或暴发的telnet包,使用如下命令

tcpdump tcp port 23 and host 210.27.48.1

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

tcpdump udp port 123 

 

蹲点指定互联网的数据包

打印本地主机与伯克利互连网上的主机之间的有着通信数据包(nt: ucb-ether,
此处可掌握为’Berkeley互联网’的网络地址,此表达式最原始的含义可发挥为:
打印互连网地址为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, 网络层协议为IPv4,
并且含有数据,而不是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)<<2)表示ip数据包大庆的长度(ip[0]&0xf代表包中的IHL域,
而此域的单位为32bit, 要换算

成字节数必要乘以4, 即左移2. (tcp[12]&0xf0)>>4 代表tcp头的尺寸,
此域的单位也是32bit, 换算成比特数为 ((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数据包中确实是有数据.对于ipv6版本只需考虑ipv6头中的’Payload Length’ 与
    ‘tcp头的尺寸’的差值, 并且其中表明情势’ip[]’需换成’ip6[]’.)

打印长度领先576字节, 并且网关地址是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

(1)tcp: ip icmp arp rarp 和
tcp、udp、icmp那个选用等都要松开第二个参数的职分,用来过滤数据报的花色
(2)-i eth1 : 只抓经过接口eth1的包
(3)-t : 不显得时间戳
(4)-s 0 : 抓取数据包时默许抓取长度为68字节。加上-S 0
后得以抓到完整的数据包
(5)-c 100 : 只抓取100个数据包
(6)dst port ! 22 : 不抓取目标端口是22的数据包
(7)src net 192.168.1.0/24 : 数据包的源互联网地址为192.168.1.0/24
(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”,0x4854 为”HTTP”前三个假名”HT”。

 

tcpdump
对截获的数额并不曾展开彻底解码,数据包内的绝一大半情节是行使十六进制的款型直接打印输出的。鲜明那不利于分析网络故障,平日的解决办法是先使用带-w参数的tcpdump
截获数据并保留到文件中,然后再采纳其余程序(如Wireshark)举行解码分析。当然也应该定义过滤规则,以幸免捕获的数据包填满所有硬盘。

 

何不趁着周末,放慢脚步

出口音信意义

率先我们注意一下,基本上tcpdump总的的输出格式为:系统时间 来源主机.端口
> 目的主机.端口 数据包参数

tcpdump 的输出格式与协和有关.以下简单描述了半数以上常用的格式及有关例子.

用光圈用虔诚发现那些藏匿于卡塔尔多哈喧嚣之间

链路层头

对此FDDI网络, ‘-e’ 使tcpdump打印出指定数据包的’frame control’ 域,
源和目的地址, 以及包的长度.(frame control域
控制对包中其余域的解析). 一般的包(比如那个IP
datagrams)都是包蕴’async'(异步标志)的数据包,并且有取值0到7的优先级;
例如 ‘async4’就象征此包为异步数据包,并且优先级别为4.
平时认为,那几个包们会内含一个 LLC包(逻辑链路控制包); 那时,即使此包
不是一个ISO
datagram或所谓的SNAP包,其LLC底部将会被打印(nt:应该是指此包内含的
LLC包的阜阳).

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

对此802.11互联网(WLAN,即wireless local area network), ‘-e’
使tcpdump打印出指定数据包的’frame control域,
江门中带有的具备地方, 以及包的长度.与FDDI网络类似,
此数据包日常内含LLC数据包.

(注意: 以下的讲述会即使你娴熟SLIP压缩算法 (nt:SLIP为Serial Line Internet
Protocol.), 那些算法可以在
RFC-1144中找到相关的马迹蛛丝.)

对此SLIP网络(nt:SLIP links, 可领会为一个互联网, 即通过串行线路建立的连天,
而一个粗略的连天也可看作一个互连网),
数据包的’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); 应答号伸张了6,
顺序号增添了49, 包ID号扩充了6; 包数据长度为3字节(octect),
压缩尾部为6字节.(nt:如此看来那应该不是一个非正规的收缩数据包).

ARP/RARP 数据包

tcpdump对Arp/rarp包的输出音信中会包括呼吁类型及该请求对应的参数.
突显格式简洁明了. 以下是从主机rtsg到主机csam的’rlogin’
(远程登录)进程开首阶段的数额包样例:
arp who-has csam tell rtsg
arp reply csam is-at CSAM
首先行表示:rtsg发送了一个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

比方大家应用tcpdump -e, 则可以清楚的看出第三个数据包是全网广播的,
而第一个数据包是点对点的:
RTSG Broadcast 0806 64: arp who-has csam tell rtsg
CSAM RTSG 0806 64: arp reply csam is-at CSAM
首先个数据包申明:以arp包的源以太地址是RTSG, 目的地方是全以太网段,
type域的值为16进制0806(表示ETHER_ARP(nt:arp包的项目的识)),
包的总长度为64字节.

被忘记的美好

TCP 数据包

(注意:以下将会假定你对 RFC-793所讲述的TCP熟习. 如若不熟,
以下描述以及tcpdump程序可能对你协助不大.(nt:警告可忽略,
只需继续看, 不熟悉的地点可回头再看.).

万般tcpdump对tcp数据包的显得格式如下:
src > dst: flags data-seqno ack window urgent options

src 和 dst 是源和目的IP地址以及对应的端口. flags 标志由S(SYN), F(FIN),
P(PUSH, R(RST),
W(ECN CWT(nt | rep:未知, 需补充))或者 E(ECN-Echo(nt |
rep:未知, 需补充))组成,
单独一个’.’表示一贯不flags标识.
数据段顺序号(Data-seqno)描述了此包中多少所对应种类号空间中的一个职位(nt:整个数据被隔开,
每段有一个顺序号, 所有的顺序号构成一个队列号空间)(可参考以下例子). Ack
描述的是同一个总是,同一个大方向,下一个本端应该接受的
(对方相应发送的)数据片段的逐一号.
Window是本端可用的多少接收缓冲区的大小(也是对方发送数据时需按照这么些分寸来组织数据).
Urg(urgent) 表示数据包中有急切的数据. options 描述了tcp的片段摘取,
这一个采纳都用尖括号来代表(如 <mss 1024>).

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端口1023发送到了csam主机的tcp端口login上(nt:udp协商的端口和tcp协议的端
口是个其余八个空中, 就算取值范围一致). S表示设置了SYN标志.
包的顺序号是768512, 并且没有包罗数据.(表示格式
为:’first:last(nbytes)’,
其意思是’此包中多少的顺序号从first开端直到last为止,不包含last.
并且总共包罗nbytes的
用户数量’.) 没有捎带应答(nt:从下文来看,第二行才是有捎带应答的数据包),
可用的接受窗口的大小为4096bytes, 并且请求端(rtsg)
的最大可承受的数据段大小是1024字节(nt:这么些信息作为请求发向应答端csam,
以便双方进一步的磋商).

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

rtsg 同样针对csam的SYN数据包回复了一ACK数据包作为应答.
‘.’的意义就是此包中绝非标明被设置. 由于此应答包中不含有数据, 所以
包中也尚无多少段种类号. 提示! 此ACK数据包的顺序号只是一个小平头1.
有如下解释:tcpdump对于一个tcp连接上的对话, 只打印会话两端的
千帆竞发数据包的队列号,其后相应数额包只打印出与开头包系列号的差距.即早先系列号之后的行列号, 可被用作此会话上近日所传数据片段在全路
要传输的多少中的’相对字节’地点(nt:双方的首先个任务都是1,
即’绝对字节’的开首编号). ’-S’将覆盖那些效能, 
使数据包的原本顺序号被打印出来.

 

第六行的意思为:rtsg 向
csam发送了19字节的数据(字节的号码为2到20,传送方向为rtsg到csam).
包中装置了PUSH标志. 在第7行,
csam 喊到, 她早已从rtsg中收受了21以下的字节, 但不包含21数码的字节.
那一个字节存放在csam的socket的采用缓冲中, 相应地,
csam的接收缓冲窗口大小会回落19字节(nt:可以从第5行和第7行win属性值的转移看出来).
csam在第7行那个包中也向rtsg发送了一个
字节. 在第8行和第9行, csam 继续向rtsg
分别发送了七个只含有一个字节的数据包, 并且那一个数量包带PUSH标志.

若是所抓到的tcp包(nt:即那里的snapshot)太小了,以至tcpdump无法完全获得其头顶数据,
这时, tcpdump会尽量解析这些不完全的头,
并把剩下无法分析的有的显得为'[|tcp]’.
如果尾部含有虚假的性质音讯(比如其尺寸属性其实比底部实际尺寸长或短),
tcpdump会为该底部
显示'[bad opt]’. 假使底部的长度告诉大家一点选项(nt | rt:从下文来看,
指tcp包的尾部中针对ip包的一对增选, 回头再翻)会在此包中,
而真正的IP(数据包的尺寸又不够容纳这一个采纳, tcpdump会呈现'[bad hdr
length]’.

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

在TCP的头顶中, 有8比特(bit)用作决定位区域, 其取值为:
CWR | ECE | URG | ACK | PSH | RST | SYN | FIN
(nt | rt:从表达形式上可臆想:那8个位是用或的办法来整合的, 可回头再翻)

现假若我们想要监控建立一个TCP连接一切进度中所暴发的数码包.
可纪念如下:TCP使用3次握手协议来建立一个新的连天; 其与此三遍握手
连年各样对应,并包蕴相应TCP控制标志的数目包如下:
1) 连接发起方(nt:Caller)发送SYN标志的数据包
2) 接收方(nt:Recipient)用饱含SYN和ACK标志的数目包举办回应
3) 发起方收到接收方回应后再发送带有ACK标志的多寡包进行回应

━━━━━━━━━━━━━━━━━━━━━━━━

0 15 31

1 | 坝光村

| source port | destination port |

最南缘的九寨沟

| sequence number |

坝光村是蒙得维的亚最美乡村之一,背山靠海,风光秀丽,至今仍保留着较为原始的地势地势。老宅前边重峦叠嶂,树林茂密,海岸绵长。

| acknowledgment number |

坝光村三面环山,一面向海,村落中的房子都是岭南的古建筑百余座故居虽已人去楼空,但依旧维持总体,时刻令人振奋出对旧时光的憧憬与想象。除了老房子,那里也有诸多古树,在那里看古建筑,露营、看看海景、钓鱼都很写意!

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

设若你想静一静,在濒海坐着吹吹海风,或者出海钓鱼,坏心事很快就淡忘;假若您想多活动运动,在此处或爬山,或乡村小道上徒步,或坐船到附近小岛逛逛,都是不易选拔。

| TCP checksum | urgent pointer |

一个TCP尾部,在不包括选项数据的情景下一般占用20个字节(nt | rt:options
通晓为挑选数据,需回译). 第一行包涵0到3编号的字节,
其次行包涵编号4-7的字节.

假如编号从0开首算, TCP控制标志位于13字节(nt:第四行左半有些).

 

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

让大家仔细看看号码13的字节:

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

那边有大家感兴趣的主宰标志位. 从右往左这个位被逐个编号为0到7, 从而
PSH位在3号, 而URG位在5号.

 

提醒一下温馨, 大家只是要赢得包蕴SYN标志的数码包.
让大家看看在一个包的海口中, 假若SYN位被安装, 到底
在13号字节发生了怎么样:

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

在决定段的数码中, 唯有比特1(bit number 1)被置位.

比方编号为13的字节是一个8位的无符号字符型,并且按照网络字节号排序(nt:对于一个字节来说,网络字节序等同于主机字节序),
其二进制值
正如所示:
00000010

与此同时其10进制值为:

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^6 表示1倍增2的6次方, 也许那样更
明白些, 即把原来表明中的指数7 6 … 0挪到了上面来公布)

如同目的了, 因为大家早已清楚, 假若数据常德部中的SYN被置位,
那么底部中的第13个字节的值为2(nt: 依据互联网序, 即大头格局, 最要紧的字节
在前头(在前头,即该字节实际内存地址比较小,
最关键的字节,指数学表示中数的要职, 如356中的3) ).

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

于是我们得以把此关系式当作tcpdump的过滤条件,
目标就是监督只含有SYN标志的多寡包:
tcpdump -i xl0 tcp[13] 2 (nt: xl0 指互连网接口, 如eth0)

其一表达式是说”让TCP数据包的第13个字节拥有值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号字节的1号和4号位被置位, 其二进制的值为:
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 * 2^6 表示1倍增2的6次方, 也许那样更
知晓些, 即把原先表明中的指数7 6 … 0挪到了下边来发表)

现行, 却不可能只用’tcp[13] 18’作为tcpdump的过滤表明式,
因为那将招致只拔取含有SYN-ACK标志的数据包, 其余的都被废弃.
提醒一下温馨, 我们的目的是: 只要包的SYN标志被设置就行,
其余的讲明大家不理会.

为了达成大家的对象,
大家须要把13号字节的二进制值与任何的一个数做AND操作(nt:逻辑与)来赢得SYN比特位的值.
目的是:只要SYN 被装置
就行, 于是我们就把她与上13号字节的SYN值(nt: 00000010).

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


= 00000010 = 00000010

咱俩得以窥见, 不管包的ACK或其余标志是还是不是被装置,
以上的AND操作都会给大家同样的值,
其10进制表明就是2(2进制表明就是00000010).
据此大家领略, 对于富含SYN标志的数据包, 以下的表明式的结果一而再真(true):

( ( value of octet 13 ) AND ( 2 ) ) ( 2 ) (nt: value of octet 13,
即13号字节的值)

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

留神, 单引号或反斜杆(nt: 那里用的是单引号)不可能大致,
那足以预防shell对&的分解或替换.

| 旅拍提示 |

UDP 数据包

UDP 数据包的来得格式,可透过rwho那么些现实采取所发生的数据包来表明:
actinide.who > broadcast.who: udp 84

其含义为:actinide主机上的端口who向broadcast主机上的端口who发送了一个udp数据包(nt:
actinide和broadcast都是指Internet地址).
本条数据包承载的用户数据为84个字节.

有的UDP服务可从数据包的源或目标端口来辨别,也可从所出示的更高层磋商音讯来识别.
比如, Domain Name service requests(DNS 请求,
在RFC-1034/1035中), 和Sun RPC calls to
NFS(对NFS服务器所提倡的中距离调用(nt: 即Sun
RPC),在RFC-1050中有对长距离调用的叙述).

UDP 名称服务请求

(注意:以下的叙说如若你对Domain Service protoco(nt:在RFC-103中享有描述),
否则你会意识以下描述就是天书(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)

主机h2opolo 向helios 上运行的称谓服务器查询ucbvax.berkeley.edu
的地点记录(nt: qtype等于A). 此询问自己的id号为’3′. 符号
‘+’意味着递归查询标志被装置(nt:
dns服务器可向更高层dns服务器查询本服务器不包蕴的位置记录).
那一个最后经过IP包发送的查询请求
数码长度为37字节, 其中不包罗UDP和IP协议的头数据.
因为此询问操作为默许值(nt | rt: normal one的接头), op字段被省略.
假定op字段没被略去, 会被突显在’3′ 和’+’之间. 同样, qclass也是默许值,
C_IN, 从而也没被出示, 如若没被忽视, 她会被显示在’A’之后.

非凡检查会在方括中体现出附加的域: 若是一个询问同时含有一个回应(nt:
可见道为, 对前边任何一个伸手的答复), 并且此回答包罗权威或附加记录段, 
ancount, nscout, arcount(nt: 具体字段含义需补充) 将被呈现为'[na]’,
‘[nn]’, ‘[nau]’, 其中n代表合适的计数. 假设包中以下
回应位(比如AA位, RA位, rcode位),
或者字节2或3中其它一个’必须为0’的位被置位(nt: 设置为1), ‘[b2&3]=x’
将被出示, 其中x表示
底部字节2与字节3展开与操作后的值.

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 对h2opolo 所发送的3号查询请求应对了3条回复记录(nt |
rt: answer records), 3条名称服务器记录,
以及7条附加的记录. 第四个应答记录(nt: 3个应答记录中的第二个)类型为A(nt:
表示地址), 其数据为internet地址128.32.137.3.
此回应UDP数据包, 包罗273字节的多寡(不含有UPD和IP的底部数据).
op字段和rcode字段被忽略(nt: op的实际值为Query, rcode, 即
response code的实际值为NoError), 同样被忽略的字段还有class 字段(nt | rt:
其值为C_IN, 那也是A类型记录默许取值)

其次行代表: helios 对h2opolo 所发送的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]’ 会被打印出来.

要注意的是:名称服务器的乞请和回复数据量相比大,
而默认的68字节的抓取长度(nt: snaplen,
可明白为tcpdump的一个装置选项)可能不足以抓取
数据包的一切内容. 尽管你真正要求精心查阅名称服务器的载重,
可以通过tcpdump 的-s 选项来扩充snaplen值.

而外老房子和高山远景,坝光村中有一株长了250年的古榕树,叶茂枝繁,沉沉的气根须飘摇垂地,穿起白裙扬起白纱,很适合拍“森林天使”风艺术照,仙气十足

SMB/CIFS 解码

tcpdump 已足以对SMB/CIFS/NBT相关应用的数目包内容展开解码(nt:
分别为’Server Message Block Common’, ‘Internet File System’
‘在TCP/IP上达成的互连网协议NETBIOS的简称’.
那多少个劳务普通选择UDP的137/138以及TCP的139端口). 原来的对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发送了一个’调换请求'(nt: transaction),
此请求的id为6709(注意, 主机名字后是换成
请求id号, 而不是源端口号). 此呼吁数据为112字节,
其中不包含UDP和IP底部的长度. 操作类型为readlink(nt:
即此操作为读符号链接操作),
操作参数为fh 21,24/10.73165(nt: 可按实际运作条件, 解析如下, fd
表示描述的为文件句柄, 21,24 表示此句柄所对应设
备的主/从设备号对,
10意味着此句柄所对应的i节点编号(nt:每个文件都会在操作系统中对应一个i节点,
限于unix类系统中),
73165是一个数码(nt: 可清楚为标识此请求的一个擅自数, 具体意思需补充)).

其次行中, wrl 做了’ok’的对答, 并且在results
字段中回到了sushi想要读的标记连接的实际目录(nt:
即sushi必要读的标志连接其实是一个索引).

其三行注明: sushi 再度伸手 wrl 在’fh
9,74/4096.6878’所讲述的目录中寻找’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 从文件 21,11/12.195(nt: 格式在上头有描述)中,
自偏移24576字节处早先, 读取8192字节数据.
Wrl 回应读取成功; 由于第二行只是回答请求的初叶片段,
所以只含有1472字节(其余的数码将在紧接着的reply片段中来到,
但这么些多少包不会再有NFS
头, 甚至UDP头音讯也为空(nt: 源和目标应该要有),
那将导致这几个片段无法满意过滤条件, 从而没有被打印). -v
选项除了突显文件数据音讯, 还会来得
外加突显文件属性消息: file type(文件类型, ”REG” 表示日常文书), file
mode(文件存取方式, 8进制表示的), uid 和gid(nt: 文件属主和
组属主), file size (文件大小).

若果-v 标志被数十次重复给出(nt: 如-vv), tcpdump会突显越发详实的新闻.

总得要专注的是, NFS 请求包中数量比较多, 若是tcpdump 的snaplen(nt:
抓取长度) 取太短将无法显得其详细新闻. 可利用
‘-s 192’来充实snaplen, 那可用于监测NFS应用的网络负载(nt: traffic).

NFS 的答疑包并不严谨的紧随从前相应的请求包(nt: RPC operation). 从而,
tcpdump 会跟踪目前接收的一比比皆是请求包, 再通过其
换成序号(nt: transaction ID)与相应请求包相匹配. 这可能发生一个题材,
假诺回应包来得太迟, 超出tcpdump 对相应请求包的跟踪范围,
该回应包将不可能被分析.

沿沙滩涂有大片红树林,好几千只白鹭在那边安家,成群结队飞来飞去万分壮观;浅滩上更有各类样子完整的贝壳,有的别处难寻,是视频人像和自然风光的好地点,也能感受沙滩拾贝的意趣。沙滩水墨画符合穿着颜色鲜艳的衣装,非常抢镜,也可拍摄创意婚纱照。一般拍摄时间为1天。

AFS 请求和回答

AFS(nt: Andrew 文件系统, 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 发送了一个RX数据包.
那是一个对于文本服务的请求数据包(nt: RX data packet, 发送数据包 ,
可清楚为发送包过去, 从而请求对方的劳动), 那也是一个RPC
调用的上马(nt: RPC, remote procedure call). 此RPC 请求pike
执行rename(nt: 重命名) 操作, 并指定了连带的参数:
原目录描述符为536876964/1/1, 原文件名为 ‘.newsrc.new’,
新目录描述符为536876964/1/1, 新文件名为 ‘.newsrc’.
主机pike 对此rename操作的RPC请求作了答疑(回应代表rename操作成功,
因为回应的是包蕴数据内容的包而不是可怜包).

貌似的话, 所有的’AFS RPC’请求被出示时, 会被冠以一个名字(nt: 即decode,
解码), 那个名字往往就是RPC请求的操作名.
并且, 那些RPC请求的部分参数在浮现时, 也会被冠以一个名字(nt | rt:
即decode, 解码, 一般的话也是取名也很直白, 比如,
一个interesting 参数, 突显的时候就会一贯是’interesting’, 含义拗口,
需再翻).

这种呈现格式的筹划初衷为’一看就懂’, 但对于不熟悉AFS 和 RX
工作规律的人可能不是很
有用(nt: 仍旧毫不管, 书面吓吓你的, 往下看就行).

如果 -v(详细)标志被再度给出(nt: 如-vv), tcpdump 会打印出肯定包(nt:
可了解为, 与应对包有分其余包)以及附加底部音信
(nt: 可分晓为, 所有包, 而不仅是肯定包的叠加尾部音信), 比如, RX call
ID(请求包中’请求调用’的ID),
call number(‘请求调用’的号码), sequence number(nt: 包顺序号),
serial number(nt | rt: 可分晓为与包中数据有关的另一个顺信号,
具体意思需填补), 请求包的标识. (nt: 接下来一段为再次描述,
就此略去了), 此外确认包中的MTU协商音信也会被打印出来(nt:
确认包为相对于请求包的认可包, 马克斯imum 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 相比大,
一般可透过启动tcpdump时设置选项’-s 256′ 来增大snaplen, 以
监测AFS 应用通讯负载.

AFS 回应包并不出示标识RPC 属于何种远程调用. 从而, tcpdump
会跟踪目前一段时间内的伸手包, 并通过call number(调用编号), service ID
(服务目录) 来配合收到的答复包. 即便回应包不是针对近年来一段时间内的央浼包,
tcpdump将无法解析该包.

地址|索菲亚乐昌市葵涌镇

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 互连网.
第三行提交了特定互联网上的主机(一个主机会用3个字节来标识,
而一个互联网的标识经常只有多个字节, 那也是双边标识的紧要不一样)(nt:
1.254.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.1上的节点209由此2端口,向网络icsd-net上监听在220端口的112节点发送了一个NBP应用数据包
(nt | rt: NBP, name binding protocol, 名称绑定协议, 从数据来看,
NBP服务器会在端口2提供此服务.
‘DDP port 2′ 可掌握为’DDP 对应传输层的端口2’, DDP本身并未端口的定义,
这一点未规定, 需补充).

其次行与第一行类似, 只是源的凡事地方可用’office’举办标识.
其三行表示:
jssmag互联网上的149节点通过235向icsd-net互连网上的兼具节点的2端口(NBP端口)发送了数量包.(需求注意的是,
在AppleTalk 互连网中只要地点中没有节点, 则意味着广播地址,
从而节点标识和网络标识最好在/etc/atalk.names有所分裂.
nt: 否则一个标识x.port
不可能确定x是指一个互连网上装有主机的port口如故指定主机x的port口).

tcpdump 可分析NBP (名称绑定协议) and ATP (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 中的节点112 通过220端口向互联网jssmag
中装有节点的端口2发送了对’LaserWriter’的称呼查询请求(nt:
那边名称可见道为一个资源的名号, 比如打印机). 此询问请求的连串号为190.

第二行表示: 网络jssmag 中的节点209
通过2端口向icsd-net.112节点的端口220展开了答复: 我有’LaserWriter’资源,
其资源名称
为’RM1140′, 并且在端口250上提供改资源的服务. 此回应的连串号为190,
对应事先查询的种类号.

其三行也是对第一行请求的作答: 节点techpit
通过2端口向icsd-net.112节点的端口220拓展了回复:我有’LaserWriter’资源,
其资源名称
为’techpit’, 并且在端口186上提供改资源的服务. 此回应的系列号为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.209 向节点helios
发送了一个会话编号为12266的乞请包, 请求helios
回应8个数据包(这8个数据包的顺序号为0-7(nt: 顺序号与会话编号不相同,
后者为两遍完整传输的数码,
前者为该传输中各种数据包的编号. transaction, 会话, 寻常也被称呼传输)).
行尾的16进制数字代表
该请求包中’userdata’域的值(nt: 从下文来看,
那并从未把富有用户数据都打印出来 ).

Helios 回应了8个512字节的数目包. 跟在对话编号(nt:
12266)后的数字代表该数量包在该会话中的顺序号.
括号中的数字代表该数量包中数据的高低, 那不包涵atp 的尾部.
在顺序号为7数据包(第8行)外带了一个’*’号,
表示该数据包的EOM 标志被装置了.(nt: EOM, End Of Media, 可见道为,
表示三次对话的数目回应完结).

接下去的第9行表示, Jssmag.209 又向helios 提议了请求:
顺序号为3以及5的数量包请重新传送. Helios 收到这些
呼吁后再度发送了这几个多个数据包, jssmag.209 再一次接到那三个数据包之后,
主动为止(release)了此会话.

在终极一行, jssmag.209 向helios 发送了起始下五回对话的呼吁包.
请求包中的’*’表示该包的XO 标志没有被设置.
(nt: XO, exactly once, 可知晓为在该会话中,
数据包在接受者只被准确地处理一遍, 即使对方再也传送了该数据包,
接收方也只会处理一遍, 那亟需使用越发设计的数额包接收和处理机制).

公交线路|乘坐987路在“坝光小学”站下即可

IP 数据包破碎

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

散装IP数据包(nt:
即一个大的IP数据包破碎后变卦的小IP数据包)有如下三种彰显格式.
(frag id:size@offset+)
(frag id:size@offset)
(第一种格式表示, 此碎片之后还有后续碎片. 第二种格式表示,
此碎片为结尾一个碎片.)

id 代表破碎编号(nt: 从下文来看, 会为各种要破碎的大IP包分配一个千疮百孔编号,
以便区分每个小碎片是不是由同样数据包破碎而来).
size 表示此碎片的大小 , 不分包碎片尾部数据.
offset表示此碎片所含数据在原来整个IP包中的偏移((nt: 从下文来看,
一个IP数据包是作为一个完全被破碎的, 包含头和数目, 而不只是数额被分割).

每个碎片都会使tcpdump产生相应的输出打印.
首个零七八碎包罗了高层磋商的头数据(nt:从下文来看,
被破碎IP数据包中相应tcp头以及
IP头都放在了第四个七零八落中 ), 从而tcpdump会针对第三个东鳞西爪彰显那一个音信,
并接着突显此碎片本身的新闻. 其后的片段零星并不包罗
高层协商头新闻, 从而只会在呈现源和目的之后显得碎片本身的音讯.
以下有一个例证: 那是一个从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协议音讯都放到了第四个一鳞半爪中, 当显示第一个七零八落时,
我们鞭长莫及知晓此碎片所对应TCP包的顺序号.

其次, 从第一行的音信中, 能够窥见arizona须求向rtsg发送308字节的用户数量,
而事实是, 相应IP包经破碎后会总共暴发512字节
数码(第三个片纸只字包罗308字节的数码, 第四个星落云散包罗204个字节的多少,
那超越了308字节). 假设你在摸索数据包的顺序号空间中的
有的架空(nt: hole,空洞, 指数据包之间的顺序号没有前后衔接上),
512那个数额就丰裕使您迷茫一阵(nt: 其实假若关注308就行,
毋庸关心破碎后的数码总量).

一个数据包(nt | rt: 指IP数据包)若是含有非IP破碎标志,
则彰显时会在结尾显示'(DF)’.(nt: 意味着此IP包没有被破碎过).

自驾线路|从卡萨布兰卡-盐田-葵涌-金业路-葵坝路-径心水库-坝光,约60英里,由于有局地山路,单程需120分钟。须要留意的是,从葵涌进入葵坝公路的街口不是不行家喻户晓,一定要专注路牌或先看地图。

时间戳

tcpdump的所有出口打印行中都会默许包罗时间戳音讯.
岁月戳音信的来得格式如下
hh:mm:ss.frac (nt: 小时:分钟:秒.(nt: frac未知, 需补充))
此刻间戳的精度与根本时间精度一致, 反映的是基本首次看到相应数据包的日子(nt:
saw, 即可对该数额包举办操作). 
而数据包从物理线路传递到基础的岁月,
以及基本开支在此包上的暂停处理时间都并未算进来.

 

2 | 沙鱼涌村

一声令下使用

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

跨越几百年的恬静

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

沙鱼涌,是日内瓦最古老的农庄之一,距今已有500年历史,历史上,那里也曾红极一时如锦,当年的热闹,近来只得从两座沧桑木桥、一条隐匿古道和一个丢弃口岸中加以想象,为拍摄者创作提供司空眼惯灵感。

tcpdump条件表明式

  该表达式用于决定哪些数据包将被打印. 借使不给定标准表明式,
互联网上保有被擒获的包都会被打印,否则,
唯有满意条件表达式的数量包被打印.(nt: all packets, 可领悟为,
所有被指定接口捕获的数据包).

  表明式由一个或多个’表明元’组成(nt: primitive, 表明元,
可明白为组合表达式的宗旨要素).
一个抒发元平常由一个或八个修饰符(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(端口21) 和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(端口53) ).

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

  有效的操作符有:

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

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

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

  即使一个标识符前没有紧要字,
则表达式的解析进度中近期用过的机要字(往往也是从左往右距离标识符近期的重大字)将被使用.比如,
    not host vs and ace
  是以下表达的简洁:
    not host vs and host ace
  而不是not (host vs or ace).(nt: 前两者表示,
所需数据包不是出自或发往host vs,
而是来自或发往ace.而后者表示数据包只要不是根源或发往vs或ac都符合必要)

 
整个条件表明式可以被视作一个单身的字符串参数也得以被当做空格分割的多个参数传入tcpdump,
后者更有益于些. 寻常, 如若表达式中含有元字符(nt: 如正则表明式中的’*’,
‘.’以及shell中的'(‘等字符), 最好或者选拔单独字符串的艺术传入.
这时,整个表明式必要被单引号括起来. 多参数的传遍方式中,
所有参数最终照旧被空格串联在一起, 作为一个字符串被解析.

 

沙鱼涌可能是卡塔尔多哈最后一块净土,海水纯净、吊脚楼凭水而建,晚饭后在细腻清软的沙滩上散散步,看夕阳西下,也是一件赏心乐事。

附录:tcpdump的表明元

(nt: True 在以下的叙说中含义为:
相应标准表达式中只包涵以下所列的一个特定表达元, 此时表达式为真,
即条件得到满足)

dst host host
假定IPv4/v6 数据包的目标域是host, 则与此对应的标准化表明式为真.host
能够是一个ip地址, 也足以是一个主机名.
src host host
比方IPv4/v6 数据包的源域是host, 则与此对应的基准说明式为真.
host 可以是一个ip地址, 也足以是一个主机名.
host host

假使IPv4/v6数据包的源或目标地址是 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中的任何一个).

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必须是名字而不是数字.
脚下, 该选拔在支撑IPv6地址格式的布署环境中不起成效(nt: configuration,
配置环境, 可了然为,通讯双方的网络安插).

dst net net
假定数据包的靶子地址(IPv4或IPv6格式)的网络号字段为 net,
则与此对应的规范表明式为真.
net 可以是从互连网数据库文件/etc/networks 中的名字,
也得以是一个数字格局的网络编号.

一个数字IPv4 互连网编号将以点分四元组(比如, 192.168.1.0), 或点分安慕希组(比如, 192.168.1 ), 或点分二元组(比如, 172.16), 或纯粹单元组(比如, 10)来发布;

对应于这两种情形的互连网掩码分别是:四元组:255.255.255.255(那也代表对net
的匹配就像是对主机地址(host)的同盟:地址的多个部分都用到了),三元组:255.255.255.0, 二元组: 255.255.0.0, 一元组:255.0.0.0.

对于IPv6 的地址格式, 网络编号必须一切写出来(8个部分必须全方位写出来);
相应互联网掩码为:
ff:ff:ff:ff:ff:ff:ff:ff, 所以IPv6 的互连网匹配是真正的’host’格局的合营(nt |
rt | rc:地址的8个部分都会用到,是或不是不属于互连网的字节填写0, 需接下去补充),
但同时须要一个互连网掩码长度参数来具体指定前边多少字节为互连网掩码(nt:
可经过下边的net net/len 来指定)

src net net
假诺数据包的源地址(IPv4或IPv6格式)的互连网号字段为 net,
则与此对应的规格表明式为真.

net net
即使数据包的源或目的地址(IPv4或IPv6格式)的网络号字段为 net,
则与此对应的准绳表明式为真.

net net mask netmask
万一数据包的源或目标地址(IPv4或IPv6格式)的网络掩码与netmask 匹配,
则与此对应的尺码表明式为真.此选项此前还足以匹配src和dst来匹配源互联网地址或目的互联网地址(nt:
比如 src net net mask 255.255.255.0).该选取对于ipv6 网络地址无效.

net net/len
借使数据包的源或目的地址(IPv4或IPv6格式)的互联网编号字段的比特数与len相同,
则与此对应的原则表明式为真.此选项此前还是可以包容src和dst来匹配源网络地址或指标网络地址(nt
| rt | tt: src net net/24,
表示须求匹配源地址的互联网编号有24位的数据包).

dst port port
假如数据包(包涵ip/tcp, ip/udp, ip6/tcp or ip6/udp协议)的目标端口为port,
则与此对应的标准化表明式为真.port
可以是一个数字也可以是一个名字(相应名字能够在/etc/services 中找到该名字,
也得以通过man tcp 和man udp来获取相关描述音讯 ). 假如选拔名字,
则该名字对应的端口号和相应选用的情商都会被检查.
如若只是选拔一个数字端口号,则只有相应端口号被检查(比如, dst port513 将会使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到port2那个端口范围(包罗port1, port2),
则与此对应的口径表达式为真. tcpdump 对port1 和port2 解析与对port
的解析一致(nt:在dst port port 选项的叙述中有证实).

src portrange port1-port2
借使数据包的源端口属于port1到port2那几个端口范围(包罗 port1, port2),
则与此对应的尺度表明式为真.

portrange port1-port2
一旦数据包的源端口或目标端口属于port1到port2那个端口范围(包涵 port1,
port2), 则与此对应的尺度表达式为真.

上述有关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
假使数量包为ipv4数据包并且其情商项目为protocol,
则与此对应的尺度表明式为真.
Protocol 可以是一个数字也足以是名字, 比如: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.3.144’, 则只打印主机192.168.3.144 发出或收取的数额包中tcp
协议头所包括的音信)

ip6 proto protocol
即使数量包为ipv6数据包并且其情商项目为protocol,
则与此对应的规则表明式为真.
留意此发布元不会把多少包中协议头链中负有协议头内容全方位打印出来

ip6 protochain protocol
假诺数据包为ipv6数据包并且其情商链中包罗类型为protocol协议头,
则与此对应的尺度表达式为真. 比如,
ip6 protochain 6

将同盟其情商头链中兼有TCP
协议头的IPv6数据包.此数据包的IPv6头和TCP头之间或许还会包罗验证头,
路由头, 或者逐跳寻径选项头.
经过所接触的照应BPF(伯克利 Packets Filter, 可清楚为,
在数码链路层提供数据包过滤的一种机制)代码比较麻烦,
再者BPF优化代码也不许照顾到此部分,
从而此选项所接触的包匹配可能会相比慢.

ip protochain protocol
与ip6 protochain protocol 含义相同, 但这用在IPv4数据包.

ether broadcast
假如数据包是以太网广播数据包, 则与此对应的标准化表达式为真. ether
关键字是可选的.

ip broadcast
假使数据包是IPv4广播数据包, 则与此对应的基准表明式为真. 那将使tcpdump
检查广播地址是或不是合乎全0和全1的一部分预约,并寻找网络接口的网络掩码(互连网接口为当时在其上抓包的互联网接口).

一经抓包所在网络接口的网络掩码不合规,
或者此接口根本就没有安装相应互连网地址和互连网, 亦或是在linux下的’any’网络接口上抓包(此’any’接口可以接过系统中不止一个接口的数据包(nt: 实际上,
可掌握为系统中装有可用的接口)),网络掩码的自我批评不可能健康进行.

ether multicast
如果数据包是一个以太网多点广播数据包(nt: 多点广播,
可明白为把新闻还要传递给一组目标地址,
而不是互连网中具备地点,后者为可称之为广播(broadcast)),
则与此对应的基准表明式为真. 关键字ether 可以省略.
此选项的含义与以下原则表明式含义一致:`ether[0]
& 1 != 0′(nt: 可通晓为, 以太网数据包中第0个字节的最低位是1,
那象征那是一个多点广播数据包).

ip multicast
倘诺数据包是ipv4多点广播数据包, 则与此对应的标准表明式为真.

ip6 multicast
一旦数据包是ipv6多点广播数据包, 则与此对应的规范表明式为真.

ether proto protocol
若是数据包属于以下以太协议项目, 则与此对应的尺码表明式为真.
协商(protocol)字段, 可以是数字或以下所列出了名字: ip, ip6, 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, ip6, 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.2 逻辑链路控制层头,
在FDDI, Token Ring 或 802.1头中会蕴藏此逻辑链路控制层头.

当以这个互联网上的相应的磋商标识为过滤条件时,
tcpdump只是检查LLC底部中以0x000000为组合单元标识符(OUI, 0x000000
标识一个中间以太网)的一段’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 底部中以0x080007 为OUI标识的’SNAP格式结构’,
并会检查AppleTalk etype域.
(nt: AppleTalk etype 是还是不是位于SNAP格式结构中, 未知, 需补充).

别的, 在以太网中, 对于ether proto protocol 选项, tcpdump 会为 protocol
所指定的商事检查
以太网类型域(the Ethernet type field), 但以下这几个协议除外:

iso, stp, and netbeui
tcpdump 将会检查802.3 物理帧以及LLC
头(那二种检查与FDDI, TR, 802.11互连网中的相应检查一致);
(nt: 802.3, 了解为IEEE 802.3,
其为一层层IEEE 标准的集合. 此聚众定义了有线以太网络中的物理层以及数额
链路层的媒体连着控制子层. stp 在上文已有描述)

atalk
tcpdump 将会检讨以太网物理帧中的AppleTalk etype 域
, 同时也会检查数据包中LLC尾部中的’SNAP格式结构’
(那二种检查与FDDI, TR, 802.11互连网中的相应检查一致)

aarp tcpdump 将会检查AppleTalk ARP etype 域, 此域或存在于以太网物理帧中,
或存在于LLC(由802.2 所定义)的
‘SNAP格式结构’中, 当为后人时, 该’SNAP格式结构’的OUI标识为0x000000;
(nt: 802.2, 可见晓为, IEEE802.2,
其中定义了逻辑链路控制层(LLC), 该层对应于OSI
网络模型中数据链路层的上层部分.
LLC 层为运用数据链路层的用户提供了一个联合的接口(平时用户是网络层).
LLC层以下是媒体连着控制层(nt: MAC层,
对应于数据链路层的下层部分).该层的完成以及工作方法会依据分裂物理传输媒介的两样而有所不同(比如,
以太网, 令牌环网,
光纤分布数据接口(nt: 实际可领悟为一种光纤互联网), 有线局域网(802.11), 等等.)

ipx tcpdump 将会检查物理以太帧中的IPX etype域, LLC头中的IPX
DSAP域,无LLC头并对IPX进行了包装的802.3帧,
以及LLC 尾部’SNAP格式结构’中的IPX etype 域(nt | rt: SNAP frame, 可知道为, LLC
头中的’SNAP格式结构’.
该意义属伊始明白阶段, 需补充).

decnet src host
设若数额包中DECNET源地址为host, 则与此对应的尺度表明式为真.
(nt:decnet, 由Digital Equipment Corporation 开发, 最早用于PDP-11 机器互联的网络协议)

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 含义一致.

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 含义一致.

srnr num
若是数额包已被标记为合作指定的条条框框集中的特定规则(nt: specified PF rule
number, 特定规则编号, 即特定规则),
则与此对应的条件表明式为真.(此选项只适用于被OpenBSD中pf程序做过标记的包(nt:
pf, packet filter, 可了解为
OpenBSD中的防火墙程序))

subrulenum num
与 srnr 含义一致.

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是以上协议中的一个.

lat, moprc, mopdl
与以下表明元含义一致:
ether proto p
p是以上协议中的一个. 必须求专注的是tcpdump方今还不能分析那么些协议.

vlan [vlan_id]
借使数量包为IEEE802.1Q VLAN 数据包, 则与此对应的标准化表明式为真.
(nt: IEEE802.1Q VLAN, 即IEEE802.1Q 虚拟互连网协议,
此商谈用于不一致互连网的时期的合力).
如果[vlan_id] 被指定, 则唯有数量包罗有指定的虚构网络id(vlan_id),
则与此对应的尺度表明式为真.
要小心的是, 对于VLAN数据包,
在表明式中遇见的率先个vlan关键字会改变表明式中接下去关键字所对应数据包中数据的
开班地点(即解码偏移). 在VLAN网络连串中过滤数据包时, vlan
[vlan_id]表明式可以被一再行使. 关键字vlan每出现五次都会增多
4字节过滤偏移(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每出现五遍都会扩展
4字节过滤偏移(nt: 过滤偏移, 可分晓为地点的解码偏移).

例如:
mpls 100000 && mpls 1024
表示: 过滤外层标签为100000 而层标签为1024的数额包

再如:
mpls && mpls 1024 && host 192.9.200.1
代表: 过滤发往或出自192.9.200.1的数据包,
该数据包的内层标签为1024, 且拥有一个外层标签.

pppoed
一经数据包为PPP-over-Ethernet的服务器探寻数据包(nt: Discovery packet,
其ethernet type 为0x8863),则与此对应的基准表明式为真.
(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数据包中的ipv4数据包

tcp, udp, icmp
与以下表达元含义一致:
ip proto p or ip6 proto p
其间p 是以上协议之一(含义分别为:
倘若数据包为ipv4或ipv6数据包并且其情商项目为 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)和多少个区域整合一个’域’(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=3), 则与此对应的规格表达式为真.

(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 F4 在上文已有描述, 可不能灵活运用’oamf4s’来定位)

oamf4
倘诺数额包为ATM数据包, 则与此对应的口径表明式为真. 对于Solaris
操作系统上的SunATM设备 , 借使数据包为ATM数据包
再者是 end-to-end 或 segment OAM F4 信元(VPI=0 并且
VCI=3 如故 VCI=4),
则与此对应的规范表达式为真.
(nt: OAM 与 end-to-end OAM F4 在上文已有描述, 可检索’oamf4s’来定位)

oam
倘若数据包为ATM数据包, 则与此对应的口径表明式为真. 对于Solaris
操作系统上的SunATM设备 , 如果数据包为ATM数据包
再就是是 end-to-end 或 segment OAM F4 信元(VPI=0 并且
VCI=3 要么 VCI=4),
则与此对应的规则表明式为真.
(nt: 此选项与oamf4重复, 需确认)

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

bcc
一旦数量包为ATM数据包, 则与此对应的标准化表明式为真. 对于Solaris
操作系统上的SunATM设备 , 若是数据包为ATM数据包
还假诺出自’广播信令线路'(nt: VPI=0 并且 VCI=2, ‘广播信令线路’, 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=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.2931 为ITU(国际电信联盟)制定的信令协议.
其中确定了在宽带综合工作数字网络的用户接口层建立, 维护, 取消
互连网连接的连锁步骤.)

metaconnect
假诺数量包为ATM数据包, 则与此对应的尺度表明式为真. 对于Solaris
操作系统上的SunATM设备 , 即使数据包为ATM数据包
再者是出自’元信令线路’并且是Q.2931合计中确定的以下二种信息: Setup, Calling
Proceeding, Connect,
Connect Ack, Release, 或者Release Done. 则与此对应的规则表明式为真.

expr relop expr
设若relop 两侧的操作数(expr)知足relop 指定的关系,
则与此对应的原则表明式为真.
relop 可以是以下关系操作符之一: >, <, <=, =, !=.
expr 是一个算术表明式. 此表明式中可利用整型常量(表示方法与标准C中同样),
二进制操作符(+, -, *, /, &, |,
<<, >>), 长度操作符, 以及对一定数据包中数据的引用操作符.
要留心的是, 所有的可比操作都默许操作数是无符号的,
比如说, 0x80000000 和 0xffffffff 都是大于0的(nt: 对于有记号的相比较,
根据补码规则, 0xffffffff
会小于0). 若是要引用数据包中的数码, 可拔取以下表明形式:
proto [expr : size]

proto 的取值可以是以下取值之一:ether, fddi, tr, wlan, ppp, slip, link,
ip, arp, rarp,
tcp, udp, icmp, ip6 要么 radio. 那指明了该引用操作所对应的协商层.(ether,
fddi, wlan,
tr, ppp, slip and link 对应于数据链路层, radio 对应于802.11(wlan,有线局域网)某些数据包中的附带的
“radio”头(nt:
其中描述了波特率, 数据加密等信息)).
要专注的是, tcp, udp
等上层协议目前只得使用于网络层拔取为IPv4或IPv6合计的互联网(此限制会在tcpdump将来版本中
举行改动). 对于指定协议的所需数据, 其在包数据中的偏移字节由expr
来指定.

以上表明中size 是可选的,
用来指明大家关怀那部分数据段的长短(nt:平常那段数据
是数据包的一个域), 其尺寸能够是1, 2, 或4个字节.
即使不给定size, 默认是1个字节. 长度操作符的要紧字为len,
那代码整个数据包的长度.

例如, ‘ether[0] & 1 != 0’ 将会使tcpdump 抓取所有多点广播数据包.(nt: ether[0]字节的最低位为1象征
数码包目的地址是多点广播地址). ‘ip[0] & 0xf != 5’ 对应抓取所有带有选项的
IPv4数据包. ‘ip[6:2] & 0x1fff =
0’对应抓取没被破碎的IPv4数据包或者
其有些编号为0的已破损的IPv4数据包.
那种多少检查措施也适用于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.

| 旅拍提醒 |

沙鱼涌码头是玄汉时期南粤西边最大的港湾,那里见证过抗战时期Hong Kong的文化名家大救援,也见证过省港大罢工的血与沙,历经历史变迁,相当适合拍摄历史人文题材的照片

当地民风朴实,海岸洁净美丽,胆子大的女子不妨在此间拍摄写真或肉体题材,黄昏时刻的亮光很好,无需前期也能拍出高饱和度的肖像,剪影式照片精晓起来也针锋相对较简单。但无法不注意安全!诚如拍摄时间为1天。

地址|广州市大鹏葵涌油码头以东

公交线路|从市区乘坐B755、M357、M362路,在“土洋派出所”公交车站下车,步行约196米,抵达鲨鱼涌港口。

自驾线路|盐坝急速土洋出口下,沿深葵公路行3公里,转葵鹏路约200米后,右拐上鲛鲨涌路口,1英里后便抵达沙鱼涌村口。

3 | 甘坑

找寻客家文化元素

甘坑社区内有三种分歧建筑,其中“甘坑火车站”、“甘坑炮楼观”都值得前往参观。在寸金尺土的费城,能有那样一个以客家文化为内涵的小镇真好,化身一位善良的客家人少女,或越过后梁,都别有一番色情。

晌蛇时刻,天还没全黑,路灯的暖光亮了四起,若被拍者走在巷中回过头看一笑,光隐约约约打在脸上,能拍出很好的心情风格照片。

| 旅拍提醒 |

甘坑社区的名建筑“探花府”保留木质结构,分前厅、中堂、后院。府内有千余木刻,美轮美奂,幅幅皆为故事,皆为方式精品。那里适合素描新手磨炼拍摄静物和光影变化。

地址|白云区布吉街道

公交线路|可搭乘980、m224、m227、m273、m324、m346、m414、m363路到甘坑村委站下车

自驾线路|

1)从布里斯班比亚迪/罗湖起程:南坪长足公路/清平高速公路→天官高速→李朗出口→布澜路(李朗、观澜方向)→甘李路→甘坑老村委即到

2)从卡塔尔多哈龙华启程:布龙路→丽湖庄园(三联桥底调头)→吉华路(前走一英里)→秀峰路→甘坑老村委即到

3)从布宜诺斯艾利斯/深圳/哈尔滨出发:广深高速/深惠高速→机荷高速→李朗出口→布澜路李朗出口→秀峰路→甘李路

4 | 大鹏所城

找寻鹏城之根源

大鹏所城,始建于明洪武二十七年。它是元朝两代中国西边的海防军事要塞,有着600多年抵御外侮的野史,涌现了一批典型的民族英雄。深圳今又名“鹏城”即发源此。大鹏所城,没有了喧闹的大海,沉稳内敛得这么动人。古村小巷间,多少日子故事、历史印痕,等着你去探寻、去定格。

| 旅拍提示 |

大鹏所城城墙由山麻石、青石砖砌成,长长的青砖小巷,就像拐角处就相会世一个撑着油纸伞的,像丁香一样的姑娘,拍摄古城人像、怀旧感情风格的肖像最契合不过。古村落雄姿也顺应拍摄建筑、操练取景角度。貌似拍摄时间约半天。

地址|河源市大鹏新区西门西路

公交线路|

市内乘坐360,364客车至“大鹏站”,转乘818路至核电站可在尼科西亚北站二楼乘坐“E11”路大巴至“大鹏站”,换乘B756路(坐9站)、928路(坐11站)到大鹏所城站下。

自驾线路|

市内由深福州道、滨河路、笋岗路、布心路等东行经莲塘过梧桐山隧道至沙头角,再经盐田上盐坝高速至葵涌,转走坪西超级公路从大鹏所城/核电站出口,经大鹏摄影向左侧走6海里即到。

绽放时间|09:00—18:00