一、什么是tcpdump
wireshark是windows下面的抓包工具,tcpdump是linux下的抓包工具。tcpdump可以将网络中传送的数据包完全截获下来提供分析。它支持对网络层、协议层、主机、网络或端口的过滤、并提供and、or、not等逻辑帮你去掉无用的信息。
二、tcpdump的使用
tcpdump的参数主要是用来过滤的,因为网络中流量很大,如果不加分辨将所有数据包都截留下,数据量会很大,反而不容易发现需要的数据包。因此使用这些参数定义的过滤规则可以截留特定的数据包,更好的分析网络中存在的数据。
1、数据过滤:
-i:选择过滤的接口,也就是选择搜索那块网卡。
例:tcpdump -i eth0
只搜索eth0这个接口。
-b:在网络层上选择协议,包括ip,arp,rarp,ipx都是这一层的。
例:tcpdump -b arp
由于没有指定网卡,所以默认搜索第一个网卡。只显示网络中的的arp协议。
表达式:src、dst、port、host、net、ether、gateway这几个选项用来分辨数据包的来源和去向。host指定与主机相关,net指定与网络相关,ether后面跟的是MAC地址,gateway用于网关主机。
例:
tcpdump src host 192.168.80.144
过滤源主机IP是192.168.80.144的数报头。
tcpdump src host 192.168.80.144 and dst net 192.168.80.152
过滤源主机IP是192.168.80.144,目标网络是192.168.80.152的报头。
tcpdump ether src 00:50:04:BA:98:22
过滤源主机物理地址是00:50:04:BA:98:22的报头。
tcpdump src host 192.168.8.8 and dst port not telnet
过滤源主机IP地址是192.168.8.8和目的端口不是telnet的报头。
2、数据报类型过滤
ip、icmp、arp、rarp、tcp、udpz这些选项等都要放到参数的第一个位置,用来来过滤数据报的类型。
例如:tcpdump ip src …
只过滤数据链路层上的ip报头。
3、输入输出
tcpdump提供了好多参数来让我们选择如何处理得到的数据:
-l 可以将数据重定向
例:tcpdump -l >tcp.txt
将数据重新定向到tcp.txt文件中。
-n:不进行IP地址到主机名的转换。
-nn:不进行端口名称的转换。
-N:不打印出默认的域名。
-t:不显示时间。
-tt:打印原始的未格式化的时间。
-v:详细的输出,会多输出TTL和服务类型。
三、tcpdump的输出格式
tcpdump的总的输出格式为:系统时间 来源主机端口 > 目标主机 端口 数据包参数
例:
四、总结
tcpdump是以包为单位显示数据的,还有一种tcpflow是以流为单位显示数据的用tcpflow分析http数据流会更加方便。tcpdump只有在root下才能开启混杂模式,非root下不开启混杂模式。所谓混杂模式就是指一台机器的网卡能够接受所有经过他的数据流,不管目的地址是不是他。