### 1、ICMP主要功能 - 错误通知 - 诊断查询 ### 2、ICMP报文格式 ![image-20230709165939976](https://blog-heysq-1255479807.cos.ap-beijing.myqcloud.com/blog/note/image-20230709165939976.png) ### 3、ICMP通知主机不可达流程 - 包通过IP协议原路返回到发送方 ![image-20230709165145074](https://blog-heysq-1255479807.cos.ap-beijing.myqcloud.com/blog/note/image-20230709165145074.png) ### 4、ICMP报文类型 ![image-20230709165228961](https://blog-heysq-1255479807.cos.ap-beijing.myqcloud.com/blog/note/image-20230709165228961.png) ### 5、目标不可达消息 - 类型 3,携带不可达具体原因 - 不可达原因与具体错误号 - 4代表MTU路径发现,分片大小超限 ![image-20230709165756565](https://blog-heysq-1255479807.cos.ap-beijing.myqcloud.com/blog/note/image-20230709165756565.png) ### 6、重定向消息 - 类型 5 - 路由器发现发送端主机使用了次优的路径发送数据,会返回一个重定向消息 - 消息中包含最合适的路由信息和源数据 ![image-20230709170456622](https://blog-heysq-1255479807.cos.ap-beijing.myqcloud.com/blog/note/image-20230709170456622.png) ### 7、超时消息 - 类型 11 - IP包中TTL字段值每经过一次路由就会减一,直到减到0时包就会被丢弃,此时IP路由器将会发送一个ICMP的超时消息给发送端主机 ![image-20230709170710061](https://blog-heysq-1255479807.cos.ap-beijing.myqcloud.com/blog/note/image-20230709170710061.png) ### 8、回送消息 - 类型 0或8 - 用于进行通信的主机或路由器之间,判断所发送的数据包是否已经成功到达对端 - 可以相对端主机发送会送请求的消息(ICMP Echo Request Message 类型 8),也可以接受对端主机发回来的回送应答消息(ICMP Echo Reply Mesage 类型 0) - ping 命令就是利用ICMP实现的 TODO ![image-20230709171124972](https://blog-heysq-1255479807.cos.ap-beijing.myqcloud.com/blog/note/image-20230709171124972.png) ### 9、ICMPv6 - 没有ICMPv6,IPv6网络就无法通信 - 整合了ARP和ICMP重定向以及ICMP路由器选择消息等功能于一体,甚至还提供自动设置IP地址的功能 - 一类是错误消息,另一类是信息消息 - 错误消息 0-127 - 信息消息 128-255 ![image-20230709171625663](https://blog-heysq-1255479807.cos.ap-beijing.myqcloud.com/blog/note/image-20230709171625663.png) ![image-20230709171636369](https://blog-heysq-1255479807.cos.ap-beijing.myqcloud.com/blog/note/image-20230709171636369.png) ### 10、ICMPv6 探索消息 - 类型133-127 - 用于查询IPv6的地址与MAC地址对应关系,并由邻居宣告消息得知MAC地址 - 利用IPv6多播地址实现传输 ![image-20230709172007397](https://blog-heysq-1255479807.cos.ap-beijing.myqcloud.com/blog/note/image-20230709172007397.png)