在上一节讲了有些tcpdump常用作用,本期大家继承攻读tcpdump后续效应。

linux命令详解–tcpdump

本文目录:

留神:那篇文书档案取自tcpdump的指南。原始的版本 www.tcpdump.org 找到。

流量过滤

   
tcpdump不仅协助单个过滤表明式过滤,也还帮衬三个过滤表达式。但须求小心的是传播的过滤表达式如带有Shell通配符,需将过滤表达式放在单引号内,以幸免Shell对其举办解释和通配。如若急需深切学习过滤表达式,能够应用以下命令进行查看:

man pcap-filter

1、只抓取UDP数据包

[root@localhost ~]# tcpdump -i ens5f1 -c 2 'udp'
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ens5f1, link-type EN10MB (Ethernet), capture size 262144 bytes
14:37:38.852304 IP gateway.35428 > 239.255.255.250.ssdp: UDP, length 395
14:37:38.852458 IP gateway.35428 > 239.255.255.250.ssdp: UDP, length 467
2 packets captured
15 packets received by filter
0 packets dropped by kernel

tcpdump其它还辅助如下的商谈项目:

ip、ip6、arp、tcp、rarp

二 、抓取固定来源的数据包
   
对一台主机而言,后台运营的互连网有许多少个,所连接的服务器也会有许八个。那假使大家只想查看某二个服务器和主机的数目包境况了?在tcpdump中也支撑那样的数码包抓包,但须要安装src(source)dst(destination)就足以了,同时tcpdum也支撑各条件间逻辑运算,如andor等。
    假如tcpdump未内定dst和src,则暗许全匹配,而不区分是dst如故src

[root@localhost ~]# tcpdump -i ens5f1 -t -c 5 'udp' or 'dst 114.114.114.114' or 'src 192.168.8.1'
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ens5f1, link-type EN10MB (Ethernet), capture size 262144 bytes
IP6 fe80::b072:b447:2702:3fca.55407 > ff02::1:3.hostmon: UDP, length 33
IP 192.168.8.101.52468 > 224.0.0.252.hostmon: UDP, length 33
IP localhost.localdomain.52349 > gateway.domain: 14923+ PTR? 3.0.0.0.1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.2.0.f.f.ip6.arpa. (90)
IP gateway.domain > localhost.localdomain.52349: 14923 NXDomain 0/1/0 (154)
IP localhost.localdomain.43621 > gateway.domain: 25497+ PTR? a.c.f.3.2.0.7.2.7.4.4.b.2.7.0.b.0.0.0.0.0.0.0.0.0.0.0.0.0.8.e.f.ip6.arpa. (90)
5 packets captured
14 packets received by filter
0 packets dropped by kernel

③ 、抓取特定端口的数据包

[root@localhost ~]# tcpdump -i ens5f1 -c 10 'src port 53 and udp or dst port 80'
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ens5f1, link-type EN10MB (Ethernet), capture size 262144 bytes
15:05:42.618107 IP localhost.localdomain.32980 > tsa03s06-in-f14.1e100.net.http: Flags [S], seq 712530441, win 29200, options [mss 1460,sackOK,TS val 792506576 ecr 0,nop,wscale 7], length 0
15:05:42.623275 IP gateway.domain > localhost.localdomain.51286: 19244 1/0/0 PTR tsa03s06-in-f14.1e100.net. (85)
15:05:42.627834 IP gateway.domain > localhost.localdomain.57579: 54387 NXDomain* 0/1/0 (101)
15:05:42.632411 IP gateway.domain > localhost.localdomain.37002: 35102 NXDomain* 0/1/0 (101)
15:05:43.259504 IP gateway.domain > localhost.localdomain.44708: 24032 1/0/0 A 116.62.82.159 (50)
15:05:43.261047 IP gateway.domain > localhost.localdomain.44708: 36078 0/1/0 (107)
15:05:43.337416 IP gateway.domain > localhost.localdomain.37886: 32328 1/0/0 A 118.178.109.187 (53)
15:05:43.339220 IP gateway.domain > localhost.localdomain.37886: 47697 0/1/0 (110)
15:05:43.344380 IP gateway.domain > localhost.localdomain.45436: 31901 6/0/0 CNAME images0.cnblogs.com.cdn.dnsv1.com., CNAME 1069954.p23.tc.cdntip.com., A 180.101.217.192, A 180.101.217.119, A 180.101.217.115, A 180.153.100.201 (181)
15:05:43.356015 IP gateway.domain > localhost.localdomain.45436: 24484 2/1/0 CNAME images0.cnblogs.com.cdn.dnsv1.com., CNAME 1069954.p23.tc.cdntip.com. (174)
10 packets captured
13 packets received by filter
0 packets dropped by kernel

tcpdump还补助的过滤类型如下所示:

- port:端口
- host:主机,如'host 112.65.12.245'
- portranger:端口范围,如'dst portrange 0-22'
- net:网络段,如'dst net 192.168'
  如未设置过滤类型,则默认为主机(host)

④ 、抓取属于两台服务器之间的数据包

[root@localhost ~]# tcpdump -i ens5f1 -c 10 'host 192.168.8.8 and (www.cnblogs.com or www.baidu.com)'
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ens5f1, link-type EN10MB (Ethernet), capture size 262144 bytes
15:23:03.918266 IP localhost.localdomain.47234 > 115.239.210.27.https: Flags [P.], seq 660681023:660681721, ack 812631894, win 238, length 698
15:23:03.930901 IP 115.239.210.27.https > localhost.localdomain.47234: Flags [.], ack 698, win 944, length 0
15:23:03.939766 IP 115.239.210.27.https > localhost.localdomain.47234: Flags [.], seq 1:1461, ack 698, win 944, length 1460
15:23:03.939783 IP localhost.localdomain.47234 > 115.239.210.27.https: Flags [.], ack 1461, win 261, length 0
15:23:03.939950 IP 115.239.210.27.https > localhost.localdomain.47234: Flags [.], seq 1461:2921, ack 698, win 944, length 1460
15:23:03.939961 IP localhost.localdomain.47234 > 115.239.210.27.https: Flags [.], ack 2921, win 284, length 0
15:23:03.940137 IP 115.239.210.27.https > localhost.localdomain.47234: Flags [P.], seq 2921:4030, ack 698, win 944, length 1109
15:23:03.940146 IP localhost.localdomain.47234 > 115.239.210.27.https: Flags [.], ack 4030, win 307, length 0
15:23:03.940484 IP 115.239.210.27.https > localhost.localdomain.47234: Flags [P.], seq 4030:4155, ack 698, win 944, length 125
15:23:03.940496 IP localhost.localdomain.47234 > 115.239.210.27.https: Flags [.], ack 4155, win 307, length 0
10 packets captured
62 packets received by filter
0 packets dropped by kernel

 

1.1
tcpdump选项

 

常用协议数据报格式

   
在此对协议不做深远讲解,仅列出TCP/IP的数目报格式,有趣味的话,能够活动查阅相关材质。

  • IP协议数据报格式如下所示:
    澳门金沙国际 1

  • 常用协议编号如下所示:
    澳门金沙国际 2

  • TCP协议数据报格式如下所示:

澳门金沙国际 3

  • UDP研究数据报格式如下所示:

澳门金沙国际 4

办事中央直机关接在用tcpdump,感觉11分有利,前天头脑来潮百度了须臾间tcpdump的用法,才发现原来还有这样多强大的功用协调都不明白,那叫一个汗啊。

1.2
tcpdump表达式

wpcap的过滤器是以已申明的谓词语法为根基的。过滤器是1个ASCII字符串,它包涵了二个过滤表明式。pcap_compile()把这么些表达式编写翻译成内核级的包过滤器。

抓包进阶

    在精通各常用协议的数码报格式后,大家先来看望以下多少个示范:
① 、抓取本机与百度时期TCP一遍握手中的率先个网络包,且排除主机为cnblogs的数据包

[root@localhost ~]# tcpdump -i ens5f1 -c 5 'tcp[tcpflags] & tcp-syn != 0 and dst host www.baidu.com and not dst host www.cnblogs.com'
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ens5f1, link-type EN10MB (Ethernet), capture size 262144 bytes
15:39:26.311628 IP localhost.localdomain.53062 > 115.239.211.112.https: Flags [S], seq 735716502, win 29200, options [mss 1460,sackOK,TS val 794530269 ecr 0,nop,wscale 7], length 0
15:39:26.505795 IP localhost.localdomain.53078 > 115.239.211.112.https: Flags [S], seq 4031881731, win 29200, options [mss 1460,sackOK,TS val 794530463 ecr 0,nop,wscale 7], length 0
15:39:26.505863 IP localhost.localdomain.53080 > 115.239.211.112.https: Flags [S], seq 867030794, win 29200, options [mss 1460,sackOK,TS val 794530463 ecr 0,nop,wscale 7], length 0
15:39:29.222164 IP localhost.localdomain.53100 > 115.239.211.112.https: Flags [S], seq 4207431041, win 29200, options [mss 1460,sackOK,TS val 794533180 ecr 0,nop,wscale 7], length 0
15:39:29.235246 IP localhost.localdomain.53102 > 115.239.211.112.https: Flags [S], seq 548060444, win 29200, options [mss 1460,sackOK,TS val 794533193 ecr 0,nop,wscale 7], length 0
5 packets captured
15 packets received by filter
0 packets dropped by kernel

贰 、抓取IP包长度当先500的数据包

[root@localhost ~]# tcpdump -i ens5f1 -c 5 'ip[2:2]>500'
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ens5f1, link-type EN10MB (Ethernet), capture size 262144 bytes
15:35:27.613243 IP localhost.localdomain.5902 > 112.65.12.245.35445: Flags [.], seq 1864189501:1864198141, ack 2730205778, win 229, length 8640
15:35:27.613255 IP localhost.localdomain.5902 > 112.65.12.245.35445: Flags [P.], seq 8640:9410, ack 1, win 229, length 770
15:35:28.181058 IP localhost.localdomain.5902 > 112.65.12.245.35445: Flags [.], seq 9410:13730, ack 11, win 229, length 4320
15:35:28.181073 IP localhost.localdomain.5902 > 112.65.12.245.35445: Flags [.], seq 13730:18050, ack 11, win 229, length 4320
15:35:28.181090 IP localhost.localdomain.5902 > 112.65.12.245.35445: Flags [.], seq 18050:22370, ack 11, win 229, length 4320
5 packets captured
6 packets received by filter
0 packets dropped by kernel

proto[expr:size]详细解释如下所示:

proto:正是protocol的缩写,表示协议的称号。能够钦定的商谈项目差不离如下:

- ether:链路层协议  - fddi:链路层协议
- wlan:链路层协议   - ppp:链路层协议
- link:链路层协议   - ip:网络层
- arp:网络层       - rarp:网络层
- icmp:网络层      - ip6:网络层
- tcp:传输层       - udp:传输层

expr:用来内定数量包偏移量,表示从有个别体协会议数据包的第多少个位初始提取内容,暗中认可起先地方为0
size:表示从expr之后提取多少个字节

- 如果只设置expr,而未设置size,则默认提取1个字节
- ip[2:2]:则提取第3和第4个字节
- ip[0]:则提取ip协议的第1个字节

比较运算符:常用的相比运算符如下所示:

 <  >  <=  >=  =  !=

为了充实可读性,TCP协议数据报头中有伍个tcpflags标志字段域,在tcpdump中能够用以下办法开始展览表述:

tcp-urg tcp-ack tcp-psuh tcp-rst tcp-syn tcp-fin

逻辑运算符:假如1个过滤表达式中带有七个过滤表明式,则能够利用逻辑运算符举行串联

- ! / not:表示非关系
- && / and :表示与关系
- || / or:表示或关系

要详细清楚地点的那几个示例,需求对常用协议的多寡报格式有丰硕的垂询和通晓。

[参考资料]
1.处理器网络(第十版) 谢希仁

正文同步在微信订阅号上宣布,如各位小伙伴们欣赏笔者的篇章,也得以关怀本身的微信订阅号:woaitest,或扫描上边包车型地铁二维码添加关心:
澳门金沙国际 5

以此文作为备份,记录一些新明白的用法,各位网络好友何人有新的用法,也足以立刻报告自个儿举办增补,一起丰盛,哈哈!

1.3
tcpdump示例

本条表明式会采用那个数据包将会被堆存。若是表明式没有提交,那么,互联网上有所的包都会被基本过滤引擎所确认。不然,唯有那个表明式为’true’的包才会被确认。

先来看一个相比基本的用法:


本条表明式包涵了3个或多少个原语。原语常常包蕴了id(名字或连串),这么些id优先于限定词。以下是两种分化的限量词:

tcpdump -i eth0

tcpdump选拔命令行方式对接口的数目包实行筛选抓取,其丰硕本性表以往灵活的表明式上。不带其余选取的tcpdump,私下认可会抓取第二个互联网接口,且唯有将tcpdump进程终止才会告一段落抓包。

输入(type)
指明了怎么着东西是id所代表的。恐怕的输入是hostnetport。比如:`host
foo’,`net 128.3’,`port 20’。假使没有输入限定词,就借使是host

当中,eth0为参数值,表示供给抓包的网口,那是个需要参数哦。

例如:

方向(dir)
由id指明了几个特定的传导方向。可能的倾向是srcdstsrc or
dst
。比如,’src foo’,’dst net 128.3’,`src or dst port
ftp-data’。假使没有点名,就假如是src or
dst
。借使没有链路层(比如,像slip那样的点对点协议),那么限定词能够运用inboundoutbound,来指澳优个主旋律。

tcpdump帮忙广大的主要性字,上边先看多少个例子:

shell> tcpdump -nn -i eth0 icmp

协议(proto)
界定词限制了所匹配的说道。恐怕的商业事务有:etherfdditripip6arprarpdecnettcpudp。比如:`ether
src foo’,`arp net 128.3’,`tcp port
21’。要是没有点名协议限定词,那么就假诺全体的商议都会被允许。例如:’src
foo’等价于'(ip or arp or rarp)src
foo'(当然,不能够有不切合语法的假名出现),’net bar’等价于'(ip or arp or
rarp) net bar’,’port53’等价于'(tcp or udp) port 53’。

(例1)tcpdump -i eth0 host 192.168.0.250
—–在网口eth0上抓取主机地址为192.168.0.250的有着数据包。

上边是事无巨细的tcpdump用法。

[
‘fddi’日常是’ether’的小名;解析器会认为它们是在一定网络接口上的多寡链路层。FDDI的首部包括了和以太网很相似的源地址和目的地址,并且普通也饱含了和以太网很一般的数目包类型。所以,在FDDI网域上利用过滤器和在以太网上使用过滤器基本一致。FDDI的首部还包涵了此外的数额,然则你不可能在过滤器表明式内代表他们。

(例2)tcpdump -i eth0 net 192.168.0.0/24 ——
在网口eth0上抓取互联网地址为192.168.0.0/24的富有数据包

 

一样的,’tr’也是’ether’的1个别名,它是较早被选取于FDDI的首部,也接纳在令牌环互联网首部。]

(例3)tcpdump -i eth0 port 80 ——
在网口eth0上抓取端口为80的保有数据包(注意,那里不区分是源端口还是目的端口)

1.1 tcpdump选项

它的命令格式为:

tcpdump [ -DenNqvX ] [ -c count ] [ -F file ] [ -i interface ] [ -r file ]
        [-s snaplen ] [ -w file ] [
expression ]

抓包选项:
-c:钦定要抓取的包数量。注意,是最后要收获这么八个包。例如,钦点”-c
10″将得到十个包,但也许早就处理了玖拾柒个包,只然则唯有1一个包是满意条件的包。-i
interface:钦定tcpdump需求监听的接口。若未钦赐该接纳,将从系统接口列表中寻找编号最小的已布署好的接口(不包蕴loopback接口,要抓取loopback接口使用tcpdump
-i lo),

            :一旦找到第三个符合条件的接口,搜寻立即结束。能够行使’any’关键字表示拥有网络接口。
-n:对地点以数字艺术显式,不然显式为主机名,也正是说-n选项不做主机名解析。
-nn:除了-n的成效外,还把端口呈现为数值,不然展现端口服务名。
-N:不打字与印刷出host的域名部分。例如tcpdump将会打字与印刷’nic’而不是’nic.ddn.mil’。
-P:钦赐要抓取的包是流入还是流出的包。能够给定的值为”in”、”out”和”inout”,暗中同意为”inout”。
-s
len:设置tcpdump的数目包抓取长度为len,如若不安装默许将会是65535字节。对于要抓取的数码包较大时,长度设置不够只怕会发生包截断,若出现包截断,

      :输骑行中会出现”[|proto]”的标志(proto实际会显示为研讨名)。可是抓取len越长,包的处理时间越长,并且会回落tcpdump可缓存的数据包的数据,

     
:从而会促成数据包的不见,所以在能抓取大家想要的包的前提下,抓取长度越小越好。

出口选项:
-e:输出的每行中都将席卷数据链路层底部音讯,例如源MAC和目的MAC。
-q:急速打字与印刷输出。即打字与印刷很少的商谈相关音信,从而输骑行都比较简略。
-X:输出包的头顶数据,会以16进制和ASCII两种方法同时输出。
-XX:输出包的尾部数据,会以16进制和ASCII二种方法同时输出,更详实。
-v:当分析和打字与印刷的时候,爆发详细的出口。
-vv:发生比-v更详实的输出。
-vvv:产生比-vv更详尽的输出。

别的效率性选项:
-D:列出可用于抓包的接口。将会列出接口的数值编号和接口名,它们都得以用于”-i”后。
-F:从文件中读取抓包的表明式。若使用该选项,则下令行中给定的其他表明式都将失效。
-w:将抓包数据输出到文件中而不是明媒正娶输出。能够而且兼容”-G
time”选项使得出口文件每time秒就机关怀换成另2个文书。可透过”-r”选项载入那一个文件以进行分析和打字与印刷。
-r:从给定的多少包文件中读取数据。使用”-“表示从正式输入中读取。

从而常用的选项也就这多少个:

  • tcpdump -D
  • tcpdump -c num -i int -nn -XX -vvv

 

除了以上内容,还有局地特种的限定词和地方的款式不太一样,它们是:gatewaybroadcastlessgreater和一部分算术表明式。那些内容会在下边和豪门介绍。

当然,大家也足以钦赐源端口或目标端口

1.2 tcpdump表达式

表明式用于筛选输出哪些类型的数据包,假若没有给定表明式,全体的数码包都将出口,不然只输出表明式为true的包。在表明式中出现的shell元字符提出利用单引号包围。

tcpdump的表达式由1个或七个”单元”组成,每种单元一般包括ID的修饰符和1个ID(数字或名称)。有三种修饰符:

(1).type:指定ID的类型。

可以给定的值有host/net/port/portrange。例如”host foo”,”net
128.3″,”port 20″,”portrange 4000-6008″。暗中认可的type为host。

(2).dir:指定ID的方向。

能够给定的值包罗src/dst/src or dst/src and dst,默许为src or
dst。例如,”src foo”表示源主机为foo的数据包,”dst net
128.3″表示目的网络为128.3的数据包,”src or dst port
22″表示源或指标端口为22的数据包。

(3).proto:通过给定协议限制匹配的数码包类型。

常用的说道有tcp/udp/arp/ip/ether/icmp等,若未给定协议项目,则万分全部只怕的种类。例如”tcp
port 21″,”udp portrange 七千-7009″。

所以,2个着力的表达式单元格式为”proto dir
type ID”

除了运用修饰符和ID组成的表明式单元,还有关键字表达式单元:gateway,broadcast,less,greater以及算术表明式。

表明式单元之间能够使用操作符” and / && /
or / || / not / ! “进行几次三番,从而结成复杂的基准表达式。如”host
foo and not port ftp and not port
ftp-data”,那意味筛选的多寡包要满足”主机为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”意义一样,都表示包的说道为tcp且目标端口为ftp或ftp-data或domain(端口53)。

行使括号”()”能够变更表明式的优先级,但必要专注的是括号会被shell解释,所以应当使用反斜线”\”转义为”\(\)”,在必要的时候,还亟需包围在引号中。

大家得以行使andornot将原语连接起来,来布局八个更扑朔迷离的过滤表达式。例如:`host
foo and not port ftp and not port
ftp-data’。假设要简化输入,我们得以把已列出的id限定词省略。比如:`tcp
dst port ftp or ftp-data or domain’ 和 `tcp dst port ftp or tcp dst
port ftp-data or tcp dst port domain’是截然等价的。

(例4)tcpdump -i eth0 src port 80 and dst port6100 —
在网口eth0上抓取源端口为80且目标端口为6100的数据包,那里运用了and逻辑运算符,后边再介绍

1.3 tcpdump示例

(1).暗许运营

tcpdump

默许情形下,直接开发银行tcpdump将监视第三个互连网接口(非lo口)上装有流通的数据包。那样抓取的结果会极度多,滚动极快。

(2).监视内定互联网接口的数据包

tcpdump -i eth1

假设不点名网卡,私下认可tcpdump只会监视第贰个互联网接口,如eth0。

(3).监视钦定主机的数据包,例如全数进入或离开longshuai的数据包

tcpdump host longshuai

(4).打字与印刷helios<–>hot或helios<–>ace之间通讯的数据包

tcpdump host helios and \( hot or ace \)

(5).打字与印刷ace与其余其它主机之间通信的IP数据包,但不蕴含与helios之间的数据包

tcpdump ip host ace and not helios

(6).截获主机hostname发送的持有数据

tcpdump src host hostname

(7).监视全数发送到主机hostname的数据包

tcpdump dst host hostname

(8).监视钦赐主机和端口的数据包

tcpdump tcp port 22 and host hostname

(9).对本机的udp 123端口举行监视(123为ntp的劳动端口)

tcpdump udp port 123

(10).监视钦赐网络的数据包,如本机与192.168网段通讯的数据包,”-c
10″表示只抓取10个包

tcpdump -c 10 net 192.168

(11).打字与印刷全部通过网关snup的ftp数据包(注意,表明式被单引号括起来了,那能够幸免shell对中间的括号进行不当解析)

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

(12).抓取ping包

[root@server2 ~]# tcpdump -c 5 -nn -i eth0 icmp 

tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
12:11:23.273638 IP 192.168.100.70 > 192.168.100.62: ICMP echo request, id 16422, seq 10, length 64
12:11:23.273666 IP 192.168.100.62 > 192.168.100.70: ICMP echo reply, id 16422, seq 10, length 64
12:11:24.356915 IP 192.168.100.70 > 192.168.100.62: ICMP echo request, id 16422, seq 11, length 64
12:11:24.356936 IP 192.168.100.62 > 192.168.100.70: ICMP echo reply, id 16422, seq 11, length 64
12:11:25.440887 IP 192.168.100.70 > 192.168.100.62: ICMP echo request, id 16422, seq 12, length 64
5 packets captured
6 packets received by filter
0 packets dropped by kernel

设若显著要抓取主机为192.168.100.70对本机的ping,则使用and操作符。

[root@server2 ~]# tcpdump -c 5
-nn -i eth0 icmp and src 192.168.100.62

tcpdump: verbose output suppressed, use-v or -vv for full
protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size
65535
bytes
12:09:29.957132 IP 192.168.100.70 > 192.168.100.62: ICMP echo request, id 16166, seq 1, length 64
12:09:31.041035 IP 192.168.100.70 > 192.168.100.62: ICMP echo request, id 16166, seq 2, length 64
12:09:32.124562 IP 192.168.100.70 > 192.168.100.62: ICMP echo request, id 16166, seq 3, length 64
12:09:33.208514 IP 192.168.100.70 > 192.168.100.62: ICMP echo request, id 16166, seq 4, length 64
12:09:34.292222 IP 192.168.100.70 > 192.168.100.62: ICMP echo request, id 16166, seq 5, length 64
5
packets captured
5 packets received by filter
0 packets dropped by kernel

只顾不可能直接写icmp src
192.168.100.70,因为icmp协议不支持直接运用host这几个type。

(13).抓取到本机22端口包

[root@server2 ~]# tcpdump -c 10
-nn -i eth0 tcp dst port 22 

tcpdump: verbose output suppressed, use-v or -vv for full
protocol decode listening on eth0, link-type EN10MB (Ethernet),
capture size 65535 bytes
12:06:57.574293 IP 192.168.100.1.5788 > 192.168.100.62.22: Flags [.], ack 535528834, win 2053, length 0
12:06:57.629125 IP 192.168.100.1.5788 > 192.168.100.62.22: Flags [.], ack 193, win 2052, length 0
12:06:57.684688 IP 192.168.100.1.5788 > 192.168.100.62.22: Flags [.], ack 385, win 2051, length 0
12:06:57.738977 IP 192.168.100.1.5788 > 192.168.100.62.22: Flags [.], ack 577, win 2050, length 0
12:06:57.794305 IP 192.168.100.1.5788 > 192.168.100.62.22: Flags [.], ack 769, win 2050, length 0
12:06:57.848720 IP 192.168.100.1.5788 > 192.168.100.62.22: Flags [.], ack 961, win 2049, length 0
12:06:57.904057 IP 192.168.100.1.5788 > 192.168.100.62.22: Flags [.], ack 1153, win 2048, length 0
12:06:57.958477 IP 192.168.100.1.5788 > 192.168.100.62.22: Flags [.], ack 1345, win 2047, length 0
12:06:58.014338 IP 192.168.100.1.5788 > 192.168.100.62.22: Flags [.], ack 1537, win 2053, length 0
12:06:58.069361 IP 192.168.100.1.5788 > 192.168.100.62.22: Flags [.], ack 1729, win 2052, length 0
10
packets captured
10 packets received by filter
0 packets dropped by kernel

(14).解析包数据

[root@server2 ~]# tcpdump -c 2
-q -XX -vvv -nn -i eth0 tcp dst port 22
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture
size 65535 bytes
12:15:54.788812 IP (tos 0x0, ttl 64, id 19303, offset 0, flags [DF], proto TCP (6), length 40)
   192.168.100.1.5788 > 192.168.100.62.22: tcp 0
        0x0000:  000c 2908 9234 0050 56c0 0008 0800 4500  ..)..4.PV…..E.
       0x0010:  0028 4b67 4000 4006 a5d8 c0a8 6401 c0a8 
.(Kg@.@…..d…
       0x0020:  643e 169c
0016 2426 5fd6 1fec 2b62 5010  d>….$&_…+bP.
       0x0030:  0803 7844 0000 0000 0000 0000       
    ..xD……..
12:15:54.842641 IP (tos 0x0, ttl 64, id 19304, offset 0, flags [DF], proto TCP (6), length 40)
   192.168.100.1.5788 > 192.168.100.62.22: tcp 0
        0x0000:  000c 2908 9234 0050 56c0 0008 0800 4500  ..)..4.PV…..E.
       0x0010:  0028 4b68 4000 4006 a5d7 c0a8 6401 c0a8 
.(Kh@.@…..d…
       0x0020:  643e 169c
0016 2426 5fd6 1fec 2d62 5010  d>….$&_…-bP.
       0x0030:  0801 7646 0000 0000 0000 0000       
    ..vF……..
2 packets captured
2 packets received by filter
0 packets dropped by kernel

总的看,tcpdump对大旨的多寡包抓取方法依然较简单的。只要驾驭有限的多少个挑选(-nn
-XX -vvv -i -c -q),再组成表达式即可。

姊妹篇:网络扫描工具nmap

正文永久更新链接地址:http://www.linuxidc.com/Linux/2017-06/145099.htm

澳门金沙国际 6

可应用的原语有:

(例5)tcpdump -i eth0 icmp — 在网口eth0上抓取全数icmp协议的数据包

dst host *host
当IPv4/v6数据包的目的域(destination
田野)为
host时为true,host*既能够是地方,也能够是名字。

上述多少个例证,能够大体突显出tcpdump的基本用法。

src host *host
当IPv4/v6数据包的源域(source 田野(field))为
host*时为true。

实则,tcpdump首要包涵三种类型的机要字,第3种是有关项目标重庆大学字,主要不外乎host,net,port,如上边的例(1)(2)(3),第壹种

host *host
当IPv4/v6数据包的源域(source 田野)或目标域(destination
田野先生)为
host*时为true。以上任何二个host表达式能够是iparprarpip6始于,如下所示:

是规定传输方向的第2字,重要包蕴src,dst,src or dst,src and
dst,这个根本字指明了传输的主旋律,如上边的例(4)。第两种是说道首要字,包括fddi,ip,arp,

ip host host

rarp,tcp,udp,imcp等,如上面包车型客车例(5)。

等价于:

而外那三种档次的重中之重字外,还有别的主要的基本点字,如:gateway,broadcast,less,greater,还有三种逻辑运算,取非运算是’not’、’!’,与运算符是’and’、’&&’、

ether proto \ip and host host

或运算符是’or’、’||’,这个重点字能够组成起来构成强大的组合条件来满足大家的必要。

如果host是3个多IP地址,那么每1个地点都会被匹配。

先看看tcpdump的切实可行参数及意义:

ether dst *ehost*

-i:钦赐tcpdump监听的互连网接口

当以太网的指标地址为ehost时为true。ehost能够是三个出自/etc/ether的名字,也能够是贰个数字代号(参见 ethers(3N)for numeric format)。

-s:内定要监听数据包的长度

ether src *ehost*

-c:钦定要监听的数据包数量,达到钦赐数量后自动终止抓包

当以太网的源地址为ehost时为true。

-w:钦点将监听到的多寡包写入文件中保留

ether host *ehost*

-A:钦赐将每种监听到的数目包以ACSII可知字符打字与印刷

当以太网的目标地址,或源地址为ehost时为true。

-n:钦定将每种监听到数码包中的域名转换到IP地址后出示

gateway host

-nn:内定将各样监听到的数额包中的域名转换来IP、端口从利用名称转换成端口号后显示

host为网关时为true。即,以太网源地址或目标地址是host,但源地址和指标地址不相同时为hosthost不能够还是无法被机器的主机-IP地址(host-name-to-IP-address)机制找到(如主机名文件,DNS,NIS等),也能被主机-以太网地址(host-name-to-Ethernet-address)机制找到(如/etc/ethers等)。例如:

-e:钦命将监听到的多寡包链路层的新闻打字与印刷出来,包含源mac和指标mac,以及互联网层的情商

ether host ehost and not host host

-p:将网卡设置为非混杂格局,无法与host或broadcast一起使用

host / ehost均可选择名字或数字。这么些语法近年来在IPv6下无法源办公室事。

-r:钦赐从某些文件中读取数据包

dst net *net*

-S:钦点打字与印刷各样监听到的数据包的TCP相对队列号而非相对类别号

当IPv4/v6数据包的目标地址的网络号包含了net时为true。net能够是三个起点/etc/networks的名字,也能够是一个互联网号(越来越多内容请参见 networks(4))。

OK,参数介绍先到此地,上边看多少个具体育赛事例

src net *net*

tcpdump -i eth0 -s 1400 -nn host 192.168.0.250 and ! 192.168.0.74 and
icmp -e

当IPv4/v6数据包的源地址的互连网号包含了net时为true。

抓取网口eth0上192.168.0.250与除192.168.0.74外的别样主机之间的icmp报文

net *net*

tcpdump -i eth0 -s 1400 -nn tcp and \(host 192.168.0.250 and !
192.168.0.74\)

当IPv4/v6数据包的指标地址,或源地址的互连网号包括了net时为true

抓取网口eth0上192.168.0.250与除192.168.0.74外的兼具tcp数据包,那里运用了括号,注意,在tcpdump中使用括号时必须用转义。

net *net mask netmask*

tcpdump -i eth0 ether src or dst 00:21:85:6C:D9:A3

当IP地址是 net ,子网掩码匹配 netmask 时为true。 恐怕须求 src 或 dst何况限定。
注意,这一个语法不可能利用于IPv6。

抓取网口eth0上源mac地址或指标mac地址为00:21:85:6C:D9:A3的拥有数据包,注意,那里的mac地址格式必须以’:’分隔。

net *net/len*

 =============================================================================================================

当IP地址是 net ,子网掩码一连1的个数为 len 时为true。 只怕须求 src 或 dst况且限定。

 

dst port *port*

  TCPDUMP简介

当数据包是ip/tcp, ip/udp, ip6/tcp 或
ip6/udp,并且指标端口号是port时为true。port可以是数字,或是在/etc/services中被利用的名字。(参见 tcp(4P) and
udp(4P)
)。假使采纳名字,那么端口号和研究都将被检查和测试。假若使用数字,也许2个不肯定的名字,那么只有端口号会被检查和测试。(比如:dst
port 513
将打字与印刷tcp/login数据流和udp/who数据流。port
domain
将打字与印刷tcp/domain的数据流和udp/domain的数据流)。

  在观念的网络分析和测试技术中,嗅探器(sniffer)是最常见,也是最重点的技术之一。sniffer工具首先是为互连网管理员和网络程序员举行网络分析而安顿的。对于网络管理职员来说,使用嗅探器能够随时精晓网络的骨子里境况,在网络质量大幅降低的时候,能够由此sniffer工具来分析原因,找出造成互联网堵塞的发源。对于互联网程序员来说,通过sniffer工具来调节和测试程序。

src port *port*

  用过windows平台上的sniffer工具(例如,netxray和sniffer
pro软件)的爱侣或然都掌握,在共享式的局域网中,选择sniffer工具大约能够对互联网中的全部流量一览无余!Sniffer工具实际上正是贰个互连网上的抓包工具,同时还足以对抓到的包进行解析。由于在共享式的网络中,消息包是会播放到网络中颇具主机的网络接口,只不过在没有应用sniffer工具从前,主机的网络设施会判定该新闻包是不是相应接受,那样它就会吐弃不应有吸收接纳的音信包,sniffer工具却使主机的互联网设施接收所有到达的音信包,那样就完结了互联网监听的法力。

当源端口号是 port时为true。

  Linux作为互连网服务器,越发是当做路由器和网关时,数据的收集和剖析是必需的。所以,前几天大家就来探望Linux中强大的网络数据搜集分析工具——TcpDump。

port *port*

  用简短的话来定义tcpdump,正是:dump the traffice on a
network,依据使用者的概念对互联网上的多寡包进行收缴的包分析工具。

当源端口号或目标端口号为 port 时为true。以上任何3个port表明式能够以重庆大学字tcpudp始于,如下所示:

  作为网络上经典的的系统一管理理员必备工具,tcpdump以其强大的效益,灵活的截取策略,成为各种高级的系统一管理理员分析网络,排查问题等所必需的东东之一。

tcp src port port

  顾名思义,TcpDump能够将互连网中传送的数据包的“头”完全截获下来提供分析。它匡助针对互联网层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来赞助你去掉无用的音讯。

只匹配源端口是 port 的tcp数据包。

  tcpdump提供了源代码,公开了接口,由此具有很强的可扩张性,对于网络维护和侵袭者都以尤其实惠的工具。tcpdump存在于基本的FreeBSD系统中,由于它供给将网络界面设置为混杂格局,普通用户不能健康实施,但全体root权限的用户能够间接执行它来获得网络上的信息。由此系统中留存网络分析工具关键不是对本机安全的威胁,而是对互联网上的别样电脑的安全存在劫持。

less *length*

  普通景况下,直接开发银行tcpdump将监视第②个网络界面上具有流过的数据包。

当数据包的长度小于等于length时为true。即:

  -----------------------

len <= length.

  bash-2.02# tcpdump

greater *length*

  tcpdump: listening on eth0

当数据包的长短超过等于length时为true。即:

  11:58:47.873028 202.102.245.40.netbios-ns >
202.102.245.127.netbios-ns: udp 50

len >= length.

  11:58:47.974331 0:10:7b:8:3a:56 > 1:80:c2:0:0:0 802.1d ui/C
len=43

ip proto *protocol*

  0000 0000 0080 0000 1007 cf08 0900 0000

当数据包是IP数据包,并且它的情商项目为protocol时为true。protocol能够是2个数字,也得以是icmpicmp6igmpigrppimahespvrrpudp 或 tcp中的一个。注意,tcpudp, icmp是必不可缺字,所以,它们要选拔反斜杠(\)来转义,就好比C-shell中的\\。注意,那么些原语不会去追踪协议首部链。

  0e80 0000 902b 4695 0980 8701 0014 0002

ip6 proto *protocol*

  000f 0000 902b 4695 0008 00

当数据包是IPv6数据包,并且它的协议项目为protocol时为true。注意,那么些原语不会去追踪协议首部链。

  11:58:48.373134 0:0:e8:5b:6d:85 > Broadcast sap e0 ui/C len=97

ip6 protochain *protocol*

  ffff 0060 0004 ffff ffff ffff ffff ffff

当数据包是IPv6数据包,并且,在它的情商首部链中,包蕴了protocol品类的商议首部时,为true。
例如:

  0452 ffff ffff 0000 e85b 6d85 4008 0002

ip6 protochain 6

  0640 4d41 5354 4552 5f57 4542 0000 0000

能匹配全数的,拥有TCP协议首部的IPv6的数据包。在IPv6首部和TCP首部之间,大概含有认证首部,路由首部和跳数选项首部。由那一个原语所生成的BPF(BSD
Packet
Filter,包过滤机制)码是扑朔迷离的,而且不能被BPF优化器优化,所以,在一些程度上,它的进程相比较慢。

  0000 00

ip protochain *protocol*

  ^C

功能和 ip6 protochain *protocol*相同,只是那一个应用于
IPv4。

  ------------------------

ether broadcast

  首先我们注意一下,从地点的输出结果上能够看出来,基本上tcpdump总的的出口格式为:系统时间
来源主机.端口 > 目标主机.端口 数据包参数

当数据包是以太网广播数据包时为true。关键字ether是可选的。

  TcpDump的参数化支持

ip broadcast

  tcpdump扶助非凡多的分裂参数,如选用-i参数钦命tcpdump监听的互联网界面,那在计算机械和工具有多个互联网界面时那2个有用,使用-c参数内定要监听的多少包数量,使用-w参数钦点将监听到的多寡包写入文件中保留,等等。

当数据包是IP广播数据包时为true。它会检讨有着的播音,包罗地点全是0的和地点全是1的,然后,检查子网掩码。

  然则更扑朔迷离的tcpdump参数是用于过滤指标,这是因为互联网中流量非常的大,倘诺不加分辨将有着的数量包都挡住下来,数据量太大,反而不易于觉察须要的数据包。使用那些参数定义的过滤规则能够阻止特定的数据包,以减少目的,才能更好的解析互联网中存在的题材。tcpdump使用参数钦赐要监视数据包的花色、地址、端口等,依据具体的网络难题,丰裕利用这个过滤规则就能落得飞速定位故障的指标。请使用man
tcpdump查看这么些过滤规则的现实用法。

ether multicast

  显明为了安全起见,不用作互连网管理用途的微处理器上不应有运维这一类的互连网分析软件,为了挡住它们,能够遮挡内核中的bpfilter伪设备。一般情形下网络硬件和TCP/IP堆栈不援救接收或发送与本总计机非亲非故的数据包,为了接收这么些数据包,就非得采纳网卡的混合形式,并绕过专业的TCP/IP堆栈才行。在FreeBSD下,那就供给内核扶助伪设备bpfilter。因而,在根本中撤除bpfilter帮忙,就能挡住tcpdump之类的网络分析工具。

当数据包是以太网多播数据包时为true。关键字ether是可选的。
下边是三个常用短语`ether[0] & 1 != 0

  并且当网卡被设置为混杂格局时,系统会在控制台和日志文件中留给记录,提示管理员留意这台系统是不是被用作攻击同互联网的其他计算机的跳板。

ip multicast

  May 15 16:27:20 host1 /kernel: fxp0: promiscuous mode enabled

当数据包是IP多播数据包时为true。

  即使互连网分析工具能将网络中传递的数量记录下来,可是网络中的数据流量非常的大,怎么样对那个多少举办剖析、分类总计、发现并告诉错误却是更重要的题材。互连网中的数据包属于分歧的磋商,而不一致协商数据包的格式也不比。由此对抓获的数据进行解码,将包中的新闻尽也许的展示出来,对于协议分析工具来讲更为主要。昂贵的买卖分析工具的优势就在于它们能支撑广大类别的应用层协议,而不只只扶助tcp、udp等低层协议。

ip6 multicast

  从下面tcpdump的输出可以看看,tcpdump对截获的多寡并不曾展开彻底解码,数据包内的大部内容是使用十六进制的样式直接打字与印刷输出的。明显那不利于分析互连网故障,平常的消除办法是先采用带-w参数的tcpdump
截获数据并保留到文件中,然后再使用其余程序进行解码分析。当然也应有定义过滤规则,以制止捕获的多寡包填满全部硬盘。

当数据包是IPv6多播数据包时为true。

  TCP功能

ether proto *protocol*

  数据过滤

当数据包是以太类型的protocol时为true。protocol可以是二个数字,也能够是ipip6arprarpatalkaarp,decnetscalatmopdlmoprc,isostpipxnetbeui中的叁个。注意,那么些标记也都以关键字,所以,他们都须求用反斜杠(\)转义。

  不带别的参数的TcpDump将寻找系统中具有的网络接口,并突显它截获的有着数据,那个多少对大家不自然全都必要,而且数量太多不便于分析。所以,大家理应先想好内需怎么样数据,TcpDump提供以下参数供大家选拔数据:

[在使用FDDI(比如’fddi protocol arp‘)和令牌环(比如’tr protocol
arp
‘)和任关昊过一半那种协议时,协议依照802.2逻辑链路控制(LLC)来分辨,这一个音讯一般在FDDI或令牌环首部的发端。

  -b 在数量-链路层上摘取情商,包罗ip、arp、rarp、ipx都以这一层的。

当要求识别大多数磋商的标识,比如FDDI或令牌环时, Tcpdump只检查LLC报头的ID数据域,它们以SNAP格式存款和储蓄,并且,组织单位识别码(Organizational
Unit
Identifier(OUI))为0x000000,以封装以太网。它不会检查那几个包是不是SNAP格式的,并在0x000000单元有OUI。

  例如:tcpdump -b arp 将只展现互连网中的arp即地址转换协议信息。

然而,iso是个特例,它会检查LLC首部的指标服务存取点DSAP(Destination
Service Access Point)和源服务存取点SSAP(Source Service Access
Point),stpnetbeui会检查LLC首部的DSAP,atalk会检查数据包是还是不是SNAP格式的,并且OUI是或不是0x0七千7。Appletalk
同样如此。

  -i
选用过滤的网络接口,假若是作为路由器至少有七个互联网接口,通过那几个选项,就足以只过滤钦赐的接口上通过的数据。例如:

在以太网的例证中,tcpdump反省超越50%说道的以太网类型字段,isosap 和 netbeui除此之外,因为它们会检讨802.3帧,然后检查LLC首部,就如它对FDDI和令牌环那样。atalk,它检查以太网帧的Appletalk
etype和SNAP格式的以太网帧,arrp,它在以太网帧中检查Appletalk A君越P
etype,或是在OUI为0x000000的802.2
SNAP帧中检索,还有ipx,他会在以太网帧中检查IPX etype,在LLC首部反省IPX
DSAP,没有用802.3装进的LLC首部的IPX,和SNAP帧中的IPX etype。]

  tcpdump -i eth0 只彰显通过eth0接口上的享有报头。

decnet src *host*

  src、dst、port、host、net、ether、gateway这多少个选项又各自包括src、dst
、port、host、net、ehost等附加选项。他们用来辨别数据包的发源和去向,src
host 192.168.0.1钦点源主机IP地址是192.168.0.1,dst net
192.168.0.0/24钦赐指标是网络192.168.0.0。以此类推,host是与其钦赐主机相关无论它是源依然目标,net是与其钦赐网络有关的,ether前边跟的不是IP地址而是物理地址,而gateway则用来网关主机。或许有点复杂,看上边例子就了然了:

当DECNET的源地址为host时为true,它可能是一个格式为’10.123’的地方,也或者是四个DECNET主机名。[DECNET主机名称唯有在布局成可运营DECNET的Ultrix系统中才拿走扶助。]

  tcpdump src host 192.168.0.1 and dst net 192.168.0.0/24

decnet dst *host*

  过滤的是源主机为192.168.0.1与指标网络为192.168.0.0的报头。

当DECNET的目标地址为host时为true。

  tcpdump ether src 00:50:04:BA:9B and dst……

decnet host *host*

  过滤源主机物理地址为XXX的报头(为啥ether
src前面没有host恐怕net?物理地址当然不也许有网络喽)。

当DECNET的源地址或目标地址为host时为true。

  Tcpdump src host 192.168.0.1 and dst port not telnet

ipip6arprarpatalkaarpdecnetisostpipxnetbeui

  过滤源主机192.168.0.1和指标端口不是telnet的报头。

缩写是:

  ip icmp arp rarp 和
tcp、udp、icmp那个选取等都要松开第①个参数的职分,用来过滤数据报的类型。

ether proto p

  例如:

p 是以上协议中的一个。

  tcpdump ip src……

latmoprcmopdl

  只过滤数据-链路层上的IP报头。

缩写是:

  tcpdump udp and src host 192.168.0.1

ether proto p

  只过滤源主机192.168.0.1的装有udp报头。

p 是以上协议中的八个。
注意: tcpdump 如今并不知道,如何剖析出那几个协议。

  数据展现/输入输出

vlan *[vlan_id]*

  TcpDump提供了十足的参数来让大家选择怎么样处理获得的数码,如下所示:

当数据包是IEEE 802.1Q
VLAN数据包时为true。若[vlan_id]被钦赐,则仅当数码包为钦点的vlan_id,值才为true。注意,在如若数据包为VLAN数据包的前提下,表明式中的第二个首要字vlan会转移剩余表达式的解码偏移量。

  -l 能够将数据重定向。

tcpudpicmp

  如tcpdump -l >tcpcap.txt将得到的多少存入tcpcap.txt文件中。

缩写是:

  -n 不开始展览IP地址到主机名的更换。

ip proto p or ip6 proto p

  假如不利用这一项,当系统中存在某一主机的主机名时,TcpDump会把IP地址转换为主机名展现,就如这样:eth0
< ntc9.1165> router.domain.net.telnet,使用-n后化作了:eth0 <
192.168.0.9.1165 > 192.168.0.1.telnet。

p 是以上协议中的3个。

WinPcap过滤串表明式的语法,linux命令详解。  -nn 不开始展览端口名称的转换。

iso proto *protocol*

  上边那条音信使用-nn后就变成了:eth0 < ntc9.1165 >
router.domain.net.23。

当数据包的合计项目为protocol的OSI数据包时值为true。Protocol能够是二个数字或以下名称中的3个:clnpesisisis

  -N 不打字与印刷出默许的域名。

clnpesisisis

  依旧这条消息-N 后就是:eth0 < ntc9.1165 > router.telnet。

缩写是:

  -O 不进行匹配代码的优化。

iso proto p

  -t 不打字与印刷UNIX时间戳,也正是不彰显时间。

p 是以上协议中的贰个。注意,tcpdump并不能不辱职分那几个协议的全体解析工作。

  -tt 打字与印刷原始的、未格式化过的小时。

expr relop expr

  -v 详细的出口,也就比平时的多了个TTL和服务类型。

若关系式如下:relop是 >, <, >=, <=, =, !=
中的多个,并且expr是四个由正整常数(用专业C语言的语法表示),标准二进制运算符[
+, -, *, /, &, |
],运算符的长度,和点名数量包存取,则值为true。要存取数据包内的数目,能够行使以下的语法:

  [expression]的用法:

proto [ expr : size ]

  expression是tcpdump最为有效的高档用法,可以利用它来协作一些特殊的包。下边介绍一下expression的用法,首尽管什么写出符合须要最为严峻expression。就算tcpdump中从未expression,那么tcpdump会把网卡上的装有数据包输出,不然会将被expression匹配的包输出。

Proto 是 ether, fddi, tr, ip, arp, rarp,
tcp, udp, icmp
 or ip6中的3个,它为索引操作指明了协议层。注意,tcp,udp和任何较高层的合计项目只能使用于IPv4,而无法用来IPv6(这么些标题只怕在明日能取得缓解)。被钦命的协议层的字节偏移量由expr给出。Size是可选的,它指明了数据域中,大家所感兴趣的字节数。它能够是1,2,或4,暗中认可为1。运算符的长短,由主要字len交由,指明了数据包的长短。

  expression
由三个或五个[primitives]组成,而[primitives]由2个或五个[qualitifer]加贰个id(name)或数字组成,它们的布局如用正则表达式则可代表为:

例如,`ether[0] & 1 !=
0
‘会捕捉全数的多播数据流。表明式`ip[0] & 0xf !=
5
‘能捕捉全部带可选域的IP数据包。表明式`ip[6:2] & 0x1fff =
0
‘仅捕捉未分段的数据报和段偏移量是0的数据报。那个检查隐含在tcpudp的下标操作中。例如,tcp[0]一般性指第①个字节的TCP首部,而不是指第二个字节的分支。

  expression = ([qualitifer]+(id|number))+

稍加偏移量和域值可以以名字来表示,而不是数值。以下协议首部域的偏移量是合情合理的:icmptype (ICMP 类型域), icmpcode (ICMP 代码域), and tcpflags (TCP 标志域)。

  依次看来,expression是三个错综复杂的条件表明式,在这之中[qualitifer]+(id|number)就是叁个相比基本标准,qualitifer就发布一些的名目(项,变量),id或number则代表几个值(或常量)。

ICMP 类型域有以下那些: icmp-echoreplyicmp-unreachicmp-sourcequenchicmp-redirecticmp-echoicmp-routeradverticmp-routersoliciticmp-timxceedicmp-paramprobicmp-tstampicmp-tstampreply,icmp-ireqicmp-ireqreplyicmp-maskreqicmp-maskreply.

  qualitifer共有三种,分别是:

TCP 标志域有以下那些: tcp-fintcp-syntcp-rsttcp-pushtcp-pushtcp-acktcp-urg.

  type 代表id name或number涉及到的项目,那么些词有host, nest, port
,portrange等等。

原语能够用以下内容组合:

  例子:

用圆括号括起来的原语和操作符
(圆括号在Shell中是特殊符号,所以必供给转义)。

  host foo 此为四个归纳的primitive,host为qualitifer, foo为id name

取反操作 (`!‘ 或 `not‘).

  net 128.3 net为qualitifer, 128.3为number

再而三操作 (`&&‘ 或 `and‘).

  port 20

选拔操作 (`||‘ 或 `or‘).

  等等

取反操作的优先级最高。
连接操作和甄选操作有一致的优先级,并且它们的整合方向为从左向右。
注意:做连接的时候是亟需出示的 and 操作符的,而不是把要连接的事物写在协同。

  每一种privimtive必须有三个type词,借使表明式中没有,则私下认可是host.

假若给出贰个标识符,却尚无重庆大学字,那么就会假定用近来采纳的显要字。
例如:

  dir 内定数量传输的大势,那么些词有src, dst, src or dst, src and dst

not host vs and ace

  例子:

等价于

  dst net 128.3 ;此为叁个相持复杂的primitive,结构为dir type
number,表示指标互连网为128.3的尺度。

not host vs and host ace

  src or dst port ftp-data 此为比上叁个相对简的协会,src or
dst表示源或目的,ftp-data为id,表示ftp协议中多少传输端口,故全部表示源或指标端口ftp-data的多少包即匹配。

无法和下部的歪曲

  借使在三个primitive中并未dir词,此暗中同意为src or dst. 如 host
foo则意味着源或指标主机为foo的多寡包都匹配。

not ( host vs or ace )

  proto 此种词是用来合营某种特定商业事务的,那几个词回顾:ether, fddi, tr,
wlan, ip, ip6, arp, rarp,
decnet,tcp和udp。其实那么些词平常用来合营某种协议,是使用率最高的一组词了。

表达式参数即可以看成单个参数,也能够看作三个参数字传送递给tcpdump,后者尤其方便人民群众一些。一般的,若是表明式包罗三个Shell的元字符,那么用一个参数字传送递比较易于,最棒把它括起来,四个参数在传递前,用空格连接起来。

  上边二种qualitifer和id
name或number组成2个primitive平常是下边那种格局的:

  proto dir type id(number) ,即primitive=proto dir type (id | number)

  如:

  tcp src port 80

  ip dst host 192.168.1.1

  如若出现type的话,一定会出现id或num

  假如出现dir,那么也会合世type,假如不出新,暗许为host

  而proto可独自出现,如 tcpdump ‘tcp’

  通过地点介绍的三种qualitifer,大家火速就足以写出三个primitive,下边作者就只用1个primitive作为expression匹配数据包。

  (1)匹配ether包

  匹配特定mac地址的数据包。

  tcpdump ‘ether src 00:19:21:1D:75:E6’

  匹配源mac为00:19:21:1D:75:E6的数目包里面src可改为dst, src or
dst来匹改变规则

  匹配ether广播包。ether广播包的特征是mac全1.故如下即可匹配:

  tcpdump ‘ether dst ff:ff:ff:ff:ff:ff’

  [email protected]:~$
sudo tcpdump -c 1 ‘ether dst ff:ff:ff:ff:ff:ff’

  tcpdump: verbose output suppressed, use -v or -vv for full protocol
decode

  listening on eth0, link-type EN10MB (Ethernet), capture size 96
bytes

  10:47:57.784099 arp who-has 192.168.240.77 tell 192.168.240.189

  在此,只匹配1个包就退出了。首个是arp请求包,arp请求包的是利用广播的法门发送的,被匹配那是当之无愧的。

  匹配ether组播包,ether的组播包的风味是mac的最高位为1,别的位用来表示组播组编号,假若您想匹配其的多播组,知道它的组MAC地址即可。如

  tcpdump ‘ether dst <Mac_Adrress>’
Mac_Address表示地址,填上适度的即可。要是想匹配全数的ether多播数据包,那么暂且请放下,上边会三番五次为你讲解更高级的利用。

  (2)匹配arp包

  arp包用于IP到Mac址转换的一种协议,包罗arp请求和arp答应三种报文,arp请求报文是ether广播格局发送出去的,也即
arp请求报文的mac地址是全1,因而用ether dst
FF;FF;FF;FF;FF;FF能够匹配arp请求报文,但不能够匹配答应报文。因而要匹配arp的通讯进度,则只有利用arp来钦命协议。

  tcpdump ‘arp’ 即可匹配互连网上arp报文。

  [email protected]:~$
arping -c 4 192.168.240.1>/dev/null& sudo tcpdump -p ‘arp’

  [1] 9293

  WARNING: interface is ignored: Operation not permitted

  tcpdump: verbose output suppressed, use -v or -vv for full protocol
decode

  listening on eth0, link-type EN10MB (Ethernet), capture size 96
bytes

  11:09:25.042479 arp who-has 192.168.240.1 (00:03:d2:20:04:28 (oui
Unknown)) tell ylin.local

  11:09:25.042702 arp reply 192.168.240.1 is-at 00:03:d2:20:04:28 (oui
Unknown)

  11:09:26.050452 arp who-has 192.168.240.1 (00:03:d2:20:04:28 (oui
Unknown)) tell ylin.local

  11:09:26.050765 arp reply 192.168.240.1 is-at 00:03:d2:20:04:28 (oui
Unknown)

  11:09:27.058459 arp who-has 192.168.240.1 (00:03:d2:20:04:28 (oui
Unknown)) tell ylin.local

  11:09:27.058701 arp reply 192.168.240.1 is-at 00:03:d2:20:04:28 (oui
Unknown)

  11:09:33.646514 arp who-has ylin.local tell 192.168.240.1

  11:09:33.646532 arp reply ylin.local is-at 00:19:21:1d:75:e6 (oui
Unknown)

  本例中行使arping -c 4
192.168.240.1发生arp请求和吸收答应报文,而tcpdump -p
‘arp’匹配出来了。此处-p选项是使互联网工作张晓芸规方式(非混杂方式),那样是有利查看匹配结果。

  (3)匹配IP包

  家喻户晓,IP协议是TCP/IP协议中最根本的情商之一,便是因为它才能把Internet互联起来,它可谓功不可没,上面分析匹配IP包的表明式。

  对IP举行匹配

  tcpdump ‘ip src 192.168.240.69’

  [email protected]:~$
sudo tcpdump -c 3 ‘ip src 192.168.240.69’

  tcpdump: verbose output suppressed, use -v or -vv for full protocol
decode

  listening on eth0, link-type EN10MB (Ethernet), capture size 96
bytes

  11:20:00.973605 IP ylin.local.51486 >
walnut.crossbeamsys.com.ssh: S 2706301341:2706301341(0) win 5840 <mss
1460,sackOK,timestamp 1687608 0,nop,wscale 5>

  11:20:00.974328 IP ylin.local.32849 > 192.168.200.150.domain:
5858+ PTR? 20.200.168.192.in-addr.arpa. (45)

  11:20:01.243490 IP ylin.local.51486 >
walnut.crossbeamsys.com.ssh: . ack 2762262674 win 183
<nop,nop,timestamp 1687676 4155416897>

  IP广播组播数据包匹配:只需指明广播或组播地址即可

  tcpdump ‘ip dst 240.168.240.255’

  [email protected]:~$
sudo tcpdump ‘ip dst 192.168.240.255’

  tcpdump: verbose output suppressed, use -v or -vv for full protocol
decode

  listening on eth0, link-type EN10MB (Ethernet), capture size 96
bytes

  11:25:29.690658 IP dd.local > 192.168.240.255: ICMP echo request,
id 10022, seq 1, length 64

  11:25:30.694989 IP dd.local > 192.168.240.255: ICMP echo request,
id 10022, seq 2, length 64

  11:25:31.697954 IP dd.local > 192.168.240.255: ICMP echo request,
id 10022, seq 3, length 64

  11:25:32.697970 IP dd.local > 192.168.240.255: ICMP echo request,
id 10022, seq 4, length 64

  11:25:33.697970 IP dd.local > 192.168.240.255: ICMP echo request,
id 10022, seq 5, length 64

  11:25:34.697982 IP dd.local > 192.168.240.255: ICMP echo request,
id 10022, seq 6, length 64

  此处匹配的是ICMP的广播包,要发出此包,只供给同多少个局域网的另一台主机械运输营ping
-b
192.168.240.255即可,当然还可产生组播包,由于尚未符合的软件举行效仿发生,在此不举例子。

  (4)匹配TCP数据包

  TCP同样是TCP/IP协议栈里面最佳根本的协议之一,它提供了端到端的可相信数据流,同时广大应用层协议都是把TCP作为底层的通讯协议,因为TCP的合作是那1个首要的。

  如若想匹配HTTP的通讯数据,那只需点名匹配端口为80的基准即可

  tcpdump ‘tcp dst port 80’

  [email protected]:~$
wget 2>1 1 >/dev/null & sudo tcpdump -c 5
‘tcp port 80’

  [1] 10762

  tcpdump: verbose output suppressed, use -v or -vv for full protocol
decode

  listening on eth0, link-type EN10MB (Ethernet), capture size 96
bytes

  12:02:47.549056 IP xd-22-43-a8.bta.net.cn.www > ylin.local.47945:
S 1202130469:1202130469(0) ack 1132882351 win 2896 <mss
1460,sackOK,timestamp 3497190920 2329221,nop,wscale 2>

  12:02:47.549085 IP ylin.local.47945 > xd-22-43-a8.bta.net.cn.www:
. ack 1 win 183 <nop,nop,timestamp 2329258 3497190920>

  12:02:47.549226 IP ylin.local.47945 > xd-22-43-a8.bta.net.cn.www:
P 1:102(101) ack 1 win 183 <nop,nop,timestamp 2329258 3497190920>

  12:02:47.688978 IP xd-22-43-a8.bta.net.cn.www > ylin.local.47945:
. ack 102 win 698 <nop,nop,timestamp 3497190956 2329258>

  12:02:47.693897 IP xd-22-43-a8.bta.net.cn.www > ylin.local.47945:
. 1:1409(1408) ack 102 win 724 <nop,nop,timestamp 3497190957
2329258>

  (5)匹配udp数据包

  udp是一种无连接的非可信的用户数据报,由此udp的重要特色同样是端口,用如下方法能够匹配某一端口

  tcpdump ‘upd port 53’ 查看DNS的数据包

  [email protected]:~$
ping -c 1 www.baidu.com > /dev/null& sudo tcpdump -p udp port 53

  [1] 11424

  tcpdump: verbose output suppressed, use -v or -vv for full protocol
decode

  listening on eth0, link-type EN10MB (Ethernet), capture size 96
bytes

  12:28:09.221950 IP ylin.local.32853 > 192.168.200.150.domain:
63228+ PTR? 43.22.108.202.in-addr.arpa. (44)

  12:28:09.222607 IP ylin.local.32854 > 192.168.200.150.domain:
5114+ PTR? 150.200.168.192.in-addr.arpa. (46)

  12:28:09.487017 IP 192.168.200.150.domain > ylin.local.32853:
63228 1/0/0 (80)

  12:28:09.487232 IP 192.168.200.150.domain > ylin.local.32854:
5114 NXDomain* 0/1/0 (140)

  12:28:14.488054 IP ylin.local.32854 > 192.168.200.150.domain:
60693+ PTR? 69.240.168.192.in-addr.arpa. (45)

  12:28:14.755072 IP 192.168.200.150.domain > ylin.local.32854:
60693 NXDomain 0/1/0 (122)

  使用ping www.baidu.com指标是产生DNS请求和承诺,53是DNS的端口号。

  其余还有许多qualitifer是还未曾提及的,上边是其他官方的primitive,在tcpdump中是能够直接选取的。

  gateway host

  匹配使用host作为网关的数据包,即数据报中mac地址(源或指标)为host,但IP报的源和指标地址不是host的数据包。

  dst net net

  src net net

  net net

  net net mask netmask

  net net/len

  匹配IPv4/v6地址为net互联网的数据报。

  个中net能够为192.168.0.0或192.168那三种样式。如net 192.168 或net
192.168.0.0

  net net mask netmask仅对IPv4数据包有效,如net 192.168.0.0 mask
255.255.0.0

  net net/len同样只对IPv4数据包有效,如net 192.168.0.0/16

  dst portrange port1-port2

  src portrange port1-port2

  portrange port1-port2

  匹配端口在port1-port2限量内的ip/tcp,ip/upd,ip6/tcp和ip6/udp数据包。dst,
src分别指明源或指标。没有则代表src or dst

  less length 匹配长度少于等于length的报文。

  greater length 匹配长度大于等于length的报文。

  ip protochain protocol 匹配ip报文中protocol字段值为protocol的报文

  ip6 protochain protocol 匹配ipv6报文中protocol字段值为protocol的报文

  如tcpdump ‘ip protochain 6 匹配ipv4互联网中的TCP报文,与tcpdump ‘ip &&
tcp’用法一样,那里的&&连接八个primitive。6是TCP协议在IP报文中的编号。

  ether broadcast

澳门金沙国际,  匹配以太网广播报文

  ether multicast

  匹配以太网多播报文

  ip broadcast

  匹配IPv4的广播报文。也即IP地址中主机号为全0或全1的IPv4报文。

  ip multicast

  匹配IPv4多播报文,也便是IP地址为多播地址的报文。

  ip6 multicast

  匹配IPv6多播报文,即IP地址为多播地址的报文。

  vlan vlan_id

  匹配为vlan报文 ,且vlan号为vlan_id的报文

  到些为此,大家直接在介绍primitive是如何利用的,也即expression唯有一个primitive。通过学会写好每种primtive,大家就很简单把三个primitive组成一个expression,方法很简单,通过逻辑运算符连接起来就能够了,逻辑运算符有以下多少个:

  “&&” 或”and”

  “||” 或“or”

  “!” 或“not”

  并且可通过()进行复杂的连日运算。

  如tcpdump ‘ip && tcp’

  tcpdump ‘ host 192.168.240.3 &&( tcp port 80 || tcp port 443)’

  通过上边的各样primitive,大家得以写出很丰硕的尺度,如ip, tcp,
udp,vlan等等。如IP,能够按址址进行匹,tcp/udp能够按端口匹配。不过,假如本人想匹配更细的准绳吧?如tcp中只含syn标志,fin标志的报文呢?上面的primitive或许无能为力了。不用怕,tcpdump为你提供最终三个效应最强劲的primitive,记住是primitive,而不是expression。你能够用三个这些的primitive组成更扑朔迷离的
expression.

  最后2个primitive格局为 expr relop expr

  若把那个情势记为A,那么你可这么写tcpdump ‘A1 && A2 && ip src
192.168.200.1’,等等。

  上面我们就来分析A这几个情势,看看那是怎么样强大,固然您以为很乱的话,提议您先用用地点的学识来实操三遍,要不然就会很乱的,因为expression太复杂了。

  形式:expr relop expr

  relop表示关系操作符,可以为>, < ,>=,<=, =, !=之一,

  expr是3个算术表明式,由整数组成和二元运算符(+,-,*,/,&,|,
<<,
>>),长度操作,报文数据访问子。同时持有的平头皆以无符号的,即0x柒仟0000
和 0xffffffff > 0。为了访问报文中的数据,可采用如下方式:

  proto [ expr : size ]

  proto表示该问的报文,expr的结果表示该报文的舞狮,size为可选的,表示从expr偏移量起的szie个字节,整个表明式为proto报文
中,expr起的szie字节的内容(无符号整数)

  下边是expr relop expr那种格局primitive的例子:

  ’ether[0] & 1 !=0′
ether报文中第0个bit为1,即以太网广播或组播的primtive。

  通过那种办法,大家可以对报文的其它一个字节进行匹配了,因而它的效应是那2个有力的。

  ‘ip[0] = 4’ ip报文中的第四个字节为version,即匹配IPv4的报文,

  假若大家想匹配3个syn报文,能够利用:’tcp[13] =
2’,因为tcp的标志位为TCP报文的第壹二个字节,而syn在这一个字节的低一个人,故匹配唯有syn标志的报文,上述标准是可满须求的,并且相比较严酷。

  假如想匹配ping命令的伸手报文,能够运用’icmp[0]=8’,因为icmp报文的第0字符表示项目,当类型值为8时意味着为回显得请求。

  对于TCP和ICMP中常用的字节,如TCP中的标志位,ICMP中的类型,那一个些偏移量有时会遗忘。可是tcpdump为您提供更方便的用法,你不要记位这个数字,用字符就足以取代了.

  对于ICMP报文,类型字节能够icmptype来代表它的偏称量,下面的primitive可改为’icmp[icmptype]
=8’,尽管8也记不住怎么做?tcpdump还为该字节的值也提供了字符表示,如’icmp[icmptype]
= icmp-echo’。

  下边是tcpdump提供的字符偏移量:

  icmptype:表示icmp报文中类弄字节的偏移量

  icmpcode:表示icmp报文中编码字节的偏移量

  tcpflags:表示TCP报文中标明位字节的偏移量

  其它,还提供了成都百货上千值来对号入座上边的偏移字节:

  ICMP中项目字节的值能够是:

  icmp-echoreply, icmp-unreach, icmp-sourcequench, icmp-redi‐rect,
icmp-echo, icmp-routeradvert, icmp-routersolicit,

  icmp-timxceed, icmp-paramprob, icmp-tstamp, icmp-tstam‐preply,
icmp-ireq, icmp-ireqreply, icmp-maskreq, icmp-maskreply.

  TCP中标明位字节的值能够是:

  tcp-fin, tcp-syn, tcp-rst, tcp-push, tcp-ack, tcp-urg.

  通过上边的字符表示,大家得以写出下边包车型大巴primitive

  ’tcp[tcpflags] = tcp-syn’ 匹配惟有syn标志设置为1的 tcp报文

  ’tcp[tcpflags] & (tcp-syn |tcp-ack |tcp-fin) !=0′
匹配含有syn,或ack或fin标志位的TCP报文

  对于IP报文,没有提供字符扶助,要是想匹配更细的规范,直接动用数字指字偏移量就能够了,不过要对IP报文有更深刻的刺探才方可。

  学会写primitive后,expression便是小菜一碟了,由二个或八个primitive组成,并且逻辑连接符组成即可:

  tcpdump ‘host 192.168.240.91 && icmp[icmptype] = icmp-echo’

  tcpdump ‘host 192.168.1.100 && vrrp’

  tcpdump ‘ether src 00:00:00:00:00:02 && ether[0] & 1 !=0’

  让您随心所欲地使用tcpdump,将绝不再从繁杂的输出中去挑报文了!

  如此,我们能够写出更复杂的表明式来合作报文,如IP或TCP中的报文id,IP是中的分段标志,ICMP中项目和代码等。

 

 

 

 

 

简介

用不难的话来定义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 host 210.27.48.1

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

tcpdump udp port 123 

 

蹲点钦点网络的数据包

打字与印刷本地主机与Berkeley网络上的主机之间的富有通讯数据包(nt: ucb-ether,
此处可理解为’伯克利网络’的网络地址,此表明式最原始的意思可发挥为:
打字与印刷互连网地址为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版本只需考虑ipv五头中的’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 : 只抓取九十六个数据包

(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.), 那么些算法能够在

陆风X8FC-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:如此看来那应该不是2个奇特的减少数据包).

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包的源以太地址是SportageTSG, 指标地方是全以太网段,
type域的值为16进制0806(表示ETHE大切诺基_A汉兰达P(nt:arp包的种类标识)),

包的总长度为64字节.

TCP 数据包

(注意:以下将会假定你对 ENCOREFC-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, 君越(HighlanderST),

W(ECN CWT(nt | rep:未知, 需补充))或者 E(ECN-Echo(nt |
rep:未知, 需补充))组成,

单独3个’.’表示一贯不flags标识.
数据段顺序号(Data-seqno)描述了此包中数量所对应连串号空间中的2个职位(nt:整个数据被隔离,

每段有2个顺序号, 全部的顺序号构成2个行列号空间)(可参看以下例子). Ack
描述的是同多少个连接,同3个势头,下贰个本端应该吸收接纳的

(对方相应发送的)数据片段的相继号.
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标志. 在第⑩行,

csam 喊到, 她早就从rtsg中吸收了21之下的字节, 但不包罗21数码的字节.
这几个字节存放在csam的socket的收受缓冲中, 相应地,

csam的选用缓冲窗口大小会回落19字节(nt:能够从第6行和第七行win属性值的变化看出来).
csam在第8行那个包中也向rtsg发送了多个

字节. 在第捌行和第七行, csam 继续向rtsg
分别发送了三个只包涵1个字节的数据包, 并且那些数额包带PUSH标志.

借使所抓到的tcp包(nt:即那里的snapshot)太小了,以至tcpdump相当小概完全获得其头顶数据,
那时, tcpdump会尽量解析那几个不完全的头,

并把剩下无法分析的片段显得为'[|tcp]’.
倘诺尾部含有虚假的性质新闻(比如其尺寸属性其实比尾部实际尺寸长或短),
tcpdump会为该尾部

显示'[bad opt]’. 假若尾部的尺寸告诉大家一些选项(nt | rt:从下文来看,
指tcp包的头顶中针对ip包的一对增选, 回头再翻)会在此包中,

而实在的IP(数据包的尺寸又不够容纳这几个接纳, tcpdump会呈现'[bad hdr
length]’.

 

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

在TCP的头顶中, 有8比特(bit)用作决定位区域, 其取值为:

CWR | ECE | URG | ACK | PSH | RST | SYN | FIN

(nt | rt:从表明情势上可预计:那九个位是用或的艺术来构成的, 可回头再翻)

现假诺大家想要监察和控制建立多个TCP连接一切进程中所产生的数额包.
可回想如下:TCP使用三遍握手球组织议来树立多少个新的连年; 其与此一次握手

总是各样对应,并含有相应TCP控制标志的数码包如下:

1) 连接发起方(nt:Caller)发送SYN标志的数据包

2) 接收方(nt:Recipient)用饱含SYN和ACK标志的数码包举办回应

3) 发起方收到接收方回应后再发送带有ACK标志的多寡包举办回应

 

0 15 31


| 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尾部,在不含有选项数据的情形下一般占用1七个字节(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号, 而UWranglerG位在5号.

 

提示一下和好, 我们只是要博得包括SYN标志的数码包.
让大家看看在1个包的西宁中, 尽管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的字节是一个捌位的无符号字符型,并且依据互连网字节号排序(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被置位,
那么底部中的第贰二个字节的值为2(nt: 依据网络序, 即大头格局, 最重要的字节

在日前(在前边,即该字节实际内部存储器地址相比小,
最重点的字节,指数学表示中数的要职, 如356中的3) ).

公布为tcpdump能明白的关系式正是:

tcp[13] 2

为此大家得以把此关系式当作tcpdump的过滤条件,
目的正是监察和控制只含有SYN标志的数量包:

tcpdump -i xl0 tcp[13] 2 (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号字节的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的伍遍方, 或然那样更

驾驭些, 即把本来表明中的指数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地址).

其一数目包承载的用户数据为8五个字节.

部分UDP服务可从数据包的源或目标端口来识别,也可从所出示的更高层协商音信来识别.
比如, Domain Name service requests(DNS 请求,

在HavalFC-103四成35中), 和Sun 奥德赛PC calls to
NFS(对NFS服务器所倡导的长距离调用(nt: 即Sun
EvoquePC),在奇骏FC-1050中有对长途调用的叙说).

UDP 名称服务请求

(注意:以下的讲述若是你对Domain Service protoco(nt:在HavalFC-103中保有描述),
不然你会发现以下描述正是天书(nt:希腊共和国(The Republic of 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)

主机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条附加的记录. 第3个应答记录(nt: 二个应答记录中的第③个)类型为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值.

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
会发生12分详细的新闻,

诸如对单纯的1个SMB数据包, 将发生一显示屏或愈来愈多的音信, 所以此选项,
确有亟待才使用.

至于SMB数据包格式的音讯, 以及种种域的意义可以参见www.cifs.org
或然samba.org 镜像站点的pub/samba/specs/ 目录. linux 上的SMB 补丁

(nt | rt: patch)由 Andrew Tridgell
([email protected])提供.

 

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,2十分四.73165(nt: 可按实际运行条件, 解析如下, fd
代表描述的为文件句柄, 21,24 表示此句柄所对应设

备的主/从设备号对,
10表示此句柄所对应的i节点编号(nt:各样文件都会在操作系统中对应二个i节点,
限于unix类系统中),

73165是2个号码(nt: 可分晓为标识此请求的二个即兴数, 具体意思需补充)).

第三行中, wrl 做了’ok’的回应, 并且在results
字段中回到了sushi想要读的标记连接的实在目录(nt:
即sushi要求读的标志连接其实是3个索引).

其三行注脚: 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: 逍客PC operation). 从而,
tcpdump 会跟踪方今接受的一密密麻麻请求包, 再通过其

交换序号(nt: transaction ID)与相应请求包相匹配. 那也许爆发二个题材,
假若回应包来得太迟, 超出tcpdump 对相应请求包的跟踪范围,

该回应包将无法被分析.

 

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 发送了一个本田CR-VX数据包.

那是四个对此文本服务的央浼数据包(nt: CRUISERX data packet, 发送数据包 ,
可领会为发送包过去, 从而请求对方的服务), 那也是3个奥德赛PC

调用的启幕(nt: 途乐PC, remote procedure call). 此奥迪Q3PC 请求pike
执行rename(nt: 重命名) 操作, 并钦点了相关的参数:

原目录描述符为536876964/1/1, 原来的文章书名为 ‘.newsrc.new’,
新目录描述符为536876964/1/1, 新文件名为 ‘.newsrc’.

长机pike 对此rename操作的奥迪Q5PC请求作了回答(回应表示rename操作成功,
因为回应的是富含数据内容的包而不是相当包).

诚如的话, 全数的’AFS PRADOPC’请求被展现时, 会被冠以贰个名字(nt: 即decode,
解码), 这一个名字往往正是大切诺基PC请求的操作名.

而且, 那几个CRUISERPC请求的有的参数在呈现时, 也会被冠以1个名字(nt | rt:
即decode, 解码, 一般的话也是取名也很间接, 比如,

贰个interesting 参数, 展现的时候就会直接是’interesting’, 含义拗口,
需再翻).

这种呈现格式的安排性初衷为’一看就懂’, 但对于不熟悉AFS 和 昂CoraX
工作原理的人或者不是很

有用(nt: 照旧绝不管, 书面吓吓你的, 往下看就行).

设若 -v(详细)标志被另行给出(nt: 如-vv), tcpdump 会打字与印刷出肯定包(nt:
可通晓为, 与回复包有分其余包)以及附加底部消息

(nt: 可领会为, 全部包, 而不仅是确认包的附加底部音讯), 比如, GL450X call
ID(请求包中’请求调用’的ID),

call number(‘请求调用’的号码), sequence number(nt: 包顺序号),

serial number(nt | rt: 可通晓为与包中数据相关的另1个顺信号,
具体意思需补充), 请求包的标识. (nt: 接下来一段为再度描述,

从而略去了), 其它确认包中的MTU协商音讯也会被打字与印刷出来(nt:
确认包为相对于请求包的认同包, Maximum 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 回应包并不显得标识中华VPC 属于何种远程调用. 从而, 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自个儿没有端口的概念,
那一点未规定, 需补充).

第贰行与第1行类似, 只是源的上上下下地点可用’office’实行标识.

其三行代表:
jssmag网络上的149节点通过235向icsd-net网络上的全体节点的2端口(NBP端口)发送了数据包.(须求专注的是,

在AppleTalk 互连网中一经地方中尚无节点, 则意味着广播地址,
从而节点标识和互联网标识最佳在/etc/atalk.names有所差别.

nt: 不然二个标识x.port
不能明确x是指2个互联网上拥有主机的port口如故钦赐主机x的port口).

tcpdump 可分析NBP (名称绑定协议) and 乙酰胆碱酸 (AppleTalk传输协议)数据包,
对于任何应用层的商业事务, 只会打字与印刷出相应协议名字(

若果此协议没有登记1个通用名字, 只会打印其协议号)以及数据包的大小.

 

NBP 数据包会根据如下格式显示:

icsd-net.112.220 > jssmag.2: nbp-lkup 190:
“=:[email protected]*”

jssmag.209.2 > icsd-net.112.220: nbp-reply 190:
“RM1140:[email protected]*”
250

techpit.2 > icsd-net.112.220: nbp-reply 190:
“techpit:[email protected]*”
186

先是行代表: 互连网icsd-net 中的节点112 通过220端口向网络jssmag
中兼有节点的端口2发送了对’LaserWriter’的名称查询请求(nt:

那里名称可分晓为1个能源的称号, 比如打字与印刷机). 此询问请求的系列号为190.

其次行代表: 网络jssmag 中的节点209
通过2端口向icsd-net.112节点的端口220进展了应对: 作者有’LaserWriter’财富,
其财富名称

为’陆风X8M1140′, 并且在端口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

回应7个数据包(那九个数据包的顺序号为0-7(nt: 顺序号与会话编号分歧,
后者为三次完整传输的编号,

前者为该传输中种种数据包的编号. transaction, 会话, 常常也被喻为传输)).
行尾的16进制数字代表

该请求包中’userdata’域的值(nt: 从下文来看,
那并没有把富有用户数量都打字与印刷出来 ).

Helios 回应了7个512字节的数目包. 跟在对话编号(nt:
12266)后的数字代表该数额包在该会话中的顺序号.

括号中的数字代表该数额包中数据的尺寸, 那不包蕴atp 的底部.
在顺序号为7数据包(第捌行)外带了2个’*’号,

意味着该数据包的EOM 标志被安装了.(nt: EOM, End Of Media, 可领会为,
表示2回对话的多寡回应落成).

接下去的第玖行代表, Jssmag.209 又向helios 提议了请求:
顺序号为3以及5的数额包请重新传送. Helios 收到这一个

请求后重新发送了那些三个数据包, jssmag.209 再一次接到那八个数据包之后,
主动甘休(release)了此会话.

在最终一行, jssmag.209 向helios 发送了开班下三回对话的呼吁包.
请求包中的’*’表示该包的XO 标志没有被设置.

(nt: XO, exactly once, 可清楚为在该会话中,
数据包在接受者只被准确地拍卖一遍, 固然对方再度传送了该数据包,

接收方也只会处理三遍, 那必要动用尤其企划的多寡包接收和处理机制).

 

IP 数据包破碎

(nt: 指把二个IP数据包分成八个IP数据包)

零星IP数据包(nt:
即三个大的IP数据包破碎后转移的小IP数据包)有如下两种展现格式.

(frag
id:[email protected]+)

(frag
id:[email protected])

(第1种格式表示, 此碎片之后还有后续碎片. 第三种格式表示,
此碎片为结尾3个碎片.)

id 表示破碎编号(nt: 从下文来看, 会为每种要破碎的大IP包分配一个破损编号,
以便区分每一种小碎片是或不是由同样数据包破碎而来).

size 表示此碎片的大小 , 不分包碎片尾部数据.
offset表示此碎片所含数据在原来整个IP包中的偏移((nt: 从下文来看,

四个IP数据包是作为1个完整被破碎的, 包罗头和数量, 而不只是数码被划分).

种种碎片都会使tcpdump发生相应的出口打字与印刷.
第三个七零八落包涵了高层协商的头数据(nt:从下文来看,
被破碎IP数据包中相应tcp头以及

IP头都坐落了第2个片纸只字中 ), 从而tcpdump会针对第一个鳞伤遍体突显那一个音信,
并接着显示此碎片本人的新闻. 其后的一对散装并不含有

高层磋商头新闻, 从而只会在突显源和目标之后显得碎片自身的音信.
以下有1个例证: 那是一个从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:[email protected]+)

arizona > rtsg: (frag
595a:[email protected])

rtsg.1170 > arizona.ftp-data: . ack 1536 win 2560

有几点值得注意:

率先, 第③行的打字与印刷中, 地址后边没有端口号.

那是因为TCP协议消息都放到了第13个七零八落中, 当展现第2个东鳞西爪时,
大家不可能清楚此碎片所对应TCP包的相继号.

其次, 从第①行的音讯中, 能够发现arizona须要向rtsg发送308字节的用户数据,
而事实是, 相应IP包经破碎后会总共发生512字节

数码(第二个四分五裂包涵308字节的数额, 第1个一鳞半爪包括206个字节的多少,
那超过了308字节). 就算您在探寻数据包的顺序号空间中的

有些架空(nt: hole,空洞, 指数据包之间的顺序号没有前后衔接上),
512以此数目就够用使你迷茫一阵(nt: 其实只要关怀308就行,

毋庸关切破碎后的数目总量).

五个数据包(nt | rt: 指IP数据包)倘使含有非IP破碎标志,
则显示时会在最终显示'(DF)’.(nt: 意味着此IP包没有被破碎过).

 

时间戳

tcpdump的装有出口打字与印刷行中都会默许包涵时间戳信息.

时间戳消息的显得格式如下

hh:mm:ss.frac (nt: 小时:分钟:秒.(nt: frac未知, 需补充))

此刻间戳的精度与基本时间精度一致, 反映的是水源第二遍看到相应数据包的年月(nt:
saw, 即可对该多少包举办操作). 

而数据包从情理线路传递到基本的时日,
以及水源开销在此包上的暂停处理时间都没有算进来.

 

一声令下使用

tcpdump接纳命令行情势,它的一声令下格式为:

 

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
[email protected]
algo:secret,…  ]

           [ -y datalinktype ] [ -Z user ]

           [ expression ]

 

tcpdump的简要选拔介绍

 

-A  以ASCII码格局彰显每三个数据包(不会来得数据包中链路层底部消息).
在抓取包涵网页数据的数据包时, 可惠及查看数据(nt: 即Handy for capturing
web pages).

 

-c  count

    tcpdump将在经受到count个数据包后退出.

 

-C  file-size (nt: 此选项用于合营-w file 选项使用)

    该采用使得tcpdump 在把原来数据包直接保存到文件中从前,
检查此文件大小是还是不是超越file-size. 纵然超越了,
将关闭此文件,另创1个文书连续用于原始数据包的记录. 新创设的文书名与-w
选项钦赐的文本名相同,
但文件名后多了三个数字.该数字会从1开首趁机新成立文件的充实而增添.
file-size的单位是百万字节(nt: 这里指1,000,000个字节,并非1,048,5柒二十个字节,
后者是以1024字节为1k, 1024k字节为1M乘除所得, 即1M=1024 * 1024 =
1,048,576)

 

-d  以不难阅读的花样,在规范输出上打字与印刷出编排过的包匹配码,
随后tcpdump甘休.(nt | rt: human readable,
容易阅读的,平常是指以ascii码来打字与印刷一些音信. compiled, 编排过的.
packet-matching code, 包匹配码,含义未知, 需补充)

 

-dd 以C语言的款型打字与印刷出包匹配码.

 

-ddd
以十进制数的花样打字与印刷出包匹配码(会在包匹配码在此以前有3个附加的’count’前缀).

 

-D  打字与印刷系统中享有tcpdump能够在其上海展览中心开抓包的互连网接口.
每3个接口会打字与印刷出数字编号, 相应的接口名字, 以及大概的三个互连网接口描述.
在那之中网络接口名字和数字编号能够用在tcpdump 的-i flag 选项(nt:
把名字或数字代表flag), 来钦命要在其上抓包的互连网接口.

 

    此选项在不接济接口列表命令的系统上很有用(nt: 比如, Windows 系统,
或短少 ifconfig -a 的UNIX系统); 接口的数字编号在windows 两千或现在的系统中很有用, 因为这几个种类上的接口名字比较复杂, 而不易使用.

 

    要是tcpdump编写翻译时所正视的libpcap库太老,-D 选项不会被帮助,
因为内部缺少 pcap_findalldevs()函数.

 

-e  每行的打字与印刷输出少校包涵数据包的数据链路层底部新闻

 

-E
 [email protected]
algo:secret,…

 

   
可通过[email protected]
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 的定义遵从景逸SUVFC2406, 而不是 卡宴FC1827. 并且,
此选项只是用来调节的, 不推荐以真实密钥(secret)来选择该选项,
因为这么不安全: 在命令行中输入的secret 能够被其余人通过ps 等一声令下查看到.

 

    除了上述的语法格式(nt:
指[email protected]
algo:secret), 还是能够在后面添加一个语法输入文件名字供tcpdump
使用(nt:即把[email protected]
algo:secret,… 中…换到2个语法文件名).
此文件在收受到第三个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选项(在途达FC
2385有连带描述), 则为其摘要的验证钦点三个公共的密钥secret.

 

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

 

-N  不打字与印刷出host 的域名部分. 比如, 假如设置了此选现, tcpdump
将会打字与印刷’nic’ 而不是 ‘nic.ddn.mil’.

 

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

 

-p  一般景色下, 把网络接口设置为非’混杂’形式. 但必须注意 ,
在格外情形下此互连网接口仍旧会以’混杂’情势来干活; 从而, ‘-p’ 的设与不设,
没办法作为以下选现的代名词:’ether host {local-hw-add}’ 或  ‘ether
broadcast'(nt: 前者表示只匹配以太网地址为host 的包,
后者表示格外以太网地址为广播地址的数据包).

 

-q  赶快(大概用’安静’更好?)打字与印刷输出. 即打字与印刷很少的磋商相关音讯,
从而输骑行都相比简短.

 

-PRADO  设定tcpdump 对 ESP/AH 数据包的解析依据 智跑FC1825而不是OdysseyFC1829(nt: AH,
认证头, ESP, 安全负载封装, 那两边会用在IP包的平安传输体制中).
假若此选项被设置, tcpdump 将不会打字与印刷出’禁止中继’域(nt: relay prevention
田野先生).
其它,由于ESP/AH规范中并未规定ESP/AH数据包必须有所协议版本号域,所以tcpdump不可能从收受的ESP/AH数据包中推导出协议版本号.

 

-r  file

    从文件file 中读取包数据. 假使file 字段为 ‘-‘ 符号, 则tcpdump
会从业内输入中读取包数据.

 

-S  打印TCP 数据包的顺序号时, 使用相对化的顺序号, 而不是对峙的相继号.(nt:
相对顺序号可见道为, 相对第①个TCP 包顺序号的差别,比如,
接受方收到第3个数据包的相对顺序号为232323,
对于新兴吸收接纳到的第三个,第③个数据包, tcpdump会打字与印刷其系列号为1,
2分头表示与第3个数据包的距离为1 和 2. 而一旦那时候-S 选项被设置,
对于新兴接到到的第①个, 第一个数据包会打字与印刷出其相对顺序号: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 奥迪o
Tool, 可用于在internet 上实行电

    视电话会议的应用层协议), 以及wb (distributed 惠特e 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 的取值未知,
需补充)

 

tcpdump条件表明式

  该表明式用于决定哪些数据包将被打印. 假如不给定条件表明式,
互连网上有所被抓获的包都会被打字与印刷,不然,
唯有满意条件表明式的数目包被打字与印刷.(nt: all packets, 可明白为,
全数被钦命接口捕获的数据包).

  表明式由二个或多少个’表明元’组成(nt: primitive, 表明元,
可了然为组合表明式的中心要素).
三个宣布元经常由一个或五个修饰符(qualifiers)后跟1个名字或数字代表的id组成(nt:
即, ‘qualifiers id’).有二种差异档次的修饰符:type, dir以及 proto.

 

type 修饰符钦点id 所表示的对象类型, id能够是名字也得以是数字.
可选的目的类型有: host, net, port 以及portrange(nt: host 注明id表示主机,
net 证明id是互联网, port 注明id是端而portrange 注明id 是三个端口范围).
 如, ‘host foo’, ‘net 128.3’, ‘port 20’, ‘portrange 五千-6008′(nt:
分别表示主机 foo,网络 128.3, 端口 20, 端口范围 陆仟-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 八千-7009’分别表示 ‘从以太网地址foo
来的多少包’,’发往或出自128.3互联网的arp协议数据包’,
‘发送或接收端口为21的tcp协议数据包’,
‘发送或收取端口范围为七千-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:
无法被用于包过虑表明式中).

 

  除以上所描述的公布元(‘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’ 操作符不可省略).

  借使2个标识符前没有首要字,
则表明式的辨析进度中近来用过的首要性字(往往也是从左往右距离标识符方今的最首要字)将被使用.比如,

    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地址, 也能够是2个主机名.

src host host

要是IPv4/v6 数据包的源域是host, 则与此对应的规格表达式为真.

host 能够是叁个ip地址, 也得以是3个主机名.

host host

 

万一IPv4/v6数据包的源或目标地址是 host,
则与此对应的条件表明式为真.以上的多少个host
表明式以前可以加上以下重点字:ip, arp, rarp, 以及 ip6.比如:

ip host host

也得以发布为:

ether proto \ip and host host(nt: 那种表明情势在上边有表达,
个中ip以前必要有\来转义,因为ip 对tcpdump 来说早已是三个器重字了.)

 

万一host 是1个有所多个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:地址的七个部分都会用到,是或不是不属于互联网的字节填写0,
需接下去补充),
但同时须求3个网络掩码长度参数来具体内定前面多少字节为互连网掩码(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 mask255.255.255.0).该选拔对于ipv6 互联网地址无效.

 

net net/len

若果数据包的源或目标地址(IPv4或IPv6格式)的互连网编号字段的比特数与len相同,
则与此对应的基准表明式为真.此选项之前还足以包容src和dst来匹配源网络地址或指标互连网地址(nt
| rt | tt: src net net/24, 表示必要匹配源地址的网络编号有2四人的数据包).

 

dst port port

万一数据包(包涵ip/tcp, ip/udp, ip6/tcp or ip6/udp协议)的目标端口为port,
则与此对应的准绳表达式为真.port
可以是2个数字也得以是一个名字(相应名字能够在/etc/services 中找到该名字,
也足以透过man tcp 和man udp来获得有关描述新闻 ). 假若运用名字,
则该名字对应的端口号和对应采用的情商都会被检查.
要是只是接纳二个数字端口号,则唯有相应端口号被检查(比如, dst port513
将会使tcpdump抓取tcp协议的login 服务和udp合计的who 服务数据包, 而port
domain 将会使tcpdump 抓取tcp协议的domain 服务数据包, 以及udp
共同商议的domain 数据包)(nt | rt: ambiguous nameis 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数据包.此数据包的IPv伍头和TCP头之间可能还会蕴藏验证头,
路由头, 大概逐跳寻径选项头.

因此所接触的对应BPF(Berkeley 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

比方数据包是3个以太网多点广播数据包(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字段能够是2个数字或以下协议名之一: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.二只中会蕴含此逻辑链路控制层头.

 

当以这几个互联网上的相应的商业事务标识为过滤条件时,
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 尾部中以0x0七千7 为OUI标识的’SNAP格式结构’,
并会检查AppleTalk etype域.

(nt: AppleTalk etype 是还是不是位于SNAP格式结构中, 未知, 需补充).

 

除此以外, 在以太网中, 对于ether proto protocol 选项, tcpdump 会为 protocol
所钦定的磋商品检验查

以太网类型域(the Ethernet type 田野先生), 但以下那几个协议除却:

 

iso, stp, and netbeui

tcpdump 将会检讨802.3 物理帧以及LLC 头(那三种检查与FDDI, TXC60,
802.11网络中的相应检查一致);

(nt: 802.3, 精通为IEEE 802.3, 其为一密密麻麻IEEE 标准的集合.
此集聚定义了有线以太互联网中的物理层以及数据

链路层的媒体连着控制子层. stp 在上文已有描述)

 

atalk

tcpdump 将会检查以太网物理帧中的AppleTalk etype 域
, 同时也会检查数据包中LLC底部中的’SNAP格式结构’

(那二种检查与FDDI, T凯雷德, 802.11互连网中的相应检查一致)

 

aarp tcpdump 将会检查AppleTalk A中华VP 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

表示: 过滤外层标签为一千00 而层标签为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 能够是1个数字编号, 或以下名字中之一:

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)和多少个区域组成3个’域’(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(国际电信联盟邮电通讯标准化部门)建议的3个与

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中同样),
二进制操作符(+, -, *, /, &, |,

<<, >>), 长度操作符, 以及对一定数据包中数据的引用操作符.
要注意的是, 全部的可比操作都默许操作数是无符号的,

诸如, 0x70000000 和 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, 或五个字节. 固然不给定size,
私下认可是三个字节. 长度操作符的要害字为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 头中第7个字节, 而不是对应任何二个中路的字节.

 

一部分偏移以及域的取值除了能够用数字也可用名字来表达.
以下为可用的一些域(协议头中的域)的名字: 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,感觉拾叁分有利于,明日头脑来潮百度了刹那间tcpdump的用法,才发现原来还有那样多强大的成效本身…

相关文章