当前位置: 代码迷 >> 综合 >> tcpdump 参数说明
  详细解决方案

tcpdump 参数说明

热度:42   发布时间:2024-01-20 10:11:54.0

常用参数简介:
-i  指定监听网卡,用于机器有多个网卡的情况
-c  指定要监听的数据包的数量
-w  将监听到的数据包存入文件中
-r  从指定的文件中读取包(这些包一般通过-w选项产生);
-s  snaplen
-T  将监听到的包直接解释为指定的类型的报文,常见的类型有rpc (远程过程调用)和snmp(简单网络管理协议;)

-f  将外部的Internet地址以数字的形式打印出来;

-ddd 将匹配信息包的代码以十进制的形式给出;

-a   将网络地址和广播地址转变成名字;

-n   不把网络地址转换成名字;

-c   在收到指定的包的数目后,tcpdump就会停止;

-v   输出一个稍微详细的信息,例如在ip包中可以包括ttl和服务类型的信息;

-e   在输出行打印出数据链路层的头部信息;

 

I.定义类型的参数
包括host,net,port,分别对应着主机,网络地址和端口


II.定义传输方向的参数
包括src,dst,dst or src,dst and src


III.定义协议的参数
包括fddi,ip,arp,tcp,udp等


IV.除以上之外还有gateway,broadcast,less,greater
逻辑运算符:1)非 not ! 2)与 and &&  3)或 or ||


1> #tcpdump 直接启动tcpdump默认监听第一块网卡上面流过的所有数据包
2> #tcpdump host 222.222.222.222 获取该主机上面收到和发出的所有数据包
3> #tcpdump host A and \(B or C\)获取主机A和B或C的通信信息,注意括号
4> #tcpdump ip host A and !B 获取A和除了B的所有ip包
5> #tcpdump tcp port 23 host A 获取A发出或接受的所有telnet包
6> #tcpdump udp port 123 监听udp123端口的ntp服务
7> #tcpdump -i eth0 src host hostname 监听来自hostname的所有信息
8> #tcpdump -i eth0 gateway gatewayname 监听通过网关的数据包
9> #tcpdump -i eth0 host hostname and (src or dst)port 80 监听指定端口的信息


当网卡开启混杂模式时,系统日志里会有如下信息
March 9 10:03:06 localhost kernel: eth0: Promiscuous mode enabled.
March 9 10:03:06 localhost kernel: device eth0 entered promiscuous mode
March 9 10:03:07 localhost kernel: device eth0 left promiscuous mode


    tcpdump对截获的数据并没有进行彻底解码,数据包内的大部分内容是使用十六进制的形式直接打印输出的。显然这不利于分析网络故障,通常的解决办法是先使用带-w参数的tcpdump 截获数据并保存到文件中,然后再使用其他程序进行解码分析。当然也应该定义过滤规则,以避免捕获的数据包填满整个硬盘。

    除了过滤语句,还有一个很重要的参数,也就是说,如果这个参数不设置正确,会导致包数据的丢失!它就是-s 参数,是数据包的截取长度,仔细看man就会明白的!默认截取长度为60个字节,但一般ethernet MTU都是1500字节。所以,要抓取大于60字节的包时,使用默认参数就会导致包数据丢失!

  只要使用-s 0就可以按包长,截取数据