ICMP是(Internet Control Message Protocol,Internet控制消息协议)是TCP/IP协议簇中的子协议,主要用于查询报文和差错报文。ICMP报文通常被IP层或更高层协议(TCP或UDP)使用;一些ICMP报文把差错报文返回给用户进程。通过IP包传送的ICMP信息主要用于涉及网络操作或错误操作的不可达信息。ICMP包发送是不可靠的,所以主机不能依靠接收ICMP包解决任何网络问题。
ICMP协议主要功能如下。
1.发现网络错误
可以发现某台主机或整个网络由于某些故障不可达。
2.通告网络拥塞
当路由器中缓存了太多数据包,由于传输速度无法达到它们的接收速度时,将会生成ICMP源结束信息。对于发送者,这些信息将会导致传输速度降低。当然,更多ICMP信息生成也将引起更多的网络拥塞。
3.协助解决故障
ICMP支持echo功能,即在两个主机间一个往返路径上发送一个数据包。ping是一种基于这种特性的通用网络管理工具,它将传输一系列的包,测量平均往返次数,并计算丢失百
分比。
4.通告超时
如果一个IP包的TTL降低到零,路由器就会丢弃此包,这时会生成一个ICMP包通告这一事实。TraceRoute是一个工具,它通过发送小TTL值的包及监视ICMP超时通告,可以显示网络路由。
其实在网络中经常会使用到ICMP协议,只不过大家觉察不到而已。比如经常使用的用于检查网络是否通的ping命令,这个ping的过程实际上就是ICMP协议工作的过程。还有其他的网络命令,如跟踪路由的tracert命令也是基于ICMP协议的。
ICMP协议对于网络安全具有极其重要的意义。ICMP协议本身的特点决定了它非常容易被用于攻击网络上的路由器和主机,它可以利用操作系统规定的ICMP数据包最大尺寸不超过64KB这一规定,向主机发起Ping of Death(死亡之ping)攻击。