IT技术博客大学习 共学习 共进步

神探tcpdump第六招

linux大棚-roclinux.cn 2012-09-03 23:14:24 浏览 5,362 次

    第六招,仍然会讲解tcpdump的过滤表达式,这次思路很简单,就是直接举例子,其实就是man tcpdump中的例子,很直观,很受用。

    ==

    【例子1】- 我想抓到那些通过eth0网卡的,且来源是roclinux.cn服务器或者目标是roclinux.cn服务器的网络包

tcpdump -i eth0 'host roclinux.cn'

    【例子2】- 我想抓通过eth0网卡的,且roclinux.cn和baidu.com之间通讯的网络包,或者,roclinux.cn和qiyi.com之间通讯的网络包

tcpdump -i eth0 'host roclinux.cn and (baidu.com or qiyi.com)'

    【例子3】- 我想获取使用ftp端口和ftp数据端口的网络包

tcpdump 'port ftp or ftp-data'

    大家是不是会有一个疑问“这个ftp、ftp-data到底对应哪个端口?除了ftp/ftp-data,还有哪些服务名称我可以直接用呢?”

    嗯,这是个好问题,答案现在揭晓咯。

    在Linux系统中,/etc/services这个文件里面,就存储着所有知名服务和传输层端口的对应关系。这个对应关系是由IANA组织(the Internet Assigned Numbers Authority,互联网数字分配机构)来全权负责的,你可以到这个链接http://www.iana.org/assignments/port-numbers通过Web方式查到。

    如果你直接把/etc/services里的ftp对应的端口值从21改为了8888,那么tcpdump就会去抓端口含有8888的网络包了。

    【例子4】- 我想获取roclinux.cn和baidu.com之间建立TCP三次握手中第一个网络包,即带有SYN标记位的网络包,另外,目的主机不能是qiyi.com

tcpdump 'tcp[tcpflags] & tcp-syn != 0 and not dst host qiyi.com'

    这个语句看着比较复杂,其实如果要把这段解释清楚的确不容易,需要你具备计算机网络专业知识才行。这个我会安排一招来讲。

    【例子5】- 打印IP包长超过576字节的网络包

tcpdump 'ip[2:2] > 576'

    【例子6】- 打印广播包或多播包,同时数据链路层不是通过以太网媒介进行的。

tcpdump 'ether[0] & 1 = 0 and ip[16] >= 224'

    最后三个例子,或许你看得有些晕头转向,没关系,先有个感官认识,看完接下来的几篇文章后,相信保证你就明白了:)

    谢谢!

建议继续学习

  1. 神探tcpdump第一招 (阅读 9,441)
  2. 使用wireshark分析网络报文 (阅读 7,743)
  3. 记一次丢包网络故障 (阅读 6,381)
  4. ssldump (阅读 5,100)
  5. 神探tcpdump第四招 (阅读 5,081)
  6. 神探tcpdump第三招 (阅读 4,720)
  7. 神探tcpdump第五招 (阅读 4,620)
  8. tcpdump匹配http头 (阅读 3,581)
  9. 调试利器之tcpdump详解 (阅读 3,440)