icmp是什么协议?ICMP(Internet Control Message Protocol)是互联网控制信息协议的英文缩写,其作用是用于发送差错和控制信息。
我们知道,互联网络由于其自身的复杂性,很容易出现传输错误。但不管是线路或设备问题,还是系统拥塞而造成的TTL值超时、目的主机不可达,ICMP都可以在第一时间内向数据包的发送方通告差错报告。ICMP协议在诞生初期只是为了向IP层提供数据包在传输过程中所出现错误的及时报告。
随着互联网络的发展,它已不仅仅局限于错误通告,在错误控制方面,也有了相应的功能。ICMP协议的错误控制功能虽然不如TCP强大,但其也具有一定的实用性。ICMP协议的主要功能如下。
● 向发送方通告目的主机不可达。
● 数据包的流量控制。
● 确保路径的最短性。
● 检测环路。
● 通告错误的IP包头。
ICMP提供不可靠传输。ICMP虽然不是高层协议,但是它产生的数据却以IP包为载体进行封装,并在网络中传输。
ICMP协议的基本功能是网络错误通告,但是却不提供解决差错的处理方法。IP包的发送方收到一个ICMP网络错误通告后,必须与应用程序结合起来对通告的错误进行解决和处理。
ICMP网络错误通告的数据包包括目的端不可达通告、超时通告、参数错误通告等。
● 目的端不可达通告
路由器的主要功能是对IP数据包进行路由和转发,在操作过程中存在着失败的可能。失败的原因是多种多样的,如目的端硬件故障、路由器没有达到目的端的路径、目的端不存在等。
如果发生这些情况,路由器会向IP数据包的源端发送目的端不可达通告消息数据包,并丢弃出错的IP数据包。实际引起目的不可达错误的原因会以代码的形式通知发送数据的源端,如表1所示。
表1 目的端不可达通告代码字段对应表
网络不可达说明路由器选路出现了错误或数据包受到限制。主机不可达说明是目的主机的硬件错误或主机受到限制等,也有可能是目的主机的默认网关出现问题。协议、端口不可达说明协议错误和端口访问受到限制。
● 超时通告
路由器选路如果出现错误,会导致路由环路的产生,从而引起TTL值递减为0和定时器超时。若定时器到时,路由器或目的主机会将IP数据包丢弃,并向源端发送超时通告。
● 参数错误通告
如果IP数据包中某些字段出现错误,且错误非常严重,路由器会将其抛弃,并向源端发送参数错误通告。
ICMP控制信息包括拥塞控制和路径控制,通过它们可以实现IP层的控制功能。
● 拥塞控制
实际环境中,造成拥塞的原因一般是路由器的处理速度太慢,或者数据包的输入速度大于输出速度。拥塞不仅会使部分数据被路由器丢弃掉,还可能造成路由器系统的崩溃。
拥塞现象可能出现在互联网络中的一台路由器上,也可能出现在几台路由器上,甚至可能影响全网络的数据传输。TCP/IP协议通过发送ICMP源抑制信息包抑制源端主机的数据包的发送速率,从而使拥塞得到比较有效的控制。
拥塞控制是一项互联网络中的设备共同合作并完成的工作。拥塞控制功能对于无连接协议本身来说是一种强化和完善,而对于数据来说则是在不可靠传输的环境下提供了一种相对可靠的保障。
● 主机路径控制
互联网络中的一台主机是通过默认网关与其他IP网段上的主机或网络进行通信的。当源端主机以非最佳路径向初始网关发送数据包时,收到数据包的路由器会将其进行路由转发,同时会向源端主机发送ICMP重定向信息包,用来将最佳路径通告给源端主机。源端主机下一次发送数据时会以最佳路径进行数据传输。
以上讲述的几种类型的ICMP信息都是用于错误通告和拥塞控制的单向报文,ICMP还可以发送响应请求与应答消息、时钟请求与应答消息、子网掩码请求与应答消息等双向信息包实现一些基本的功能。响应请求与应答消息用于测试目的端是否可达;时钟请求与应答消息用于通信双方进行同步;子网掩码请求与应答消息用于相应的子网掩码确定不同子网。
ICMP在实际应用中主要完成以下几个任务。
● 通告目的端可达性
如果一台路由器不能转发数据包,它就会发送目的端不可达消息通告给发送数据包的一方。
● 通告缓冲区已满
如果路由器内存中的缓冲区已满,它就会发送源抑制消息控制拥塞的加剧。
● 通告跳数
一个数据包在发送出去时,会被分配一个跳数,来限制数据包经过的路由器数。如果在到达目的端之前跳数就超过了限制数,那么路由器会将其丢弃,同时会发送参数错误消息通告发送方数据包已被丢弃。
● ping命令的使用
当我们使用ping命令测试与目的主机的连通性时,路由器可以发送ICMP请求与应答消息检测互联网络上通信双方的连接性。
● traceroute命令的使用
使用traceroute可以寻找一个数据包经过互联网络时的路径,它同样是使用目的不可达消息。
985大学 211大学 全国院校对比 专升本