三、常用示例
3.1监视指定主机的数据包
(1)打印所有到达或从主机sunrise发出的数据包,host可以是IP地址或主机名
| tcpdump host sunrise |
(2)打印主机A与B或C之间来往的所有数据包
| tcpdump host A and ( B or C ) |
(3)打印ace与任何其他主机之间通信的IP数据包, 但不包括与helios之间的数据包.
| tcpdump ip host ace and not helios |
3.2监视指定网络的数据包
(1)打印本地主机与Berkeley网络上的主机之间的所有通信数据包
| tcpdump net ucb-ether |
(2)打印所有通过网关snup的ftp数据包。注意,表达式被单引号括起来了, 这可以防止shell对其中的括号进行错误解析
| tcpdump 'gateway snup and (port ftp or ftp-data)' |
(3)打印不是本地网络的数据包
| tcpdump ip and not net localnet |
3.3监视指定协议的数据包
(1)打印TCP会话中的的开始和结束数据包, 并且数据包的源或目的不是本地网络上的主机。(nt:localnet,实际使用时要真正替换成本地网络的名字)
| tcpdump 'tcp[tcpflags] & (tcp-syn|tcp-fin) != 0 and not src and dst net localnet' |
(2)打印长度超过576字节, 并且网关地址是snup的IP数据包
| tcpdump 'gateway snup and ip[2:2] > 576' |
ip[2:2]表示整个ip数据包的长度。
(3)打印除'echo request'或者'echo reply'类型以外的ICMP数据包(比如,需要打印所有非ping 程序产生的数据包时可用到此表达式 。(nt: ‘echo reuqest' 与 ‘echo reply' 这两种类型的ICMP数据包通常由ping程序产生))
| tcpdump 'icmp[icmptype] != icmp-echo and icmp[icmptype] != icmp-echoreply' |
3.4监视指定主机和端口的数据包
(1)抓取主机100.94.138.110所有经由接口eth1接收的数据包,且端口号是20700。
| tcpdump -i eth1 -lnXps0 dst 100.94.138.110 and dst port 20700 -c 10 |
命令选项说明:lnXps0请参照上文的命令选项详解,-c 10表示只捕捉10个数据包。
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对易采站长站的支持。
参考文档
[1]维基百科.tcpdump
[2]tcpdump官方网站
[3]Linux tcpdump命令详解








