作为网络工程师,必须要知道网络设备之间的连接状况,因此就需要有一种机制来侦测或通知网络设备之间可能发生的各种各样的情况,这就是ICMP协议的作用。ICMP( Internet Control Message Protocol) 协议的全称Inetrnet控制消息协议,主要是用于在IP网络中发送控制消息,提供可能发生在通信环境中的各种问题的反馈,通过这些信息,管理员就可以对所发生的问题做出判断,然后采取适当的措施去解决它。
1.1 ICMP 的主要功能介绍
ICMP是一个“错误侦测与回馈机制”,是通过IP 数据包封装的,用来发送错误和控制消息。其目的就是让管理员能够检测网络的连通状况。例如在下图中,当路由器收到一个不能被送到最终目的地的数据包时,路由器会向源主机发送一个ICMP主机不可达的消息。
ICMP定义了很多信息类型,具体如下:
- 目的地不可达
- TTL 超时
- 参数问题
- 源压抑
- 回显
- 回显应答
- 时间戳
- 时间戳应答
- 信息请求
- 信息应答.
- 地址请求
- 地址应答
1.2 ICMP 的基本使用
在网络中ICMP协议的使用是靠各种命令来实现的。下面以ping 命令为例,介绍ping命令的使用以及返回的信息。
ping命令的基本格式为:
ping [-t] [-1字节数] [-a] [-i] IP_ Address target_ name
其中的[ ]中的参数为可选参数。
- ping 命令的返回信息
在检查网络连通性时ping命令用得是最多的。当我们ping -台主机时,本地计算机发
出的就是一个典型的 ICMP数据报,用来测试两台主机是否能够顺利连通, ping 命令能够
检测两台设备之间的双向连通性,也就是说数据包能够到达对端,并能够返回,如图8.10
所示。
(1)连通的应答
从图8.10中所返回的信息可以知道,从源主机向目标主机共发送了4个32字节的包,
从目标主机回应了4个32字节的包,包没有丢失,源主机和目标主机之间的连接正常。除
此以外可以根据time 来判断当前的联机速度,数值越低速度越快;在最后两行还有一个总 ,
结,如果发现packet lost (丢包)很严重的话,可能是由于线路不好造成的丢包,那就要检
查线路或更换网线了;最后-行是round trip (来回)时间的最小值、平均值、最大值,它
们的时间单位都是毫秒( ms)

(2)不能建立连接的应答
如果两台主机之间不能建立连接,那ICMP也会返回相应的信息,如图8.11所示。

图8.11所示“目标主机不可达”,说明两台主机之间无法建立连接,可能是因为没有
正确配置网关等参数,由于找不到去往目标主机的“路”,所以显示“目标主机不可
达”。从源主机发送4个包,接收到0个返回包,因此丢包率为100%。
(3)应答为未知主机名
由于网络中可能存在的问题有很多,因此返回的ICMP信息也很多,如图8.12 所示,
ICMP返回信息为“请求找不到主机”,说明是DNS无法进行解析。

(4)连接超时的应答
如图8.13所示,返回信息为Request time out, 表示在规定的时间内没有收到返回的应答消息。

在路由器上也广泛使用ICMP协议来检查设备之间的连接及运行情况。如果没有ICMP协议,那所能看到的就只是一些单纯的设备的堆叠, 至于它们的工作情况则一无所知。 所以ICMP协议对于管理网络设备、监控网络状态等都有着非常重要的作用。