很多常用的网络探测命令都使用了ICMP报文。在局域网中,当访问不了网站时,第一个想到的就是ping命令。ping命令给出到达目的结点的时间,就是发送一个ICMP回显请求报文给主机,计算多长时间返回一个ICMP回显应答报文。ping命令通过在ICMP报文数据中存放发送请求的时间值来计算往返时间。当应答返回时,用当前时间减去存放在ICMP报文中的时间值,即是往返时间。
下面以一个ping命令为例,具体来看一下它是如何使用ICMP报文的。在这个例子中使用命令“ping192.168.1.1”,本机IP地址是192.168.1.104。命令的执行结果如下所示。
通过网络抓包软件捕获发送和接收的数据包,可以看到,ping命令实际上发送了4个ICMP回显请求报文,相应地,收到了4个对应ICMP回显应答报文,因而一共捕获了8个ICMP报文。
在ICMP回显请求报文中,可以看到ICMP报文类型为0x08。其中上半部分是报文各字段的解析,下半部分是报文的十六进制表示。
类似地,在ICMP回显应答报文中,类型字段为0x00,这里就不给出ICMP回显应答报文抓包结果图了。(www.daowen.com)
当网络不通时,ping命令可能给出另外两个结果:Destination net unreachable(目的网络不可达)和Request time dout(请求超时)。
当没有到目的地的路由时,ping命令会给出“目的网络不可达”,原因通常是“Reply from”中列出的路由器路由错误造成的。
在指定的超时时间内没有接收到ICMP回显应答报文,ping则给出“请求超时”的结果,原因可能是路由器关闭、目标主机关闭、没有路由返回到主机或响应的等待时间大于指定的超时时间等。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。