Chinaunix首页 | 论坛 | 博客
  • 博客访问: 12198
  • 博文数量: 59
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 610
  • 用 户 组: 普通用户
  • 注册时间: 2022-10-13 17:26
文章分类

全部博文(59)

文章存档

2023年(40)

2022年(20)

我的朋友

分类: 大数据

2023-04-11 19:48:10

为什么存在IP碎片

链路层具有{BANNED}最佳大传输单元MTU这个特性,它限制了数据帧的{BANNED}最佳大长度,不同的网络类型都有一个上限值。以太网的MTU是1500,你可以用 netstat -i 命令查看这个值。如果IP层有数据包要传,而且数据包的长度超过了MTU,那么层就要对数据包进行分片(fragmentation)操作,使每一片的长度都小于或等于MTU。

我们假设要传输一个UDP数据包,以太网的MTU为1500字节,一般IP首部为20字节,UDP首部为8字节,数据的净荷(payload)部分预留是1500-20-8=1472字节。如果数据部分大于1472字节,就会出现分片现象。

IP首部包含了分片和重组所需的信息:

Identification R DF MF fragment Offset

Identification:发送端发送的IP数据包标识字段都是一个唯一值,该值在分片时被复制到每个片中。

R:保留未用。

DF:Don’t Fragment,”不分片”位,如果将这一比特置1 ,IP层将不对数据报进行分片。

MF:More Fragment,”更多的片”,除了{BANNED}最佳后一片外,其他每个组成数据报的片都要把该比特置1。

Fragment Offset:该片偏移原始数据包开始处的位置。偏移的字节数是该值乘以8。

另外,当数据报被分片后,每个片的总长度值要改为该片的长度值。

每一IP分片都各自路由,到达目的主机后在IP层重组,请放心,首部中的数据能够正确完成分片的重组。你不禁要问,既然分片可以被重组,那么所谓的碎片攻击是如何产生的呢?

2. IP碎片攻击

IP首部有两个字节表示整个IP数据包的长度,所以IP数据包{BANNED}最佳长只能为0xFFFF,就是65535字节。如果有意发送总长度超过65535的IP碎片,一些老的系统内核在处理的时候就会出现问题,导致崩溃或者拒绝服务。另外,如果分片之间偏移量经过精心构造,一些系统就无法处理,导致死机。所以说,漏洞的起因是出在重组算法上。

阅读(119) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~