上一篇博客介绍了IPv6扩展头部的路由头部类型,这篇博客介绍一下更常见的扩展头部分片头部。

分片头部用于IPv6源节点向目的节点发送一个大于路径MTU的数据报。对于路径MTU以及如何确定它,以后有机会在提,1280字节是整个网络中针对IPv6定义的链路层最小MTU(见[RFC2460]的第五节)。在IPv4中,这个值可能是576。在IPv4中,如果数据报大小超过下一跳MTU,任何主机或路由器可将该数据报分片,IPv4头部中第二个32位字段标识分片信息。如下图

标识、标志和片偏移三个字段用于处理IPv4分片报文。

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

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

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

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

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

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

下面结合一个栗子演示一下IPv6源节点对数据报的分片过程。在该栗子中,一个3960字节的有效载荷被分片,其中分片的大小都没有超过1500字节(一个典型的以太网MTU),分片数据的大小仍为8字节的倍数。

IPv6分片报文栗子,一个3960字节的有效载荷被分为3个1448字节或更小的分片。每个分片包含一个带相同的标识符字段的分片头部。除了最后一个分片,所有分片的更多分片(M)字段设置为1。偏移量以8字节为单位。例如最后一个分片包含的数据是从原始数据开始出偏移(362*8)=2896字节。这个方案与IPv4中分片相似。

在上图中,可以看到较大的原始数据报被分为3个较小的分片。每个分片都包含一个分片头部。IPv6头部的负载长度字段被修改,以反映数据和新生成的分片头部的大小。每个分片中的分片头部包含一个公共标识符字段,以确保网络中不同的原始数据报在其生存期内不会被分配相同的标识符字段。接收端会将标识符相同的报文重组起来。

分片头部中的偏移量字段以8字节为单位。因此分片需要在8字节的边界处进行,这就是第一个和第二个分片包含1448字节,而不是1452字节的原因。因此,除了最后一个分片之外的所有分片都是8字节的倍数(最后一个分片也可能是)。接收方在对分片进行重组之前,必须确保已接收原始数据报的所有分片。重组过程中需要聚合所有分片以形成原始数据报。与IPv4分片一样,分片可能不按顺序到达接收方,但需要按顺序重组为一个数据报,以便交给高层的其它协议处理。

在win10系统使用如下命令构造一个分片报文:

ping -l 3952 (IPv6网关)

IPv6扩展首部分片首部就介绍到这,有问题欢迎提出哈

IPv6扩展头部(一)扩展头部格式、类型和扩展选项:https://blog.csdn.net/fuyuande/article/details/81146615

IPv6扩展头部(三)路由扩展头部:https://blog.csdn.net/fuyuande/article/details/81122628

参考资料:

1. 《TCP/IP详解-卷一:协议》W.Richard Stevens。原书第二版。5.3.3节。

2.   RFC2460 : https://tools.ietf.org/html/rfc2460

3.   IPv6技术课件 https://wenku.baidu.com/view/17627f53581b6bd97f19eae6

IPv6扩展头部 (四) 分片头部 Fragment Header for IPv6相关推荐

  1. IPv6扩展头部 (三) 路由头部 Routing Header for IPv6

    IPv6在我国发展算是早的,网上相关的资源也是比较多但是涉及实际的应用方面就比较少了.随着今年国家对IPv6的加大投入,估计未来一段时间IPv6会变的热门.在学校里老师对这一块没怎么讲,平常工作的时候 ...

  2. IPv6扩展头部 (一) 扩展头部格式、类型与扩展选项

    之前几篇博客介绍了IPv6的扩展头部,包括分片头部和路由头部.接下来介绍一下IPv6扩展头部以及扩展选项的内容,可能会有这样的疑问,有了扩展头部怎么还需要扩展选项?扩展选项是干嘛用的?本篇博客就介绍相 ...

  3. 网络知识入门,什么是以太网包,TCP/IP包,MAC头部,IP头部以及TCP头部(六)

    目录 一.以太网包 二.协议栈中IP模块的工作方式 1.TCP委托IP模块 2.IP模块的工作方式 三.mac头部 四.何为以太网 1.以太网的定义 2.如何收发以太网包 3.以太网接收网络包详细 4 ...

  4. firefox扩展开发(四) : 更多的窗口控件

    firefox扩展开发(四) : 更多的窗口控件 2008-06-11 17:00 标签盒子 标签盒子是啥?大家都见过,就是分页标签: 对应的代码: <?xml version="1. ...

  5. HeadPose Estimation头部姿态估计头部朝向(Android)

    HeadPose Estimation头部姿态估计头部朝向(Android) 目录 HeadPose Estimation头部姿态估计头部朝向(Android) 0.前言 1.HeadPose 2.p ...

  6. 《2018-2019全球IPv6支持度白皮书》发布,江北新区IPv6示范区建设正式启动

    这标志着国内下一代互联网生态体系建设迈入了"快车道". 4月12日,下一代互联网国家工程中心联合IPv6产业联盟在南京江北新区研创园正式完成了<2018-2019全球IPv6 ...

  7. 计算机的ipv6地址,windows7旗舰版系统下查看电脑iPv6地址的方法【图文详解】

    因为IPv4地址即将用尽,现在全球已经开机加速进入IPv6时代,IPv6是Internet Protocol Version  6的缩写,IPv6是IETF设计的用于替代现行版本IP协议(IPv4)的 ...

  8. [IPv6] 如何在ASUS無線路由器設定IPv6網際網路?

    site://https://www.asus.com/tw/support/FAQ/113990/ ASUSWRT在韌體版本3.0.0.3.78以後有支援『IPv6網際網路』功能: 注意: IPv6 ...

  9. OpenWrt路由器设置IPv6域名动态解析,同时实现IPv4设备访问IPv6节点

    文章目录 0.前言 1.准备工作 2.详细步骤 2.1.OpenWrt路由器软件包安装 2.2.防火墙放行入站数据(修改为"接受"并保存应用) 2.3.路由器做好ipv6设置(略) ...

最新文章

  1. 【iOS】iOS10.3新增API:应用内评分
  2. 在云中利用开源软件进行开发以提高创新能力
  3. Java 数组的 12 个最佳方法
  4. Stixel_World(single)学习笔记
  5. mysql 分组_mysql分组查询(总结)
  6. form表单 无法提交js动态添加的表单元素问题。。
  7. nagios mysql 监控_nagios监控mysql
  8. Qt工作笔记-QMap的进一步操作
  9. 此服务器的时钟与主域控制器的时钟不一致_基于域的GPS时钟同步配置
  10. 添加底部小火箭+目录
  11. 笨办法学 Python · 续 练习 49:`sed`
  12. git钩子放服务器_如何使用Git 钩子来自动化开发和部署任务
  13. enum枚举类型的范例
  14. Javascript学习历程之事件
  15. Linux工作笔记030---Centos7.3启动tomcat 输入startup.sh后提示command not found
  16. python列表购物
  17. [Java] 蓝桥杯ADV-91 算法提高 素数判断
  18. python 访问局域网电脑,使用python连接到局域网数据库
  19. redis-远程主机强迫关闭了一个现有的连接
  20. PHP高效率写法(详解原因)

热门文章

  1. 网页制作中最有用的免费Ajax和JavaScript代码库
  2. Go Web开发之Revel - 组织结构
  3. 第五讲 类的封装和类的继承
  4. 【转帖】dopod touch diamond 应用小常识:)
  5. 通用存储过程分页---(测试能用的请放心试用)
  6. 计算Gaunt积分m1m2≥0
  7. 用神经网络分类无理数和超越数2**0.5,3**0.5,e
  8. html post后404,为什么在vue-cli脚手架下启动的服务器POST返回404呢?WebStorm启动没有问题?...
  9. 1.7 总结-深度学习-Stanford吴恩达教授
  10. STM32 电机教程 25 - ST MCLIB实战之开环svpwm控制