5.5.2 IPv6数据报格式
首先我们来回忆一下IPv4数据报首部格式(5.2.3 IP数据报(一)IP数据报的格式),包括20个字节的固定部分和长度可变的选项部分,如图
红色方框标注的是在IPv6中会消失的字段,椭圆标注的是在IPv6中仍然存在但会发生变化的字段,由此我们可以看出相比IPv4,IPv6数据报的首部发生了很大的变化,下面我们就通过认识IPv6首部格式来发现IPv6协议的特点。
如图
IPv6数据报它是由40个字节的基本首部和可变长度的有效载荷两个部分组成。有效载荷部分还包含了扩展首部和数据部分。
- 如图在基本首部中版本字段还是4位,取值为6
- 紧接着一个字段是通信量类(traffic class),这个字段的作用类似于IPv4中的服务类型字段,主要用来区分数据报所属的类别,或优先级别,从而实现不同类别通信流量的区分服务,该字段占8比特,目前正在进行不同的通信量类性能的实验。
- 流标号(flow label)字段占20个比特位,IPv4中并没有流的概念,“流”代表互联网中从特定源点到特定终点的一系列数据报,“流”所经过的路径上的路由器都保证指明的服务质量。所有属于同一个流的数据报都具有相同的流标号,这里我们要理解为什么要引入流的概念,在IPv6中特定的流往往是与特定的服务关联在一起,换句话说流所经过的传输路径上所有的路由器在进行数据报处理的时候都应该尽量的保证该“流”所指定的服务质量,通过引入流的概念,IPv6可以克服IPv4网络服务上的不足从而满足许多新型网络应用的个性化的服务质量的需求。
- 有效载荷长度(payload Length)一共占16个比特位,给出了数据报中除了基本首部之外包含的字节的数量,即指明了IPv6数据报除基本首部以外的字节数(所有扩展首部都算在有效载荷之内),其最大值是64KB。
- 下一个首部(next header)占8个比特位。它相当于是IPv4的协议字段或可选字段。用于说明下一个扩展首部的类型或者数据所属的协议。
- 跳数限制(hop limit)占8比特位,源站在数据报发出时及设定跳数限制,相当于IPv4的TTL字段,每经过一个路由器就会被减1,如果该值为零,直接会被路由器丢弃,这个字段是防止网络中出现路由环路。
- 源地址和目的地址字段都是从原来的4字节32个比特位,扩展到了16个字节也就是128位。
在我们认识了IPv6中数据报的各个字段之后我们一起对比一下相比IPv4,IPv6在数据报格式上带了那些具体的变化。
先来看基本首部
- 取消了IPv4的首部长度字段,IPv4中的数据报总长度字段被有效载荷长度字段所取代。
- 源、目的地址由4字节增大到16字节。
- 分片有关字段不再出现在基本首部,被转移到了“分片扩展首部”。
- 生存时间字段改名为跳数限制(hop limit)字段。
- 服务类型字段改名为通信量类别字段,增加流标号字段,用于资源预分配。
- 协议字段由指明后续内容格式的下一首部字段替代,这里需要注意的是下一首部可能是IPv6数据报的扩展首部,也可能是ICMP、TCP、UDP、IGMP、OSPF等首部。
再看扩展首部
- 与IPv4相比IPv6在数据报格式上相比最大的变化就是引入了扩展首部字段,实质上扩展首部的作用类似于IPv4中的选项字段。对于IPv4来说是通过一些长度可变的选项字段提供一些增强型的功能,比如记录路由、源路由等等,但由于选项字段是可选的,而且长度也是可变的势必会影响路由器对分组的处理和效率。IPv6将原来IPv4首部中选项的功能都放在扩展首部中,并将扩展首部留给路径两端的源站和目的站的主机来处理。
- 这里需要注意的是IPv6中扩展首部一般都不会在中间的路由器上处理,除了极个别的逐跳选项扩展首部之外,这样做的好处就是可以提高路由器处理数据分组的速度,还能够灵活引用更多的扩展首部来增强网络服务的能力。