在网络中,IP地址是基础,那么在这之中,它的包头格式也是非常重要的。虽然IPv6报头的格式很早以前就已经规范好了,但是到了现在,IPv6才渐渐投入到使用当中。我们现在就来说一说IPv6报头的结构吧。
IPv6报头格式
IPv6报头分为以下几个部分:
1、版本号(Version,4位),IPv6协议的版本值为6。这个子段的大小与IPv4中的版本号域是相同的。但是,这个字段的使用是有限的。IPv6与IPv4的信息包不是通过版本字段的版本值来区分的,而是通过2层封装(例如,Ethernet或者PPP)中的协议类型来区分的。
2、通信量等级(TrafficClasses,8位),IPv6报头中的通信量等级域使得源节点或进行包转发路由器能够识别和区分IPv6信息包的不同等级或优先权。对于IPv6常用的通信量类别及等级的定义,还没有达成一致。在RFC1883中,该域只有4位,而且称为优先权(Priority)域,并定义了8种信息包优先权。在RFC2640中,通信量等级域被扩大到了8位,这也是通信量种类增加的一种表现。
使用通信量等级域必须具备下面几个条件:
1、在一个IPv6节点中,IPv6服务接口必须为由上层协议产生的信息包中的通信量等级位提供一种支持手段。IPv6通信量等级的默认值是8位全为0。
2、支持部分或全部通信量等级的特殊使用的IPv6节点允许修改它们产生、转发、或接收到的信息包中的通信量等级的值。当这些节点不支持特殊使用对信息包中的通信量等级位将忽略或不做修改。
3、上层的协议不必假定接收到的信息包中通信量等级的值与源节点发出该包时的值相同。3、流标记(FlowLabel,20位),IPv6报头中的流标记是为了用来标记那些需要IPv6路由器特殊处理的信息包的顺序,这些特殊处理包括非默认质量的服务或“实时(real-time)”服务。IPv6的这个流标记域在RFC2640编写的时候还是实验性的,而且随着因特网对流支持的需求的改变而改变。不支持流标记域功能的主机或路由器在产生一个信息包的时候将该域置0,在转发一个信息包的时候则不改变该域,转发一个信息包的时候则忽略该域。
在RFC1883中,流标记域长24位,在RFC2640中修改为20位。
4、有效负载长度(PayloadLength,16位),有效负载长度使用16位无符号整数表示的,代表信息包中除IPv6报头之外其余部分的长度,以字节即8位记数。因为它是16位的,所以IPv6信息包的有效负载长度是64K字节。值得注意的是,任何扩展报头都被认为是有效负载的一部分,将被计算在内。
5、下一个报头(NextHeader,8位),这个8位的选择器,用来标识紧跟在IPv6报头后面的报头的类型。它的使用与IPv6协议中下一个报头域的使用是一样的。
6、路程段限制(HopLimit,8位),该域用8位无符号整数表示,当被转发的信息包经过一个节点时,该值将减1,当减到0时,则丢弃该信息包。
7、源地址(SourceAddress,128位),信息包的发信方的地址。
8、目的地址(DestinationAddress,128位),信息包的预期接收者的地址。如果有路由报头,该地址可能不是该信息包最终接收者的地址。