==

本文会是“选项内容”的最后一期讲解,主要会讲讲-w和-r两个选项。tcpdump的选项很多,多达50个,其他我没有涉及的选项,还是要大家自己通过man tcpdump的方式来学习了。实在研究不懂的,可以找我探讨:)

==

做过网络流量分析的同学,或许都有一个共同的需求,那就是“流量保存”和“流量回放”,这就恰好对应了今天要讲解的-w选项和-r选项。

“流量保存”就是把抓到的网络包能存储到磁盘上,保存下来,为后续使用。

“流量回放”就是把历史上的某一时间段的流量,重新模拟回放出来,用于流量分析。

【-w选项】- 将流量保存到文件中

?

1
2
3
4
5
# tcpdump -i eth0 -w flowdata
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
^C327 packets captured
327 packets received by filter
0 packets dropped by kernel

通过上面的例子可以看到,通过-w选项将流量都存储在了flowdata文件中了。大家是否有兴趣less下flowdata,看看里面都是什么东东?

?

1
2
# less flowdata
"flowdata" may be a binary file. See it anyway?

悲剧,原来都是二进制格式的,无法直接通过文本方式查看。嗯,买了个关子,把真像告诉大家吧!

tcpdump的-w方式是把raw packets(原始网络包)直接存储到文件中了,也就是存储的都是结构体形式,而非是分析之后的文本格式的信息,因此大家是无法直接通过less命令查看的。

那么,怎么查看呢?大家想必也想到了,就是用-r选项。

【-r选项】- 读取raw packets文件

?

1
2
3
4
5
6
7
8
# tcpdump -r flowdata
reading from file flowdata, link-type EN10MB (Ethernet)
16:43:36.202443 IP 116.255.245.206.snapenetio > 61.135.169.73.52414: Flags [P.], seq 4082702792:4082702924, ack 3248983965, win 291, length 132
16:43:36.222033 IP 61.135.169.73.52414 > 116.255.245.206.snapenetio: Flags [.], ack 132, win 61, length 0
16:43:36.277407 IP 116.255.245.62 > ospf-all.mcast.net: OSPFv2, Hello, length 48
16:43:36.370846 ARP, Request who-has 116.255.245.203 tell 116.255.245.254, length 64
16:43:36.521947 ARP, Request who-has 116.255.245.203 tell 116.255.245.253, length 64
16:43:36.635472 ARP, Request who-has 116.255.245.214 tell 116.255.245.253, length 64

其实上面的命令就是在不知不觉中进行了“流量回放”,你会发现网络包被“抓”的速度都按照历史进行了回放,真像一个“时光机”啊!

由于是按raw packets来存储的,所以你完全可以使用-e、-l和过滤表达式来对输出信息进行控制,十分方便。

==

预告,第五招开始,会讲解过滤表达式了,会比较有意思,敬请期待。

谢谢!