【系列文章】
《神探tcpdump第一招》-linux命令五分钟系列之三十五
《神探tcpdump第二招》-linux命令五分钟系列之三十六

==

上篇文章说过,tcpdump会分成“选项”、“过滤表达式”和“输出信息”三部分讲解。

截止到目前,我们一直在围绕tcpdump的选项部分进行讲解,已经介绍过的选项包括-i选项、-nn选项、-c选项、-X选项、-e选项、-l选项。
今天仍然不例外,我们继续有关选项的内容。

==

【-t选项】- 输出时不打印时间戳

这个选项非常好理解,直接看例子吧:

?

1
2
3
4
5
6
7
8
# tcpdump -i eth0 -c 1
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
01:52:10.433391 ARP, Request who-has 116.255.247.61 tell 116.255.247.125, length 64
# tcpdump -i eth0 -c 1 -t
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
ARP, Request who-has 116.255.245.35 tell 116.255.245.62, length 64

【-v选项】- 输出更详细的信息

加了-v选项之后,在原有输出的基础之上,你还会看到tos值、ttl值、ID值、总长度、校验值等。
至于上述值的含义,需要你专门去研究下IP头、TCP头的具体协议定义咯。

?

1
2
3
4
5
6
7
8
# tcpdump -i eth0 -c 1
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
01:53:09.162644 IP 116.255.245.206.snapenetio > 221.223.255.234.54198: Flags [P.], seq 1443040202:1443040398, ack 3517061690, win 353, length 196
# tcpdump -i eth0 -c 1 -v
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
01:52:57.902894 IP (tos 0x10, ttl 64, id 18293, offset 0, flags [DF], proto TCP (6), length 172)
116.255.245.206.snapenetio > 221.223.255.234.54198: Flags [P.], cksum 0x4dd9 (correct), seq 1443039302:1443039434, ack 3517061430, win 353, length 132

【-F选项】- 指定过滤表达式所在的文件

还记得我们在第一招中所提到的命令么,我帮助大家回忆一下:

 tcpdump -i eth0 -nn -X ‘port 53′ -c 1

这里面的’port 53’便叫做“过滤表达式”,用于设置我们抓包的条件的,只有满足过滤条件的网络包,才会被抓过来。
当这个过滤条件非常复杂,或者我们需要将一个过滤条件固化下来复用的时候,就会想到把它存到一个文本文件中。
此时,-F选项就会派上用场。请看例子:

?

1
2
3
4
5
6
7
8
9
# cat filter.txt
port 53
# tcpdump -i eth0 -c 1 -t -F filter.txt
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
IP 116.255.245.206.54357 > ns.sc.cninfo.net.domain: 36720+ A? www.baidu.com. (31)
1 packets captured
6 packets received by filter
0 packets dropped by kernel

我们建立了一个filter.txt文本文件来存储过滤表达式,然后通过-F来指定filter.txt,这样tcpdump就会心知肚明地读取filter.txt中的内容作为过滤条件。

==

下一招,会使选项讲解的最后一次,重点讲讲-w和-r两个选项,敬请期待。

谢谢!