IT技术博客大学习 共学习 共进步

神探tcpdump第四招

linux大棚-roclinux.cn 2012-09-03 13:50:10 浏览 5,087 次

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

    ==

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

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

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

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

# 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,看看里面都是什么东东?

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

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

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

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

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

# 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和过滤表达式来对输出信息进行控制,十分方便。

    ==

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

    谢谢!

建议继续学习

  1. 神探tcpdump第一招 (阅读 9,443)
  2. 使用wireshark分析网络报文 (阅读 7,746)
  3. 记一次丢包网络故障 (阅读 6,388)
  4. 神探tcpdump第六招 (阅读 5,364)
  5. ssldump (阅读 5,103)
  6. 神探tcpdump第三招 (阅读 4,723)
  7. 神探tcpdump第五招 (阅读 4,622)
  8. tcpdump匹配http头 (阅读 3,583)
  9. 调试利器之tcpdump详解 (阅读 3,442)