CSDN|肝了三天,万字长文教你玩转 tcpdump,从此抓包不用愁( 三 )

  1. 跟在 proto 和 protochain 后面的如果是 tcp, udp, icmp, 那么过滤器需要用引号包含 , 这是因为 tcp,udp, icmp 是 tcpdump 的关键字 。
  2. 跟在ip 和 ip6 关键字后面的 proto 和 protochain 是两个新面孔 , 看起来用法类似 , 它们是否等价 , 又有什么区别呢?
关于第二点 , 网络上没有找到很具体的答案 , 我只能通过 man tcpdump 的提示 ,给出自己的个人猜测 , 但不保证正确 。 proto 后面跟的 <protocol> 的关键词是固定的 , 只能是 ip, ip6, arp, rarp, atalk, aarp, decnet, sca, lat, mopdl, moprc, iso, stp, ipx, or netbeui 这里面的其中一个 。 而 protochain 后面跟的 protocol 要求就没有那么严格 , 它可以是任意词 , 只要 tcpdump 的 IP 报文头部里的 protocol 字段为 <protocol> 就能匹配上 。 理论上来讲 , 下面两种写法效果是一样的$ tcpdump 'ip && tcp'$ tcpdump 'ip proto tcp'同样的 , 这两种写法也是一样的$ tcpdump 'ip6 && tcp'$ tcpdump 'ip6 proto tcp'
可选参数解析4.1 设置不解析域名提升速度
  • -n:不把ip转化成域名 , 直接显示 ip , 避免执行 DNS lookups 的过程 , 速度会快很多
  • -nn:不把协议和端口号转化成名字 , 速度也会快很多 。
  • -N:不打印出host 的域名部分. 。 比如, , 如果设置了此选现 , tcpdump 将会打印'nic' 而不是 'nic.ddn.mil'.
4.2 过滤结果输出到文件使用 tcpdump 工具抓到包后 , 往往需要再借助其他的工具进行分析 , 比如常见的 wireshark。 而要使用wireshark, 我们得将 tcpdump 抓到的包数据生成到文件中 , 最后再使用 wireshark 打开它即可 。 使用 -w 参数后接一个以 .pcap 后缀命令的文件名 , 就可以将 tcpdump 抓到的数据保存到文件中 。 $ tcpdump icmp -w icmp.pcap4.3 从文件中读取包数据使用 -w 是写入数据到文件 , 而使用 -r 是从文件中读取数据 。 读取后 , 我们照样可以使用上述的过滤器语法进行过滤分析 。 $ tcpdump icmp -r all.pcap4.4 控制详细内容的输出
  • -v:产生详细的输出. 比如包的TTL , id标识 , 数据包长度 , 以及IP包的一些选项 。 同时它还会打开一些附加的包完整性检测 , 比如对IP或ICMP包头部的校验和 。
  • -vv:产生比-v更详细的输出. 比如NFS回应包中的附加域将会被打印, SMB数据包也会被完全解码 。 (摘自网络 , 目前我还未使用过)
  • -vvv:产生比-vv更详细的输出 。 比如 telent 时所使用的SB, SE 选项将会被打印, 如果telnet同时使用的是图形界面 , 其相应的图形选项将会以16进制的方式打印出来(摘自网络 , 目前我还未使用过)
4.5 控制时间的显示
  • -t:在每行的输出中不输出时间
  • -tt:在每行的输出中会输出时间戳
  • -ttt:输出每两行打印的时间间隔(以毫秒为单位)
  • -tttt:在每行打印的时间戳之前添加日期的打印(此种选项 , 输出的时间最直观)
4.6 显示数据包的头部