ICMP
ICMP原理
目录
【什么是ICMP】
【ICMP 协定内容】
【ICMP的重要性】
【ICMP校验和算法】
【应对ICMP攻击】
[编辑本段]
【什么是ICMP】
英文原义:Internet Control Message Protocol
中文释义:(RFC-792)Internet控制报文协议(网际控制报文协议)
对TCP/IP协议你一定非常熟悉,但是对ICMP协议你可能就一无所知了。ICMP协议是一个非常重要的协议,它对于网络安全具有极其重要的意义。
它是TCP/IP协议集中的一个子协议,属于网络层协议,主要用于在主机与路由器之间传递控制信息,包括报告错误、交换受限控制和状态信息等。当遇到IP数据无法访问目
标、IP路由器无法按当前的传输速率转发数据包等情况时,会自动发送ICMP消息。我们可以通过Ping命令发送ICMP回应请求消息并记录收到ICMP回应回复消息。通过这些消息来对网络或主机的故障提供参考依据
ICMP是“Internet Control Message Protocol”(Internet控制报文协议)的缩写。它是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。
我们在网络中经常会使用到ICMP协议,只不过我们觉察不到而已。比如我们经常使用的用于检查网络通不通的Ping命令(Linux和Windows中均有),这个“Ping”的过程实际上就是ICMP协议工作的过程。还有其他的网络命令如跟踪路由的Tracert命令也是基于ICMP协议的。
[编辑本段]
【ICMP 协定内容】
ICMP的全称是Internet Control Message Protocol 。从技术角度来说,ICMP就是一个“错误侦测与回报机制”,其目的就是让我们能够检测网路的连线状况﹐也能确保连线的准确性﹐其功能主要有:
·侦测远端主机是否存在。
·建立及维护路由资料。
·重导资料传送路径。
·资料流量控制。
ICMP常用类型
ICMP常用类型
ICMP在沟通之中,主要是透过不同的类别(Type)与代码(Code) 让机器来识别不同的连线状况。常用的类别如下表所列﹕
ICMP 是个非常有用的协定﹐尤其是当我们要对网路连接状况进行判断的时候。下面让我们看看常用的ICMP 实例,以更好了解ICMP 的功能与作用。
[编辑本段]
【ICMP的重要性】
ICMP协议对于网络安全具有极其重要的意义。ICMP协议本身的特点决定了它非常容易被用于攻击网络上的路由器和主机。例如,在1999年8月海信集团“悬赏”50万元人民币测试防火墙的过程中,其防火墙遭受到的ICMP攻击达334050次之多,占整个攻击总数的90%以上!可见,ICMP的重要性绝不可以忽视!
比如,可以利用操作系统规定的ICMP数据包最大尺寸不超过64KB这一规定,向主机发起“Ping of Death”(死亡之Ping)攻击。“Ping of Death” 攻击的原理是:如果I
CMP数据包的尺寸超过64KB上限时,主机就会出现内存分配错误,导致TCP/IP堆栈崩溃,致使主机死机。
此外,向目标主机长时间、连续、大量地发送ICMP数据包,也会最终使系统瘫痪。大量的ICMP数据包会形成“ICM P风暴”,使得目标主机耗费大量的CPU资源处理,疲于奔命。
[编辑本段]
【ICMP校验和算法】
unsigned short chksum(addr,len)
unsigned short *addr; /* 校验数据开始地址(注意是以2字节为单位)*/
int len; /* 校验数据的长度大小,以字节为单位*/
{
int sum = 0; /* 校验和*/
int nleft = len; /* 未累加的数据长度*/
unsigned short *p; /* 走动的临时指针,2字节为单位*/
unsigned short tmp = 0; /* 奇数字节长度时用到*/
while( nleft > 1)
{
sum += *p++; /* 累加*/
nleft -= 2;
}
if(nleft == 1) /* 奇数字节长度*/
{
其中两个主要的协议
*(unsigned char *)&tmp = *(&(unsigned char *)p); /* 将最后字节压如2字节的高位*/
sum += tmp;
}
sum += (sum >> 16) + (sum & 0xffff); /* 高位低位相加*/
sum += sum >> 16; /* 上一步溢出时,将溢出位也加到sum中*/
tmp = ~sum; /* 注意类型转换,现在的校验和为16位*/
return tmp;
}
[编辑本段]

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。