wireshark中抓取ICMP报文

  • Post author:
  • Post category:其他


为了更有效地转发IP数据报和提高交付成功的机会,在网络层使用了网际控制报文协议ICMP(Internet Control Message Protocol)[RFC 792]。它是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。ICMP报文作为IP层数据报的数据,加上数据报的首部,组成数据报发送出去。 ICMP报文的种类有两种,即ICMP差错报告报文和ICMP询问报文。

大家先了解一下几种常见的ICMP报文类型:

这里写图片描述

我们现在就来抓取报文

打开dos窗口,在里面输入ping mail.sina.com.cn:

这里写图片描述

打开wireshark,在filter栏中输入 ip.addr ==192.168.199.222(自己的IP地址) and (icmp or dns),敲回车。

再来看wireshark抓到的一堆报文:

这里写图片描述

可以看到我们抓到了八个ICMP报文,向对方主机询问(request)四次同时接收到四次应答(reply),这样加起来一共就有八个。而其上方的DNS报文起到了域名解析的作用,通过域名找到其IP地址,方便我们用户访问互联网。

Tracert(跟踪路由)是路由跟踪实用程序,用于确定 IP 数据包访问目标所采取的路径。Tracert 命令用 IP 生存时间 (TTL) 字段和 ICMP 错误消息来确定从一个主机到网络上其他主机的路由。

我们看看发出的ICMP报文都经过了哪些路由器,再次打开dos窗口,输入 tracert mail.sina.com.cn

这里写图片描述

在filter栏中输入 icmp

这里写图片描述

抓到的报文有点多哈,我们先看顺数第一个和第二个,第一个ICMP的报文type类型是8,说明它为询问报文,而第二个报文type类型为11,说明超时了。

这里写图片描述

还有需要注意的是,我们主机发送的报文所设置的生存时间(TTL)在从1开始不断地变大,因为TTL每经过一个路由器的时候会被减1,当TTL等于0的时候就会被抛弃。所以一直这样下去,总有一次我们发送最后一个数据报刚刚到达目的主机时,数据报的TTL是1,这时候我们就不减1了。

从刚才的dos窗口可以看到,当我们的TTL达到13时,报文可以顺利发送到目的地,我们也就能顺利得到相应应答。

这里写图片描述



版权声明:本文为weixin_41656968原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。