一:ICMP的作用

Internet控制报文协议:是网络层的一个重要协议。ICMP设备间传递各种差错和控制信息,他对于收集各种网络信息,诊断和排除各种网络故障具有至关重要的作用。总结来说,ICMP用来传递差错、控制、查询等信息。

二:ICMP重定向

ICMP协议_第1张图片
ICMP Redirect 消息用于支持路由功能。如图所示,主机A希望发送报文到服务器A,于是根据配置的默认网关地址向网关RTB发送报文。网关RTB收到报文后,检查报文信息后,发现报文应该转发到与源主机同一网段的另一个网关设备RTA,因为次转发路径是更优的路径。所以RTB会向主机发送一个消息,通知主机直接向另一个网关RTA发送报文。主机收到Redirect消息后,向RTA发送报文,RTA会将报文转发给服务器A。


小结:
1.ICMP重定向消息由路由器产生。
2.主机去处理这个重定向消息。


三:ICMP错误报告

ICMP协议_第2张图片
ICMP定义了各种错误消息,用于诊断网络的连接性问题;根据这些错误消息,源设备可以判断出数据传输失败的原因。如上图当网络设备无法访问目标时,会自动发送ICMP目的不可到达报文到终端设备。
四:ICMP数据包格式
ICMP协议_第3张图片
上图中Type表示ICMP消息类型,code表示同一消息类型中的不同信息。
ICMP协议_第4张图片

五:ICMP协议应用

1.ping命令

通常使用PING命令测试互通性时有以下几种消息反馈:
1、Request Time Out
2、Destination Unreachable
3、TTL Expired in transit
情况1:当信源机PING某信宿机时,信源机在一段时间内(信源机发送ICMP请求报文后,会启动定时器0)无法收到ICMP响应报文,就会产生该种情况。出现上述问题的原因在于,信源到信宿的路由正常,而信宿到信源无可用通路。
情况2:当信源机到信宿机无可用通路时,就会产生该种原因。
情况3:当信源机发送IP数据包时(ICMP是被直接封装在IP包中),会加上包的TTL(Time to Live)时间,数据包在每经过一个路由器时,路由器会将包的TTL时间减1,如果在ICMP请求报文未到信宿机之前,该数据包的TTL为0,则相应的网关丢弃该报文,同时向信源机发送ICMP的超时报文,在信源机上应将显示TTL Expired in transit消息。该问题主要是在网络内部出现了路由循环造成数据包无法到达信宿机,可使用Tracert跟踪,判断故障出处(使用该命令时最好在主机上完成)。

tracter命令

Tracert显示数据包在网络传输过程中所经过的每一条。