ICMP

网络1...网络2
...|.......|
...A.......B
...|.......|
....-------
.......|
.......Me

A
B两台路由器连接着我, 他们又分别连接了网络1和网络2.
,我竟然认为到达网络1经过路由器B到达最近了, 于是发包给路由器B, 别忘了, 路由器B上可是有路由表的, 发现, dammit, 应该走Router A, 于是路由器就将我发的那个包丢弃, 并发送ICMP重定向消息(Type=5), 告诉我:"老大, 发包给Router A".
对于这个ICMP重定向,最好在路由器上关闭, 使用端口配置命令"no ip redirects".

ICMPICMP

英文原义:Internet Control Message Protocol

中文释义:(RFC-792Internet控制消息协议

注解:该协议是TCP/IP协议集中的一个子协议,属于网络层协议,主要用于在主机与路由器之间传递控制信息,包括报告错误、交换受限控制和状态信息等。 当遇到IP数据无法访问目标、IP路由器无法按当前的传输速率转发数据包等情况时,会自动发送ICMP消息。我们可以通过Ping命令发送ICMP回应请 求消息并记录收到ICMP回应回复消息,通过这些消息来对网络或主机的故障提供参考依据。

    用:要使用该协议,我们可以进行相应的ICMP设置,比如在Windows XP中,首先打开网络连接,右键单击启用Internet连接防火墙的网络连接,选择属性打开属性窗口。接着,选择高级选项卡,单击右下 角设置按钮。然后,在高级设置窗口中选择“ICMP”选项卡,在其中就可以进行相应的设置,包括允许传入的回显请求等。


ICMP
“Internet Control Message Protocol”Internet控制消息协议)的缩写。它是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是 指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。
我们在网络中经常会使用到ICMP协议,只不过我们觉察不到而已。比如我们经常使用的用于检查网络通不通的Ping命令,这个“Ping”的过程实际上就是ICMP协议工作的过程。还有其他的网络命令如跟踪路由的Tracert命令也是基于ICMP协议的。

ICMP
的重要性

ICMP
协议对于网络安全具有极其重要的意义。ICMP协议本身的特点决定了它非常容易被用于攻击网络上的路由器和主机.

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

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

应对ICMP攻击

虽然ICMP协议给黑客以可乘之机,但是ICMP攻击也并非无药可医。只要在日常网络管理中未雨绸缪,提前做好准备,就可以有效地避免ICMP攻击造成的损失。

对于“Ping of Death”攻击,可以采取两种方法进行防范:第一种方法是在路由器上对ICMP数据包进行带宽限制,将ICMP占用的带宽控制在一定的范围内,这样即使 有ICMP攻击,它所占用的带宽也是非常有限的,对整个网络的影响非常少;第二种方法就是在主机上设置ICMP数据包的处理规则,最好是设定拒绝所有的 ICMP数据包。

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

ICMPICMP

ICMP全称Internet Control Message Protocol(网际控制信息协议)。提起ICMP,一些人可能会感到陌生,实际上,ICMP与我们息息相关。在网络体系结构的各层次中,都需要控制, 而不同的层次有不同的分工和控制内容,IP层的控制功能是最复杂的,主要负责差错控制、拥塞控制等,任何控制都是建立在信息的基础之上的,在基于IP数据 报的网络体系中,网关必须自己处理数据报的传输工作,而IP协议自身没有内在机制来获取差错信息并处理。为了处理这些错误,TCP/IP设计了ICMP 议,当某个网关发现传输错误时,立即向信源主机发送ICMP报文,报告出错信息,让信源主机采取相应处理措施,它是一种差错和控制报文协议,不仅用于传输 差错报文,还传输控制报文。

二、ICMP报文格式

ICMP
报文包含在IP数据报中,属于IP的一个用户,IP头部就在ICMP报文的前面,所以一个ICMP报文包括IP头部、ICMP头部和ICMP报文 (见图表,ICMP报文的结构和几种常见的ICMP报文格式),IP头部的Protocol值为1就说明这是一个ICMP报文,ICMP头部中的类型 Type)域用于说明ICMP报文的作用及格式,此外还有一个代码(Code)域用于详细说明某种ICMP报文的类型,所有数据都在ICMP头部后面。 RFC定义了13ICMP报文格式,具体如下:

类型代码 类型描述

0
响应应答(ECHO-REPLY
3
不可到达
4
源抑制
5
重定向
8
响应请求(ECHO-REQUEST
11
超时
12
参数失灵
13
时间戳请求
14
时间戳应答
15
信息请求(*已作废)
16
信息应答(*已作废)
17
地址掩码请求
18
地址掩码应答

其中代码为1516的信息报文已经作废。

下面是几种常见的ICMP报文:

1.
响应请求
ICMP


我们日常使用最多的ping,就是响应请求(Type=8)和应答(Type=0),一台主机向一个节点发送一个Type=8ICMP报文,如果途中没 有异常(例如被路由器丢弃、目标不回应ICMP或传输失败),则目标返回Type=0ICMP报文,说明这台主机存在,更详细的tracert通过计算 ICMP报文通过的节点来确定主机与目标之间的网络距离。

2.
目标不可到达、源抑制和超时报文

这三种报文的格式是一样的,目标不可到达报文(Type=3)在路由器或主机不能传递数据报时使用,例如我们要连接对方一个不存在的系统端口(端口号小于 1024)时,将返回Type=3Code=3ICMP报文,它要告诉我们:嘿,别连接了,我不在家的!,常见的不可到达类型还有网络不可到达 Code=0)、主机不可到达(Code=1)、协议不可到达(Code=2)等。源抑制则充当一个控制流量的角色,它通知主机减少数据报流量,由于 ICMP没有恢复传输的报文,所以只要停止该报文,主机就会逐渐恢复传输速率。最后,无连接方式网络的问题就是数据报会丢失,或者长时间在网络游荡而找不 到目标,或者拥塞导致主机在规定时间内无法重组数据报分段,这时就要触发ICMP超时报文的产生。超时报文的代码域有两种取值:Code=0表示传输超 时,Code=1表示重组分段超时。

3.
时间戳

时间戳请求报文(Type=13)和时间戳应答报文(Type=14)用于测试两台主机之间数据报来回一次的传输时间。传输时,主机填充原始时间戳,接收方收到请求后填充接收时间戳后以Type=14的报文格式返回,发送方计算这个时间差。一些系统不响应这种报文。

 

其实在OSI/RM模型中,每一层都具有控制和差错校验功能,物理层考虑的是比特控制,数据链路层视线的是帧的差错和流量控制,而传输层则是实现端到端的报文的差错与流量控制。
当然,我讲的有的教材不会这么说,不过你在考试中只要记住在数据链路层实现差错和流量控制即可,特别是三级网络了。呵呵!
如果把它和TCP/IP相比的话,后者就简单得多了,它只强调网络接口层的差错和流量控制功能,其他都不考虑了!
希望我写的对大家能有点帮助!

 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值