图文并茂的讲解 ICMP (网际控制报文)协议

ICMP 网际控制报文

为了提高 IP 数据报交付成功的机会,在网络层使用了网际控制报文协议来允许主机或路由器报告差错和异常情况。ICMP 报文作为网际层数据报的数据,加上数据报的首部,组成 IP 数据报发出去。ICMP 协议是网际层协议。

ICMP 报文的种类有两种,即 ICMP 差错报告报文和 ICMP 询问报文

 

ICMP 差错报告报文

ICMP 差错报告报文用于目标主机或到目标主机路径上的路由器向源主机报告差错和异常情况。共有以下五种类型:

(1) 终点不可达。当路由器或主机不能交付数据报时就向源点发送终点不可达报文。具体可根据 ICMP 的代码字段细分为目的网络不可达、目的主机不可达、目的协议不可达、目的端口不可达、目的网络未知、目的主机未知等 13 中错误。

图文并茂的讲解 ICMP (网际控制报文)协议

 

(2) 源点抑制。当路由器或主机由于拥塞而丢弃数据报时,就向源点发送源点抑制报文,使源点知道应当把数据报的发送速率放慢。

图文并茂的讲解 ICMP (网际控制报文)协议

图文并茂的讲解 ICMP (网际控制报文)协议

 

(3) 时间超过。当路由器收到生存时间TTL为0的数据报时,除丢弃该数据报外,还要向源点发送时间超过报文。当终点在预先规定的时间内不能收到一个数据报的全部数据报片时,就把已收到的数据报片都丢弃,并向源点发送时间超过报文。

图文并茂的讲解 ICMP (网际控制报文)协议

 

(4) 参数问题。当路由器或目的主机收到的数据报的首部中有的字段的值不正确时,就丢弃该数据报,并向源点发送参数问题报文。

图文并茂的讲解 ICMP (网际控制报文)协议

(5) 改变路由(重定向)。路由器把改变路由报文发送给主机,让主机知道下次应该将数据报发送给另外一个路由器(可通过更好的路由)。

图文并茂的讲解 ICMP (网际控制报文)协议

 

不应发送 ICMP 差错报文的几种情况:

(1) 对 ICMP 差错报告报文不再发送 ICMP 差错报告报文。

(2) 对第一个分片的数据报片的所有后续数据报片都不发送 ICMP 差错报告报文。

(3) 对具有组播地址的数据报不发送 ICMP 差错报告报文。

(4) 对特殊地址(如127.0.0.0或0.0.0.0)的数据报不发送 ICMP 差错报告报文。

 

 

ICMP 询问报文

ICMP 询问报文有四种类型:回送请求和回答报文、时间戳请求和回答报文、掩码地址请求和回答报文、路由器询问和通告报文,最常用的是前两类。

图文并茂的讲解 ICMP (网际控制报文)协议

 

ICMP 的两个常见的应用是分组网间探测 PING 和 traceroute。其中 PING 使用了 ICMP 回送请求和回答报文,traceroute 使用了ICMP 时间超过报文。注意:PING工作在应用层,它直接使用网络层的ICMP协议,而没有使用传输层的TCP或UDP协议。traceroute工作在网络层。

图文并茂的讲解 ICMP (网际控制报文)协议

图文并茂的讲解 ICMP (网际控制报文)协议

 

图文并茂的讲解 ICMP (网际控制报文)协议

traceroute 原理

图文并茂的讲解 ICMP (网际控制报文)协议

图文并茂的讲解 ICMP (网际控制报文)协议