IPv6扩展头(四)——分片头

分片头部(Fragment Header)用于IPv6源节点向目的节点发送一个大于路径MTU的数据报。

一、优势

IPv6 分片头具有多种优势,可提高网络效率,包括减少数据包延迟和减少网络拥塞。使用 IPv6 分片头,数据包在源处而不是中间路由器进行分段,从而节省时间和资源。此外,此过程可确保将数据有效传送到预期目的地,而不会在整个网络中造成不必要的流量或延迟。

IPv6 分片头的另一个显着优势是它们能够处理比 IPv4 更大的数据包。此功能降低了与打包相关的开销成本,并有助于保证在带宽容量较低的网络上传输大文件时获得更好的性能。例如,用户可以将高清视频文件作为一个整体发送,而不是将其分成较小的块并在收到后重新组装它们。

总之,由于其在跨网络高效传输数据包方面具有众多优势,同时通过优化使用每个数据报(数据包)内的可用空间来最大限度地降低基础设施成本,因此任何现代互联网协议实现都应该包括对 IPv6 分片头的支持。

二、结构与原理

1280字节是整个网络中针对IPv6定义的链路层最小MTU(见[RFC2460]的第五节)。在IPv4中,这个值可能是576。在IPv4中,如果数据报大小超过下一跳MTU,任何主机或路由器可将该数据报分片,IPv4头部中第二个32位字段标识分片信息。如下图
在这里插入图片描述

在IPv6中,仅数据报的发送者可以执行分片操作。这就是说,中间路由器或着主机不再需要处理分片报文,这样会提高分片报文处理效率,因为分片报文的重组和分片都是耗cpu的。在这种情况下需要添加一个分片头部。
在这里插入图片描述

  • 下一个标头(Next Header):下一个标头是一个 8 位字段,用于标识分段标头之后存在的标头类型。
  • 保留(Rserved):这是一个 8 位字段,目前完全为零。将来,我们可能会在这里找到一些有用的东西来填充。另外,还保留了一个额外的 2 位字段以供以后使用。
  • 片段偏移量(Fragment Offset):它与IPv4中的大小完全相同,大小为 13 位。正如我们在 IPv4 中扩大分段偏移一样,我们也会在 IPv6 中做同样的事情。
  • 更多片段(M):这里的更多片段位用“M”表示。这是一个一位字段,告诉我们后面是否有更多片段。如果更多片段位为零,则表示其最后一个片段,如果为 1,则它可以是除最后一个之外的任何数据包。
  • 识别号(Identification Number):特定数据包的所有片段的识别号字段都相同,其大小是 IPv4 中的两倍。在数据包标识符字段中为 32 位,在 IPv4 中为 16 位。

分片头部包括的信息与IPv4头部中的相同,只不过标识符字段变成32位,而不是IPv4采用的16位。这个更大的字段提供了在网络中容纳更多分片的能力。图显示了分片头部采用的格式

IPv6分片头部包含一个32位的标识符字段(是IPv4中标识符字段的两倍).M位字段表明该分片是否为原始数据报的最后一个分片。与IPv4一样,分片偏移字段给出了有效载荷在原始数据报中以8字节为单位的偏移量。

上图中,保留字段和2位的Res字段都为0,并且都会被接收方所忽略。分片偏移字段表明数据以8字节为单位的偏移量放置在分片头部之后(相对于原始IPv6数据报的“可分片部分”),如果M字段设置为1,表示在数据报中包含更多分片。如果该值为0,表示该分片是原始数据报的最后一个分片。

在分片过程中,输入的数据报称为"原始数据报",它由两部分组成:“不可分片部分"和"可分片部分”。不可分片部分包括IPv6头部和任何到达目的地之前需要由中间节点处理的扩展头部(即包括路由头部之前的所有头部,如果有逐跳选项扩展头部,则是该头部之前的所有头部)。可分片部分包括数据报的其余部分(即目的选项头部,上层头部和有效载荷数据)。简单说,就是有些扩展头部是不允许分片的,需要每个分片报文都携带不允许分片的部分。

分片头部尝试通过支持 1280 字节的最小数据包大小来尽可能减少分段的使用。如上图所示,如何根据发送方知道的 MTU 进行分片。IPv6 和其他扩展标头是不可分段的部分,因为每个分段都必须经过节点或路由器,并且在每个路由器处都需要存储在这些扩展标头中的信息。这就是 IPv6 数据包分为两部分的原因。一个是不可碎片部分,另一个是可碎片部分。不可分片的部分在其间不会遇到任何修改,而可分片的另一部分则被分为许多小片段,如片段 1、片段 2,依此类推。创建小片段后,片段标头和特定片段(如片段 1)连接到不可分段部分并发送到目的地。有效负载长度在分片后可能会发生变化,并且在添加分片标头后,相应的字段(如下一个标头、标识号、分片偏移量)和更多分片位会被适当填充

当原始数据报被分片后,将会产生多个分片,其中每个分片都包含一个原始数据报综合那个不可分片部分的副本,但是需要修改每个IPv6头部的负载长度字段,以反映它所描述的分片报文大小。在不可分片部分之后,每个新的分片都包含一个分片头部,其中包含一个分片相应的分片偏移字段(例如第一个分片的偏移量为0),以及一个原始分组的标识符字段的副本,最后一个分片的M(更多分片)位字段设置为0。

三、分片示例分析

在这里插入图片描述

假设我们有一个正好 370 字节宽的 IPv6 数据报。IPv6数据报由一个40字节的IP报头、四个30字节的扩展报头和210字节的数据组成。其中两个扩展标头是不可分段的,而两个是可分段的。我们必须通过 MTU 仅 230 字节的链路发送此信息。需要三个片段,而不是您可能期望的两个片段,因为每个片段必须包含两个 30 字节的不可片段扩展标头,并且长度是 8 的倍数。在此 IPv6 片段示例中,一个 370 字节的 IPv6 数据报包含四个 30 字节的 IPv6 数据报。扩展头分为三个片段。

分片的概念与IPv4中的相同。但是,碎片发生的位置不同。在 IPv4 中,如果数据报的大小大于数据报传输的网络的 MTU,则需要源或路由器进行分段。在 IPv6 中,只有原始源可以分段。源必须使用路径 MTU 发现技术来查找路径上任何网络支持的最小 MTU 路径上任何网络支持的 MTU。然后使用这些知识对源进行碎片化。如果源不使用路径 MTU 发现技术,它将数据报分段为 1280 字节或更小,这是连接到互联网的最低限度。

四、安全性分析与建议

IPv6 分片头部用于 IPv6 数据包的分段和重组。虽然分段/重组机制的许多安全隐患在 IPv4 世界中已为人所知,但一些相关问题已经渗透到 IPv6 实现中。这些范围从 DoS 攻击到信息泄漏,如[ RFC7739 ]、[ Bonica-NANOG58 ]和[ Atlasis2012 ]中讨论的。
在这里插入图片描述

在检查 IPv6 分段示例时,主要问题之一是第一个分段可能没有所需的上层(TCP 和 UDP)信息。安全设备需要此信息来确定数据包是否符合其配置的策略和规则。碎片可能会混淆数据,使其能够通过安全设备。路由器和无状态设备通常只查看包含标头信息的第一个片段。许多小片段用于隐藏或 DoS 攻击节点。攻击者将数据包分解成许多小碎片数据包,绕过安全设备。每个小片段看起来都是合法的,但一旦重新组装,整个数据包就会被用来发起攻击。攻击者通过将攻击内容压缩成许多小片段来隐藏他的真实意图。这些可能会被仅查看未碎片部分的设备传递并且看不到。

碎片和碎片重组可能会在中间节点中产生意外且有害的行为。网络碎片化过程可能导致IP 安全问题。 碎片可用于各种攻击,例如指纹识别、IPS 插入/规避、防火墙规避和远程代码执行。分片攻击:攻击者利用 IPv6 分片过程中的漏洞,导致网络设备花费过多的资源来重组分片数据包。其他攻击包括 重叠片段、不完整片段集、隧道内片段和嵌套片段。嵌套片段是具有多组片段标头的数据包,这在标准 IP 网络中绝不会出现。源仅创建一个片段标头。重叠片段可用于操作系统指纹识别和 IPS/IDS 规避。碎片攻击可用于 DoS(终端主机)。如果主机无法正确处理碎片数据包,攻击者可以发送许多碎片数据包,这些碎片数据包将由内核内存处理,从而耗尽内核处理合法碎片的能力。Whisker、Fragrouter 和 Scapy 等许多工具都可以制作这些数据包。

RFC 5722 建议禁止重叠片段。RFC 规定,如果 IPv6 主机执行重组并包含确定重叠的片段,则整个数据报将被默默丢弃。没有错误消息被发送回发送主机。Antonios Atlasis 进行的测试证明,没有一个操作系统符合 RFC 5722。

与 IPv4 世界一样,IPv6 安全功能由带有 “fragments”关键字 的 ACL 组成。ACL 匹配非初始 IPv6 分片。初始 IPv6 分段包含第 3 层和第 4 层的信息。Cisco IOS 具有称为虚拟重组的功能,可检查分段数据包。它是输入 ACL 的次要对象,这意味着输入 ACL 有第一次机会检查传入数据包。它重新组装碎片数据包,检查任何无序的碎片,将它们放回正确的顺序,然后向上发送协议栈。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/520300.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

光谱整形1

华为张德江:下一代光传送网将走向400G80波WDM系统_通信世界网 (cww.net.cn) 张德江指出,400G WDM系统具有三大基本特征:支持400G80波,单纤32T超大容量,传输距离与100G相当;支持32维以上的光交叉&#xff1…

Python实例☞数据类型及运算符案例

实例一: ❶要求☞从键盘获取一个4位整数,并分别输出个、十、百、千位 ❷程序代码☞ ①第一种方法 print(请输入一个4位整数:) xeval(input()) print(个位数为:,x%10) print(十位数为:,(x//10)%10) print(百位数为&am…

4.1k star,官方出品的redis桌面管理工具——redislnsight

导航 令人抓狂的大key加载RedisInsight 简介RedisInsight的亮点GitHub 地址安装和使用RedisInsight 下载安装 使用RedisInsight redis数据库可视化直观的CLI(Command-Line Interface)日志分析和命令分析 结语参考 令人抓狂的大key加载 工欲善其事必先利…

利用GPT开发应用003:GPT分词和预测

文章目录 一、概率问题二、令牌(分词)三、预测 一、概率问题 像 GPT 这样的大型语言模型接收一个提示,并返回通常在上下文中有意义的输出。例如,提示可以是“今天天气很好,所以我决定”(“The weather is n…

检测螺栓扭矩的方法有哪些——SunTorque智能扭矩系统

螺栓扭矩的检测是确保螺栓连接紧固程度和安全性的重要环节。正确的扭矩检测能够预防螺栓松动、断裂等潜在风险,从而保障设备和结构的稳定运行。SunTorque智能扭矩系统接下来将详细介绍螺栓扭矩的检测方法。 螺栓扭矩的检测是确保螺栓连接紧固程度和安全性的重要环节…

什么是VR全息投影技术|元宇宙文旅|VR设备购买

VR全息投影技术是一种结合了虚拟现实(VR)和全息投影技术的创新技术,旨在创造出更加沉浸式和真实感的体验。 在这种技术中,用户可以通过戴上特殊的头戴式显示器(如VR头显)进入虚拟现实世界,同时通…

Spark Core

Spark Core 一、Spark RDD RDD概述 1.RDD基础 2.RDD源代码描述 3.RDD特性 4.Spark宽窄依赖 RDD创建 在驱动器中创建RDD 1.parallelize 读取外部数据集创建RDD 2.textFile RDD操作 缓存rdd到内存 1.RDD转化操作 2.常见的转化操作 3.RDD行动操作 4.常见的行动操作 Spark…

HTTP协议(请求方式,响应方式,请求行、头、体,状态码)是热点面试题【详解】

目录 1. HTTP简介 1.介绍 2.浏览器抓包 3.特点 2. HTTP请求 1.HTTP请求的格式 2.HTTP请求方式 3.GET方式的请求示例 请求行 请求头 请求体 4.POST方式的请求示例 请求行 请求头 请求体 GET和POST的区别 5.HTTP响应 1.HTTP响应的格式 2 常见响应头 3 响应…

企业财务分析该怎么做?重点分析哪些财务指标?

在企业经营管理的过程中,财务分析是评估当前企业或特定部门财务状况和绩效的过程,这一过程通常涉及对财务报表(如资产负债表、利润表和现金流量表)进行定量和定性的评估,以便为盈利能力、偿债能力、现金流动性和资金稳…

【计算机系统】2.进程管理

【计算机系统】2.进程管理 这个章节十分的重要,作业也要好好做,因为我学的是后端,学计算机进程的处理对于搞并发来说十分有用。 提出问题 6、试从动态性、并发性和独立性上比较进程和程序。19、为什么要在OS中引入线程?A.请用信号量解决以下…

如何搭建财务数据运营体系:基于财务五力模型的分析

在当今复杂多变的商业环境中,财务数据作为企业决策的重要参考依据,其运营体系的搭建显得尤为关键。一个健全、高效的财务数据运营体系不仅能够为企业提供准确的财务数据支持,还能帮助企业在激烈的市场竞争中保持领先地位。基于财务五力模型的分析,我们可以从收益力、安定力…

第三方软件测试报告有效期是多久?专业软件测试报告获取

第三方软件测试报告是在软件开发过程中,由独立的第三方机构对软件进行全面测试和评估后发布的报告。这些第三方机构通常是与软件开发商和用户无关的专业技术机构,具备丰富的测试经验和专业知识。    第三方测试报告具有以下几个好处:   …