先解释一下tcpdump的结果格式(参考《鸟哥的Linux私房菜》),下面的数据直接用tcpdump命令截取:
04:00:59.483389 IP 192.168.1.1.ssh > 192.168.1.2.netuitive: P 46808:46956(148) ack 365 win 12864

  1. 04:00:59.483389 : 通讯发生的时间
  2. IP : 此通讯所采用的协议
  3. 192.168.1.1.ssh >  :表示通讯传送端的IP和端口,ssh表示端口22 ;>符号表示通讯的方向。
  4. 192.168.1.2.netuitive :通讯接收端的IP和端口,其中netuitive表示端口1286
  5. P 46808:46956(148):带PUSH的数据传输标识
  6. ack 365 win 12864 :ACK与Window Size的相关数据

一些常用的相关命令:
1. 加上-nn参数,则显示的结果中,主机以及端口都用数字来显示,否则一些端口将会用被字母替换掉(如上例中的22端口就显示为ssh)

tcpdump -nn

2. 只监听到某个服务器的通讯,如下面的命令,则只监听访问www.codigg.com的通讯

tcpdump -nn dst host www.codigg.com

3. 类似2,将dst换成src,则可以反过来,监听从服务器www.codigg.com过来的通讯

tcpdump -nn src host www.codigg.com

4. 类似2和3,要监听端口也很容易,将host换成port即可,如只监听从80过来的通讯:

tcpdump -nn src port 80

5. 只监听某个网卡,用-i参数,这个地球人都知道~~~

tcpdump -nn -i eth1 src host www.codigg.com

6. 要组合条件,用and等,如:

tcpdump -nn -i eth0 src host www.codigg.com and src port 80

7. 来个实用的,监听正在执行的SQL命令:

tcpdump -s 0 -l -w - dst port 3306 | strings