🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
CSDN lidp    [http://blog.csdn.net/perfectpdl](http://blog.csdn.net/perfectpdl) 前面文章了解了ip路由是怎样安排路由器转发数据报来提供可靠的无连接数据报交付服务,数据报从一个路由器传到另一个路由器,直到数据报到达某个能直接交付到最终目的的路由器,但问题是如果路由器不能选择路由或交付数据报,或者他检测到影响他发送的异常条件,则需要通知最初的源站采取措施避免或纠正问题,ICMP协议应运而生。 当目的机器临时或永久断链,寿命计数器超时或者中间路由器堵塞得无法处理传入的通信量时,ip都无法交付数据报,为了让互联网中的路由器报告错误或提供有关意外情况的信息,设计人员在TCP/IP中加入了网际控制报文协议ICMP,是IP的一部分,并且在每个IP实现中都必须包含他。 ICMP报文是放在IP数据报的数据部分中通过互联网传递的,icmp报文的最终处理着不是应用程序,而是该机器上处理他的网际协议的软件模块,即ICMP协议提供了两台机器上TCP/IP 协议软件间通信的方法。 需要注意的是,当数据报产生差错时,ICMP只能向数据报的最初源站回报差错情况。 总结: icmp 协议为路由器和主机提供了正常情况以外的通信,他是ip的一个完整的必要组成部分,icmp包框降低传输速率的源站抑制,请求主机改变选路表的重定向报文以及主机可用来决定目的站是否可达的回送请求/应答报文(Ping),ICMP报文是在ip数据报的数据段中传输的,并且在报文开头有三个固定长度的字段:ICMP类型(type)字段,代码(code)字段及ICMP校验和字段。