网络控制报文协议

  • 格式:pdf
  • 大小:212.99 KB
  • 文档页数:3

6-3 ICMP 协议

ICMP:Internet Control Message Protocol,网络控制报

文协议。 对于 TCP/IP 协议,我们都非常熟悉,是对于 ICMP 协议,可

能了解的就很有限了。ICMP 协议是一个非常重要的协议,它对于

网络安全具有极其重要的意义。它是 TCP/IP 协议族中的一个子协

议,属于网络层协议,主要用于在主机与路由器之间传递控制信息,

包括报告错误、交换受限控制和状态信息等。当遇到 IP 数据无法 访问目标、IP 路由器无法按当前的传输速率转发数据包等情况

时,会自动发送 ICMP 消息。我们可以通过 Ping 命令发送 ICMP

回应请求消息并记录收到 ICMP 回应回复消息。通过这些消息来对

网络或主机的故障提供参考依据。 我们在网络中经常会使用到 ICMP 协议,只不过我们觉察不到 而已。比如我们经常使用的用于检查网络通不通的 Ping 命令(L inux 和 Windows 中均有),这个“Ping”的过程实际上就是 ICM

P 协议工作的过程。还有其他的网络命令,如:跟踪路由的“tra

cert”命令也是基于 ICMP 协议的。

ICMP 协定内容及功能: 从技术角度来说,ICMP 就是一个“错误侦测与回报机制”,

其目的就是让我们能够检测网路的连线状况﹐也能确保连线的准

确性﹐其功能主要有: 1.侦测远端主机是否存在。

2.建立及维护路由资料。 3.重导资料传送路径。

4.资料流量控制。

ICMP 在沟通之中,主要是透过不同的类别(Type)与代码(Cod

e) 让机器来识别不同的连线状况。下面让我们看看常用的 ICMP

实例,以更好了解 ICMP 的功能与作用。 ICMP 的重要性:

ICMP 协议对于网络安全具有极其重要的意义。ICMP 协议本身

的特点决定了它非常容易被用于攻击网络上的路由器和主机。19 99 年 8 月海信集团“悬赏”50 万元人民币测试防火墙的过程中,

其防火墙遭受到的来自 ICMP 攻击的达 334050 次之多,占整个攻 击总数的 90%以上!可见,ICMP 的重要性绝不可以忽视! 比如,可以利用操作系统规定的 ICMP 数据包最大尺寸不超过

64KB 这一规定,向主机发起“Ping of Death”(死亡之 Ping)

攻击。“Ping of Death” 攻击的原理是:如果 ICMP 数据包的

尺寸超过 64KB 上限时,主机就会出现内存分配错误,导致 TCP/I P 堆栈崩溃,致使主机死机。(现在的操作系统已经限制了发送 I

CMP 数据包的大小,解决了这个漏洞)

此外,向目标主机长时间、连续、大量地发送 ICMP 数据包, 也会最终使系统瘫痪。大量的 ICMP 数据包会形成“ICMP 风暴”,

使得目标主机耗费大量的 CPU 资源处理,疲于奔命。

如何应对 ICMP 攻击: 虽然 ICMP 协议给黑客以可乘之机,但是 ICMP 攻击也并非无

药可医。只要在日常网络管理中未雨绸缪,提前做好准备,就可

以有效地避免 ICMP 攻击造成的损失。 对于“Ping of Death”攻击,可以采取两种方法进行防范:

第一种方法是在路由器上对 ICMP 数据包进行带宽限制,将 ICMP 占用的带宽控制在一定的范围内,这样即使有 ICMP 攻击,它所占

用的带宽也是非常有限的,对整个网络的影响非常少;第二种方

法就是在主机上设置 ICMP 数据包的处理规则,最好是设定拒绝所

有的 ICMP 数据包。

设置ICMP 数据包处理规则的方法也有两种,一种是在操作系统上 设置包过滤,另一种是在主机上安装防火墙。

IP 层的差错控制的特点: ICMP 协议设计的最初目的主要是用于IP 层的差错报告,由路由

器或信宿机以一对一的模式向信源机报告发生传输错误的原因。ICM P 与IP 协议位于同一个层次(IP 层),但ICMP 报文是封装在IP 数

据报的数据部分进行传输的。它并不作为一个独立的层次,而只是作

为IP 层的一部分。ICMP 协议是对IP 协议的补充。用于IP 层的差错 报告、拥塞控制、路径控制以及路由器或主机信息获取。 1、IP 层解决的主要是信宿不可达的问题。由于信宿机本身不可

达,使得信宿机无法直接参与控制,所以要想通过端到端的方式来解

决不太现实; 2、IP 层仅仅涉及与路径和可达相关的差错问题,而不解决数据 本身的差错问题; 3、IP 层的差错与控制有一个独立的协议ICMP 完成,IP 协议不

负责完成差错与控制功能。 4、控制是建立在对信息了解的基础上的,在ICMP 中控制方可以

通过主动与被动两种方式了解信息:主动方式向对象发出询问,被动 方式则是被动接收对象所报告的信息。

ICMP 报文可以分为三大类:差错报告、控制报文、请求应答报 文。

ICMP 差错报告部分弥补了IP 协议的不可靠问题。特点如下: 1.只报告差错,但不负责纠正错误,纠错工作留给高层协议处理;

2.发现错误的设备只向信源机报告差错;

3.差错报告作为一般数据传输,不享受特别的优先级和可靠性;

4.产生ICMP 差错报告的同时,会丢弃出错的IP 数据报。 形成ICMP 差错报告时有一个例外: 1.ICMP 差错报文本身不会再产生ICMP 差错报告;

2.分片报文的非第一个分片不会产生ICMP 差错报告; 3.组播地址报文不会产生ICMP 差错报告;

4.特殊地址127.0.0.0 和0.0.0.0 的报文不会产生ICMP 差错报

告;

信宿不可达报告:当一个路由器检测出一个数据报不能发往它的

目的地时,路由器发送一个目的地不可达的信息。 数据超时报告(TTL):当一个路由器将一个数据报的寿命字段

的值减为零时,路由器放弃该数据报并发送一个超时信息;当一台主

机对某一个数据报的重组时间截止时,而该数据报的分片还没有全部

到达,主机放弃分片并发送一个超时信息。

数据报参数错报告(MTU,要求分段):如果路由器收到一个不 允许分片的数据报,而它又大于必须经过的转发网络的MTU,则路由

器放弃数据报,发送一个分片请求信息。 ICMP 控制报文

源抑制报文:当路由器收到大多的数据报以致没有足够的缓冲区

来处理时,路由器放弃到达的额外数据报,使用ICMP 源站抑制报文 向初始源网点报告拥塞,并请求它减慢目前的数据报发送速率。

重定向:当路由器检测到一台主机使用非优化路由时,它向该主

机发送一个重定向的ICMP 报文,请求该主机改变路由并把初始数据

报向它的目的站转发。 ICMP 请求与应答报文 回应请求与应答报文:一个回应请求信息能够送到任意计算机的 ICMP 软件。为了响应一个回应请求,ICMP 软件需要发送一个ICMP 回

应应答信息,应答和请求传递相同的数据。

时间戳请求和应答报文

地址掩码请求与应答报文:ICMP 地址掩码请求用于无盘系统在 引导过程中获取自己的子网掩码,系统广播它的ICMP 请求报文,收

到请求的路由器发送一个包含该计算机所在网络的32 位掩码的应

答。(这一过程与无盘系统在引导过程中用RARP 获取IP 地址是类似

的)。无盘系统获取子网掩码的另一个方法是BOOTP 协议。