Fork me on GitHub

tcpdump


# tcpdump -i eth0 -c 10 'udp' 我只想抓UDP的包,不想被TCP的包打扰
# tcpdump -i eth0 'dst 8.8.8.8' 我想专门查看这个源机器和那个目的机器之间的网络包,不想被其他无关的机器打扰
# tcpdump -i eth0 -c 3 'dst port 53 or dst port 80' 我只想查目标机器端口是53或80的网络包,其他端口的我不关注
# tcpdump -i eth0 'host roclinux.cn' 我想抓到那些通过eth0网卡的,且来源是roclinux.cn服务器或者目标是roclinux.cn服务器的网络包
#tcpdump -i eth0 'host roclinux.cn and (baidu.com or qiyi.com)' 我想抓通过eth0网卡的,且roclinux.cn和baidu.com之间通讯的网络包,或者,roclinux.cn和qiyi.com之间通讯的网络包
#tcpdump 'port ftp or ftp-data' 我想获取使用ftp端口和ftp数据端口的网络包 在Linux系统中,/etc/services这个文件里面,就存储着所有知名服务和传输层端口的对应关系。这个对应关系是由IANA组织(the Internet Assigned Numbers Authority,互联网数字分配机构)来全权负责的,你可以到这个链接http://www.iana.org/assignments/port-numbers通过Web方式查到。如果你直接把/etc/services里的ftp对应的端口值从21改为了8888,那么tcpdump就会去抓端口含有8888的网络包了。
#tcpdump 'tcp[tcpflags] & tcp-syn != 0 and not dst host qiyi.com'我想获取roclinux.cn和baidu.com之间建立TCP三次握手中第一个网络包,即带有SYN标记位的网络包,另外,目的主机不能是qiyi.com
#tcpdump 'ip[2:2] > 576'打印IP包长超过576字节的网络包
#tcpdump 'ether[0] & 1 = 0 and ip[16] >= 224' 打印广播包或多播包,同时数据链路层不是通过以太网媒介进行的。
tcp[tcpflags] & tcp-syn
tcp[tcpflags] & tcp-ack
tcp[tcpflags] & tcp-fin