由于IPv4中的包头功能字段过多,路由器查找选路的时候需要读取每一个字段,但往往很多字段都是空的,这样会导致转发效率低下。所以在IPv6中把报文的报头分为基本头和扩展头2部分,基本头中只包含基本的必要属性如源IP和目的IP等,扩展功能用扩展头添加在基本头的后面。
3.1 IPv6基础报头
不同于IPv4报头的可变长20〜60Byte, IPv6基本头是定长40 Byte,其中包含8 个字段,相比IPv4报头,减掉了 6 个字段,新增加1个字段。如图 3‑1 IPv6基础结构所示。
图 3‑1 IPv6基础结构
- Version: 4 bit,指定 IPv6,数值=6。
- Traffic Class: 8 bit,流量类别字段的功能跟IPv4中的TOS字段类似,用来区分不同类型或优先级的IPv6数据包,该字段根据RFC2647中定义的差分服务技术,使用了 6 bit作为 DSCP,可以表示的DSCP值的范围为0〜63。关于DSCP的更多内容可参阅本书QoS章节。
- Flow Label: 20bit,用作标识同一个数据流,此字段为IPv6新增字段。由于可以标记一个流中的所有数据包,所以路由器可以利用该字段来辨别一个流,而不用处理流中每个数据包头,提高了处理效率。目前该字段的使用还在试用阶段。
- Payload Length: 16bit,数据包的有效载荷,指报头后的数据内容长度,单位是Byte,最大数值为65535,指 IPv6基本头后面的长度,包含扩展头部分。该字段和IPv4报文头部中的总长度字段不同点在于,IPv4报头中总长度字段是指报头和数据两部分的长度, 而 IPv6的有效载荷字段只是指数据部分的长度,不包括IPv6基本报头。
- Next Header: 8bit,指明跟在基本头后面是哪种扩展头或者上层协议中的协议类型。 如果只有基本报头而无扩展报头,那么该字段的值指示的是数据部分所承载的协议类型,这一点类似于IPv4报头中的协议字段,而且与IPv4的协议字段使用相同的协议值,比如 UDP为 6, TCP为 17。如表 3‑1 Next Head值列出了常用的上层协议及对应的Next Header值。
Next Header值 |
对应的扩展头或高层协议类型 |
0 |
逐跳选项扩展头 |
6 |
TCP |
17 |
UDP |
43 |
路由选择扩展头 |
44 |
分段扩展头 |
50 |
ESP扩展头 |
51 |
AH扩展头 |
58 |
ICMPv6 |
60 |
目的选项扩展头 |
89 |
OSPFv3 |
…. |
…. |
- Hop Limit: 8bit,功能类似于IPv4中的TTL字段,最大值为255,报文每经过一