基本上都是摘抄网上的实例,原文连接在最后。
Tcpdump 中的关键字主要有以下几种
1.关于类型的关键字主要包括:host、net、port
2.确定传输方向的关键字主要包括:src、dst、dst or src、 dst and src。
3.第三种是协议的关键字,主要包括ip、arp、rarp、tcp、udp、icmp等类型。
4.其他重要的关键字:gateway, broadcast,less,greater。
5.三种逻辑运算:取非运算是'not ' ,'! ';与运算是'and','&&';或运算 是'or','││'。多条件时可以用括号,但是要用\转义。

使用:
一.初级篇
1.抓取指定网卡

tcpdump -i eth0

如果不加 -i参数,默认抓取所有网卡的数据包,包括回环网卡lo。
可以用-D 参数查看可以抓取的网卡。
2.抓取指定数量的包

tcpdump -c 10 -i eth0

3.保存抓取到的数据包

tcpdump -w save.file -i eth0

抓取到的数据包可以用wireshark分析,要确认保存的目录权限是777,否则会提示 Permission denied 。
4.读取数包文件内容

tcpdump -r save.file

5.显示ip地址和端口号

tcpdump -n  -i eth0    显示ip
tcpdump -nn -i eth0    显示ip+端口

默认情况下抓包结果会显示域名,端口会显示对应的协议,例如8.8.8.8显示为8-8-8-8.rev.net.com.sg,而22端口显示为ssh

6.抓包结果中显示时间戳

tcpdump -tttt -i eth0

7.抓取指定协议的数据包

tcpdump  -p udp -i eth0

-p也可以省略,支持协议ip、ip6、arp、rarp、tcp、udp、icmp
8.抓取指定端口的数据包

tcpdump port 80

9.以ASCII值显示抓到的包

tcpdum -A -i eth0

二.中级篇
1.抓取包含8.8.8.8的数据

tcpdump -i eth0 -vnn host 8.8.8.8

2.抓取包含8.8.8.8/24段的数据包

 tcpdump -i eth0 -vnn net 8.8.8.8/24

3.抓取源ip是8.8.8.8的数据包

tcpdump -i eth0 -vnn src host 8.8.8.8

4.抓取目的ip是8.8.8.8的数据包

tcpdump -i eth0 -vnn dst host 8.8.8.8

5.抓取源端口是22的数据包

tcpdump -i eth0 -vnn src port 22 

6.抓取源ip是8.8.8.8 且包含端口是22的数据包

tcpdump -i eth0 -vnn src host 8.8.8.8 and dst port 22

7.抓取源ip是8.8.8.8 或者包含端口是22的数据包

tcpdump -i eth0 -vnn src host 8.8.8.8 or port 22  

8.抓取源ip是8.8.8.8且端口不是22的数据包

tcpdump -i eth0 -vnn src host 8.8.8.8 and not port 22 

9.抓取源ip是8.8.8.8且目的端口是22,或源ip是4.4.4.4且目的端口是80的数据包

tcpdump -i eth0 -vnn \( src host 8.8.8.8 and dst port 22 \) or   \( src host 4.4.4.4 and dst port 80 \)

10.抓取源ip是172.16.1.59且目的端口是22,或源ip是172.16.1.68且目的端口是80的数据包

tcpdump -i  eth0 -vnn 'src host 172.16.1.59 and dst port 22' or  ' src host 172.16.1.68 and dst port 80 '

11.从/tmp/fill记录中读取tcp协议的数据包

tcpdump –i eth0 -vnn -r  /tmp/fil1 tcp  

12.从/tmp/fill记录中读取包含172.16.1.58的数据包

tcpdump –i eth0 -vnn -r  /tmp/fil1 host  172.16.1.58 

13.摘取主机172.16.14.107和主机172.16.14.27或172.16.14.99的通信

tcpdump host 172.16.14.107 and \(172.16.14.27 or 172.16.14.99 \)

14.获取主机172.16.14.107和排除172.16.14.27之后所有主机的数据包

tcpdump ip host 172.16.14.107 and ! 172.16.14.27

三.高级篇
1.打印所有源或目的端口是80, 网络层协议为IPv4, 并且含有数据,而不是SYN,FIN以及ACK-only等不含数据的数据包。

tcpdump 'tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)'

2.抓取HTTP包

tcpdump  -XvvennSs 0 -i eth0 tcp[20:2]=0x4745 or tcp[20:2]=0x4854

0x4745 为"GET"前两个字母"GE",0x4854 为"HTTP"前两个字母"HT"。

3.抓取HTTP Request Headers

tcpdump -n -S -s 0 -A 'tcp dst port 80' | grep -B3 -A10 "GET /"

参考文章:
http://www.tcpdump.org/#documentation
http://www.thegeekstuff.com/2010/08/tcpdump-command-examples/
http://www.cnblogs.com/yc_sunniwell/archive/2010/07/05/1771563.html
http://www.cnblogs.com/ggjucheng/archive/2012/01/14/2322659.html
http://blog.sina.com.cn/s/blog_4a071ed80100sv13.html
http://blog.csdn.net/zjl_1026_2001/article/details/7303118
http://roclinux.cn/?p=2474