ICMP是“Internet Control Message Ptotocol”(Internet控制消息协议)的缩写。它是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。
在网络中经常会使用到ICMP协议。例如经常用于检查网络不通的ping命令,这个ping的过程实际上就是ICMP协议工作的过程。还有跟踪路由的trancert命令也是基于ICMP协议的。
操作系统规定的ICMP数据包最大尺寸不超过64KB。通常利用这一规定进行主机攻击。即Ping of Death攻击。它的原理是:如果ICMP数据包的尺寸超过64KB上限时,主机就会出现内存分配错误,导致TCP/IP堆栈崩溃,致使主机死机。
此外,向目标主机长时间、连续、大量地发送ICMP数据包,也会最终使系统瘫痪。大量的ICMP数据包会形成ICMP风暴,使得目标主机耗费大量的CPU资源处理,疲于奔命。
ping.exe的原理:向指定的IP地址发送一定长度的数据包,按照约定,若指定IP地址存在的话,会返回同样大小的数据包,当然,若在特定时间内没有返回,就是“超时”,会被认为指定的IP地址不存在。由于ping使用的是ICMP协议,有些防火墙软件会屏蔽ICMP协议,所以有时候ping的结果只能作为参考,ping不通并不一定说明对方IP不存在。
IPSec安全策略防ping原理:通过新建一个IPSec策略过滤本机所有的ICMP数据包,这样确实可以有效地防ping,但同时也会留下后遗症。因为ping命令和ICMP协议有着密切的关系。在ICMP协议的应用中包含11种报文格式,其中ping命令就是利用ICMP协议中的“Echo Request”报文进行工作的。
一般在某些有特殊应用的局域网环境中,容易出现数据包丢失的现象,影响用户正常办公,因此建议使用防火墙。