上一篇博客介绍了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