ICMP允许主机或路由器报告差错情况和提供异常情况报告
其格式就是将IP数据报的数据部分替换为ICMP报文
ICMP类型:ICMP差错报告报文
ICMP询问报文
注:IP数据报首部的检验和并不检查IP数据报的内容,因为不能保证经过传输的ICMP报文不产生差错
终点不可达:路由器或主机不能交付数据时,向源点发送终点不可达报文
源点抑制:路由器或主机拥塞而丢包时,向源点发送源点抑制报文,目的使源点知道放慢发送数据速度
时间超过:路由器收到生存时间为0的数据报,向源点发送时间超过报文。当终点在预定时间不能收到一个数据报的所有片时,丢弃以收到片同时向源点发送时间超过报文
参数问题:路由器或主机收到数据报首部出错,向源点发送参数问题报文
改变路由(重定向):路由器把改变路由报文发送给主机,让主机知道下次应将数据报发送给另外的路由器。在Internet中的主机中也有一个路由表,但是主机数量过多,所以主机不和Internet中的路由器定期交换路由信息。主机开始工作时,会在路由表中设置一个默认路由。如果默认路由器发现主机发往某个目的地址的数据报的最佳路由不应该经过默认路由而应经过另一个路由器R时,就发送改变路由报文告诉主机。主机就在其路由表中增加相应项目。
上图为ICMP报文,其中第三行,为ICMP报文的数据部分,对于所有的ICMP差错报告报文,该部分有相同的格式,下图所示。数据字段的内容就是第二行所示三项。其中IP数据报(进行差错报告的IP数据报)数据字段的前八个字节是为了得到端口号
不应发送ICMP差错报告报文的几种情况
ICMP询问报文
1.回送请求和回答
2.时间戳请求和回答
ICMP应用举例
ping:用来测试两主机间(主机和服务器)的连通性