用法格式:html
tcpdump [-i 网卡] [选项] '表达式'linux
选项说明以下:web
举例说明:apache
监听网卡eth0ubuntu
$ tcpdump -i eth0
这个方式最简单了,可是用处很少,由于基本上只能看到数据包的信息刷屏,压根看不清,可使用ctrl+c中断退出,若是真有需求,能够将输出内容重定向到一个文件,这样也更方便查看。vim
监听指定协议的数据服务器
$ tcpdump -i eth0 -nn 'icmp'
这个是用来监听icmp协议的数据,就是ping命令使用的协议。相似的,若是要监听tcp或者是udp协议,只须要修改上例的icmp就能够了。ping下监听的机器,输出以下:app
linux使用tcpdump抓包示例tcp
每一行的各个数据表示的含义:学习
抓到包的时间 IP 发包的主机和端口 > 接收的主机和端口 数据包内容
监听指定的主机
$ tcpdump -i eth0 -nn 'host 192.168.1.231'
这样的话,192.168.1.231这台主机接收到的包和发送的包都会被抓取。
$ tcpdump -i eth0 -nn 'src host 192.168.1.231'
这样只有192.168.1.231这台主机发送的包才会被抓取。
$ tcpdump -i eth0 -nn 'dst host 192.168.1.231'
这样只有192.168.1.231这台主机接收到的包才会被抓取。
监听指定端口
$ tcpdump -i eth0 -nnA 'port 80'
上例是用来监听主机的80端口收到和发送的全部数据包,结合-A参数,在web开发中,真是很是有用。
监听指定主机和端口
$ tcpdump -i eth0 -nnA 'port 80 and src host 192.168.1.231'
多个条件能够用and,or链接。上例表示监听192.168.1.231主机经过80端口发送的数据包。
监听除某个端口外的其它端口
$ tcpdump -i eth0 -nnA '!port 22'
若是须要排除某个端口或者主机,可使用“!”符号,上例表示监听非22端口的数据包。
小结:
tcpdump这个功能参数不少,表达式的选项也很是多,很是强大,不过经常使用的功能确实很少。详情能够经过man查看系统手册。
另外在抓取web包的时候,发送网页内容都是很奇怪的字符,发现是apache开启了gzip压缩的缘故,关闭掉gzip压缩就能够了。在ubuntu 12.04下,编辑vim /etc/apache2/mods-enabled/deflate.load文件,将加载模块deflate_module的语句注释掉,而后重启apache就OK了
操做:
分类: linux学习