ICMP是(Internet Control Message Protocol)Internet控制报文协议,它是TCP/IP协议簇的一个子协议,用于在IP主机、路由器之间传递控制消息,控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。

1.ICMP是什么协议

 

ICMP是(Internet Control Message Protocol)Internet控制报文协议。它是TCP/IP协议簇的一个子协议,用于在IP主机、路由器之间传递控制消息。于网络层协议
 

控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。
在Internet没有形成之前,世界各地已经建立了很多小型网络,但这些网络存在不同的网络结构和数据传输规则,要将它们连接起互相通信,就好比要让使用不同语言的人们交流一样,需要建立一种大家都听得懂的语言,而TCP/IP就能实现这个功能,它就好比Internet上的“世界语”。
 

网络层位于物联网三层结构中的第二层,其功能为“传送”,即通过通信网络进行信息传输。网络层作为纽带连接着感知层和应用层。
 

它由各种私有网络、互联网、有线和无线通信网等组成,相当于人的神经中枢系统,负责将感知层获取的信息,安全可靠地传输到应用层,然后根据不同的应用需求进行信息处理。

 

ICMP是什么协议

(图片来源于互联网)

 

2.ICMP协议的作用与原理


回送或回送响应:我们使用一个ICMPECHO数据包来探测主机地址是否存活(当然在主机没有被配置为过滤ICMP形式),通过简单的发送一个ICMPECHO (Type 8)数据包到目标主机,如果ICMPECHOReply(ICMPtype0)数据包接受到,说明主机是存活状态。如果没有就可以初步判断主机没有在线或者使用了某些过滤设备过滤了ICMP的REPLY。这种机制就是我们通常所用的ping命令来检测目标主机是否可以ping到。

 

回送消息的源地址是回送响应消息的目的地址。若要形成一个回送响应消息,应该将源和目的地址交换,将类型代码更改为0,重新计算机校验码。

 

校验码:16位数据(从ICMP类型开始)的反码和再取反而得。为计算校验码,校验码域应该为零。这些零在以后会被校验码取代。

 

Internet包头+64位源数据报数据:Internet包头加上源数据的头64位而得。此数据用于主机匹配信息到相应的进程。如果高层协议使用端口号,应该假设其在源数据的头64个字节之中。

 

说明:如果网关在处理数据报时发现生存周期域为零,此数据报必须抛弃。网关同时必须通过超时信息通知源主机。如果主机在组装分段的数据报时因为丢失段未能在规定时间内组装数据。

 

ICMP协议的作用与原理

(图片来源于互联网)

 

3.ICMP协议特点


 

ICMP协议对于网络安全具有极其重要的意义。ICMP协议本身的特点决定了它非常容易被用于攻击网络上的路由器和主机。例如,在1999年8月海信集团"悬赏"50万元人民币测试防火墙的过程中,其防火墙遭受到的ICMP攻击达334050次之多,占整个攻击总数的90%以上!可见,ICMP的重要性绝不可以忽视!
 

比如,可以利用操作系统规定的ICMP数据包最大尺寸不超过64KB这一规定,向主机发起"Ping of Death"(死亡之Ping)攻击。"Ping of Death" 攻击的原理是:如果ICMP数据包的尺寸超过64KB上限时,主机就会出现内存分配错误,导致TCP/IP堆栈崩溃,致使主机死机。(操作系统已经取消了发送ICMP数据包的大小的限制,解决了这个漏洞)
 

此外,向目标主机长时间、连续、大量地发送ICMP数据包,也会最终使系统瘫痪。大量的ICMP数据包会形成"ICMP风暴",使得目标主机耗费大量的CPU资源处理,疲于奔命。

 

ICMP协议特点

(图片来源于互联网)