由于IP协议是一个不可靠、非连接的尽力传输协议,数据报是采用分组交换方式在网络上传送的。因此当路由器不能够选择路由或传输数据报时,或检测到一个异常条件影响它转发数据报时,就需要通知初始源网点采取措施避免。完成这个任务的机制就是ICMP(Internet Control Message Protocol),它是IP的一部分,属于网络层协议,其报文是封装在IP协议数据单元中进行传送的,在网络中起到差错和拥塞控制的作用。

ICMP报文封装在IP数据报中传输,封装结构如下图所示:

ocpp协议学习资料(-网络层协议-ICMP协议)(1)

由于IP数据报首部校验和并不校验IP数据报的内容,因此不能保证经过传输的ICMP报文不产生差错。ICMP报文格式如下所示:

ocpp协议学习资料(-网络层协议-ICMP协议)(2)

ICMP报文有8字节的报头和可变长度的数据部分。虽然对每一种报文类型,报头的其他部分是不同的,但前4字节对所有类型都是相同的。

(1)ICMP报文的第一个字段是ICMP的类型,它定义了报文类型;

(2)代码字段指明了发送这个特定报文类型的原因;

(3)校验和字段用于检测报文的正确性;

(4)报头的其他部分对每一种类型报文都是不同的。在差错报告报文的数据部分所携带的信息可找出引起差错的原始IP报文;在查询报文的数据部分则携带了基于查询类型的额外信息。

ICMP报文分为ICMP差错报告报文和ICMP询问报文;在ICMP协议中定义了13种报文,包括回送应答、目的地不可达、源站抑制、重定向(改变路由)、回送请求、数据包超时、数据报参数错误、时间戳请求、时间戳应答、信息请求(已过时)、信息应答(已过时)、地址掩码请求、地址掩码回答。常见报文类型如下所示:

报文种类

类型值

报文类型

报文定义

报文内容

ICMP差错报告报文

3

目的不可达

路由器与主机不能交付数据时,就向源点发送目的不可达报文

包括网络不可达、主机不可达、协议不可达、端口不可达、需要设置分片却设置里不分片、源路由失败、目的网络未知、目的主机未知、目的网络被禁止、目的主机被禁止、由于服务类型TOS网络不可达、由于服务类型TOS主机不可达、主机越权、优先权中止生效

4

源点抑制

由于拥塞而丢弃数据报时就向源点发送抑制报文,降低发送速率

5

重定向(改变路由)

路由器将重定向报文发送给主机,优化或改变主机路由

包括网络重定向、主机重定向、对服务类型和网络重定向、对服务类型和主机重定向

11

时间超时

丢弃TTL为0的数据,向源点发送时间超时报文

12

参数问题

发现数据报首部有不正确字段时丢弃报文,并向源点发送参数问题报文

ICMP询问报文

0

回送应答

收到回送请求报文的主机必须回应源主机回送应答报文

8

回送请求

13

时间戳请求

请求对方回答当前日期和时间

14

时间戳应答

回答当前日期和时间

ICMP报文应用有Ping命令(使用回送应答和回送请求报文)和Traceroute命令(使用时间超时报文和目的不可达报文)。

,