recvfrom 无法接收 icmp 差错数据包_麻雀虽小,必不可少ICMP

8d375a0a5908dc9d16c23a3cd915de67.png

PART1

Wish you were here!

ICMP简介

ICMP(Internet Control Message Protocol),中文名为网络控制报文协议,它是TCP/IP协议族的一个子协议,归属于网络层协议。ICMP协议是一种面向无连接的协议,用于传输出错报告控制信息,包括报告错误、交换受限控制和状态信息等当遇到IP数据无法访问目标、IP路由器无法按当前的传输速率转发数据包等情况时,会自动发送ICMP消息。因此,它是一个非常重要的协议,对于网络安全具有极其重要的意义。ICMP用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。可以说,ICMP 是个非常有用的协议﹐尤其是当我们要对网路连接状况进行判断的时候。

a9de2d0774ecdd930b9205a825148e17.png 8d375a0a5908dc9d16c23a3cd915de67.png

PART2

Wish you were here!

ICMP的主要功能

ICMP提供了一致易懂的出错报告信息,它将发送的出错报文返回到发送原数据的设备,因为只有发送设备才是出错报文的逻辑接受者。发送设备随后可根据ICMP报文 确定发生错误的类型,并确定如何才能更好地重发失败的数据包。但是ICMP唯一的功能是报告问题而不是纠正错误,纠正错误的任务由发送方完成。

从技术角度来说,ICMP就是一个“错误侦测与回报机制”,其目的就是让我们能够检测网路的连线状况﹐也能确保连线的准确性﹐其功能主要有:
· 侦测远端主机是否存在。
· 建立及维护路由资料。
· 重导资料传送路径(ICMP重定向)。
· 资料流量控制。ICMP在沟通之中,主要是透过不同的类别(Type)与代码(Code) 让机器来识别不同的连线状况。

a9de2d0774ecdd930b9205a825148e17.png 8d375a0a5908dc9d16c23a3cd915de67.png

PART3

Wish you were here!

ICMP报文格式

ICMP报文有一个8字节长的报头,其中前4个字节是固定的格式,包含8位类型字段,8位代码字段和16位的校验和;后4个字节根据ICMP报文的类型而取不同的值。

9e624d6522df18559ee0614f516185bf.png

·代码 : 进一步区分某种类型中的几种不同情况。
·检验和 : 用于检验整个ICMP报文。但是IP首部检验和并不检验IP数据报的内容,因此不能保证经过传输的ICMP报文不产生差错。
ICMP报文装在IP数据报中,但是它不是高层协议,而是IP层协议。

ICMP 报文的种类有两种,即 ICMP 差错报告报文 ICMP 询问报文。 
ICMP 报文的前 4 个字节是统一的格式,共有三个字段:即类型、代码和检验和。接着的 4 个字节的内容与 ICMP 的类型有关。
ICMP 差错报告报文共有 5 种:
1.终点不可达
2.源点抑制(Source quench)
3.时间超过 : 生存时间减为0时。
4.参数问题 : 数据报首部字段出错。
5.改变路由(重定向)(Redirect) :让主机知道下次应该将数据报发送给另外的路由(可通过更好的路由)。
不应发送 ICMP 差错报告报文的几种情况 :
1.对 ICMP 差错报告报文不再发送 ICMP 差错报告报文。
2.对第一个分片的数据报片的所有后续数据报片都不发送 ICMP 差错报告报文。
3.对具有多播地址的数据报都不发送 ICMP 差错报告报文。
4.对具有特殊地址(如127.0.0.0 或 0.0.0.0)的数据报不发送 ICMP 差错报告报文。

ICMP 询问报文有两种:
1.回送请求和回答报文 :主机或路由器向特定目的主机发出询问,收到此报文的主机必须发送ICMP回送回答报文。可用于测试目的站是否可达以及了解其有关状态。
2.时间戳请求和回答报文 : 请求某台主机或路由器回答当前的日期和时间,可用于时钟同步和时间测量。

下面的几种 ICMP 报文不再使用:
1.信息请求与回答报文
2.掩码地址请求和回答报文
3.路由器询问和通告报文

8d375a0a5908dc9d16c23a3cd915de67.png

PART4

Wish you were here!

ICMP风险与防范

我们在网络中经常会使用到ICMP协议,而ICMP协议本身的特点决定了它非常容易被用于攻击网络上的路由器和主机。比如我们经常使用的用于检查网络通不通的Ping命令(Linux和Windows中均有),这个“Ping”的过程实际上就是ICMP协议工作的过程。还有其他的网络命令如跟踪路由的Tracert命令也是基于ICMP协议的。例如,可以利用操作系统规定的ICMP数据包最大尺寸不超过64KB这一规定,向主机发起“死亡之Ping”攻击。攻击的原理是:如果ICMP数据包的尺寸超过64KB上限时,主机就会出现内存分配错误,导致TCP/IP堆栈崩溃,致使主机死机。

此外,向目标主机长时间、连续、大量地发送ICMP数据包,也会最终使系统瘫痪。大量的ICMP数据包会形成“ICMP风暴”,使得目标主机耗费大量的CPU资源处理,耗费系统资源。
对于“Ping of Death”攻击,可以采取两种方法进行防范:第一种方法是在路由器上对ICMP数据包进行带宽限制,将ICMP占用的带宽控制在一定的范围内,这样即使有ICMP攻击,它所占用的带宽也是非常有限的,对整个网络的影响非常少;第二种方法就是在主机上设置ICMP数据包的处理规则,最好是设定拒绝所有的ICMP数据包。
虽然ICMP协议给黑客以可乘之机,但是ICMP攻击也并非无药可医。只要在日常网络管理中未雨绸缪,提前做好准备,就可以有效地避免ICMP攻击造成的损失。

8d375a0a5908dc9d16c23a3cd915de67.png

PART5

Wish you were here!

ICMP工作原理

我们在网络中经常会使用到ICMP协议,比如我们经常使用的用于检查网络通不通的Ping命令(Linux和Windows中均有),这个“Ping”的过程实际上就是ICMP协议工作的过程。还有其他的网络命令如跟踪路由的Tracert命令也是基于ICMP协议的。

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

3a852a90d28004ffa540d453e0837d67.gif 5c07c8c191181d5ecedf6e33e71f360f.png

听说你会喜欢我呦~~~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值