Linux下使用tcpdump对网络数据包进行截获与分析
概述
tcpdump可以将网络中传送的数据包完全截获下来供我们分析,它支持网络层、协议、主机、网络或端口号的过滤,并提供了and、or、not等逻辑语句来让我们更进一步筛选我们需要的数据。
基本用法
默认启动
tcpdump
默认情况下,直接使用tcpdump将默认监视第一个网络接口上传输的网络数据包.
监视指定网络接口上传输的数据包
tcpdump -i eth1
上条指令将监视第二个以太网接口上传输的数据包,第一个是eth0.
如果在测试自己编写的网络相关的代码时,需要截取本地的环回数据,则需要指定为监视环回数据,因为环回数据不经过以太网接口,指令如下:
tcpdump -i lo
监视指定主机上传输的数据包
tcpdump host 192.168.12.34 and \ (192.168.34.56\ )
监视IP为192.168.12.34和IP为192.168.34.56的主机上传输的数据包,这是使用and之后获取更准确更多数据的方法.
也可以通过使用not or等逻辑词对截获条件进行更准确的限定.
监视指定主机和端口上传输的数据包
tcpdump host 192.168.12.34 and port 8080
也可以在端口号前指定相关协议,更准确地抓取数据包.
监视指定网络的数据包
tcpdump net 192.168.12.34
截获所有网络地址为192.168.12.34的网络数据包.
PS:
对于多数场景,基本用法差不多够用,但tcpdump的用法及范围不止于此,更多的操作方法可以查看系统文档。