ICMP依靠IP协议来完成其任务,通常也是IP协议的一个集成部分.和传输层协议如TCP和UDP的目的不同,它一般并不用来在端系统之间来传送数据.它通常不被用户网络程序直接使用,例外的情况是像Ping和tracert这样的诊断程序.
IPv4版本的ICMP也被称作ICMPv4,IPv6中也有对应的版本IPv6.
ICMP协议 - 什么是ICMP协议
ICMP是“Internet Control Message Protocol”(Internet控制消息协议)的缩写。它是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。
我们在网络中经常会腊弯使用到ICMP协议,只不过我们觉察不到而已。比如我们经常使用的用于检查网络通不通的Ping命令,这个“Ping”的过程实际上就是ICMP协议工作的过程。还有其他的网络命令如跟踪路由的Tracert命令也是基于ICMP协议的。
ICMP协议 - ICMP协议格式
ICMP报文类型
ICMP报文大体可以分为两种类型,即ICMP差错报文和ICMP询问报文。但细分又可分为很多类型,如表1所示。
表一 ICMP报文类型
ICMP回射请求和应答报文头部格式
ICMP报文被封装在IP数据报内部传输。如图1所示,是ICMP回射请求和应答报文头部格式。
图1 ICMP回射请求和应答报文头部格式
各种ICMP报文的前32bits都一样,它们是:
8bits类型和8bits代码字段:一起决定了ICMP报文的类型。常见的有:
类型8、代码0:回射请求。
类型0、代码0:回射应答。
类型11、代码0:超时。
16bits校验和字段:包括数据在内的整个ICMP数据包的校验和,其计算方空局樱法和IP头部校验和的计算方法是一样的。
对于ICMP回射请求和应答报文来说,接下来是16bits标识符字段:用于标识本ICMP进程。
最后是16bits序列号字段:用于判断回射应答数据报。
2.3 ICMP目标不可达报文
如图2所示,是ICMP目标不可达报文头部格式。
图2 ICMP目标不可达报文头部格式
其中代码字段的不同值又代表不同的含义,如,0代表网络不可达、1代表主机不可达等,见表1。
2.4 ICMP超时报文头部格式
如图3所示,是ICMP超时报文头部格式。
图3 ICMP超时报文头部格式
其中:
类型11+代码0:表示传输期间生存时间为0。
类型11+代码1:表示数据报组装期间生存时间为0。
由于篇幅有限,这里不再分析其他类型ICMP协议数据包的格式。
ICMP协议 - 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风暴”,使得目标主机耗费大量的CPU资源处理,疲于奔命。
ICMP协议 - 应对ICMP攻击
虽然ICMP协议给黑客以可乘之机,但是ICMP攻击也并非无药可医。只要在日常网络管理中未雨绸缪,提前做好准备,就可以有效地避免ICMP攻击造成的损失。
对于“Ping of Death”攻击,可以采取两种方法进行防范:第一种方法是在路由器上对ICMP数据包进行带宽限制,将ICMP占用的带宽控制在一定的范围内,这样即使有ICMP攻击,它所占用的带宽也是非常有限的,对整个网络的影响非常少;第二种方法就是在主机上设置ICMP数据包的处理规则,最好是设定拒绝所有的ICMP数据包。
设置ICMP数据包处理规则的方法也有两种,一种是在 *** 作系统上设置包过滤,另一种是在主机上安装防火墙。具体设置如下:
1.在Windows 2000 Server中设置ICMP过滤
Windows 2000 Server提供了“路由与远程访问”服务,但是默认情况下是没有启动的,因此首先要启动它:点击“管理工具”中的“路由与远程访问”,启动设置向导。在其中选择“手动配置服务器”项,点击【下一步】按钮。稍等片刻后,系统会提示“路由和远程访问服务现在已被安装。要开始服务吗?”,点击【是】按钮启动服务。
服务启动后,在计算机名称的分支下会出现一个“IP路由选择”,点击它展开分支,再点击“常规”,会在右边出现服务器中的网络连接(即网卡)。用鼠标右键点击你要配置的网络连接,在d出的菜单中点击“属性”,会d出一个网络连接属性的窗口,如图1所示。
图1
图1中有两个按钮,一个是“输入筛选器”(指对此服务器接受的数据包进行筛选),另一个是“输出筛选器”(指对此服务器发送的数据包进行筛选),这里应该点击【输入筛选器】 按钮,会d出一个“添加筛选器”窗口,再点击【添加】按钮,表示要增加一个筛选条件。
在“协议”右边的下拉列表中选择“ICMP”,在随后出现的“ICMP类型”和“ICMP编码”中均输入“255”,代表所有的ICMP类型及其编码。ICMP有许多不同的类型(Ping就是一种类型),每种类型也有许多不同的状态,用不同的“编码”来表示。因为其类型和编码很复杂,这里不再叙述。
点击【确定】按钮返回“输入筛选器”窗口,此时会发现“筛选器”列表中多了一项内容(如图2所示)。点击【确定】按钮返回“本地连接”窗口,再点击【确定】按钮,此时筛选器就生效了,从其他计算机上Ping这台主机就不会成功了。
图2
2. 用防火墙设置ICMP过滤
现在许多防火墙在默认情况下都启用了ICMP过滤的功能。如果没有启用,只要选中“防御ICMP攻击”、“防止别人用ping命令探测”就可以了,如图3所示。
ICMP是(Internet Control Message Protocol)Internet控制报文协议。它是TCP/IP协议簇的一个子协议,用于在IP主机、路由器之间传递控制消息。
ICMP原理:ICMP提供一致易懂的出错报告信息。发送的出错报文返回到发送原数据的设备,因为只有发送设备才是出错报文的逻辑接受者。发送设备随后可根据ICMP报文确定发生错误的类型,并确定如何才能更好地重发失败的数据报,但是ICMP唯一的功能是报告问题而不是纠正错误,纠正错误的春乱任务由发送方完成。
发展历史
在Internet没有形成之前,世界各地已经建立了很多小型网络,但这些网络存在不同的网络结构和数据传输规则,迹肢要将它们连接起来互相通信,就好比要让使用不同语言的人们交流一样,需要建立一种大家都听得懂的语言,而TCP/IP就能实现这个功能,它就好比Internet上的“世界语”。
网姿森世络层位于物联网三层结构中的第二层,其功能为“传送”,即通过通信网络进行信息传输。网络层作为纽带连接着感知层和应用层,它由各种私有网络、互联网、有线和无线通信网等组成,相当于人的神经中枢系统,负责将感知层获取的信息,安全可靠地传输到应用层,然后根据不同的应用需求进行信息处理。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)