ICMP协议是“Internet Control Message Protocol”(Internet控制消息协议)的缩写。
它是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要作用。
在网络中经常会使用到ICMP协议,只不过察觉不到而已。比如经常使用的用于检查网络通不通的ping命令,这个“ping”的过程实际上就是ICMP协议工作的过程。还有其他的网络命令,如跟踪路由的Tracert命令也是基于ICMP协议的。
ICMP协议对于网络安全具有极其重要的意义。ICMP协议本身的特点决定了它非常容易被用于攻击网络上的路由器和主机。例如,在1999年8月某公司“悬赏”50万元测试防火墙的过程中,其防火墙遭受的ICMP攻击达334050次之多,占整个攻击总数的90%以上。可见ICMP的重要性决不可以忽视。
比如,可以利用操作系统规定的ICMP数据包最大尺寸不超过64k这一规定,向主机发起“Ping of Death”(死亡之Ping)攻击。其攻击原理就是:如果ICMP数据包的尺寸超过64k上限时,主机就会出现内存分配错误,导致TCP/IP堆栈崩溃,致使主机死机。
此外,向目标主机长时间、连续、大量地发送ICMP数据包,也会最终使系统瘫痪。大量的ICMP数据包会形成“ICMP风暴”,使目标主机耗费大量的CPU资源处理,疲于奔命。