IP数据报发送过程中可能会发生“差错”,为了避免或及时发现出错,故使用网络控制报文协议ICMP。它允许当遇到IP数据无法访问目标、IP路由器无法按当前的传输速率转发数据包等情况时,会自动发送ICMP消息。该协议下会给原数据添加头部,然后发送回源主机
其中发送不同类型的报文就能起到不同的功能。如类型与代码都为0时表示回显应答,ping应答就是一实例。
除了出错时发送差错报告报文给源主机(被动收到),同时ICMP协议还支持询问报文,可以实现主动发送一些请求,来获取想知道的信息(如ping为主动发出)
详细:
1.ICMP差错报文。有五种。
(1)终点不可达 当路由器或主机不能交付数据报时就向源点发送终点不可达报文
(2)源点抑制 当路由器或主机由于拥塞而丢弃数据报时,就向源点发送源点抑制报文
(3)时间超过 当路由器收到生存时间为零的数据时,除丢弃该数据外,还要向源点发送时间超过报文。
(4)参数问题 当路由器或目的主机收到的数据报的首部中有的字段的值不正确时,就丢弃该数据报,并向源点发送参数问题报文
(5)改变路由(重定向)路由器把改变路由报文发送给主机,让主机知道下次应将数据报发送给另外的路由器
2.ICMP询问报文。常用的两种。
(1)回送请求和回答
(2)时间戳请求与回答