1. IPv6包头格式
基本的IPv4报头包含12个字段,20个字节长。options和padding字段在需要时添加
基本的IPv6报头40个8位bit,即40个字节长,共8个字段
IPv6数据包由一个基本报头加上0个或多个扩展报头再加上上层协议单元构成
包头字段转变及含义:
Version:与IPv4的报文格式相同,4代表IPv4,6代表IPv6
ToS --> Traffic Class:流量区分,与IPv4的服务类型类似
Total Len --> Payload Length:载荷长度
TTL --> Hop Limit:跳数限制,类似IPv4的TTL字段。定义了IP数据包所能经过的最大跳数。
Protocol --> Next Header:下一个报文头,定义了紧跟在IPv6报头后面的第一个扩展报头(如果存在)的类型,或者上层协议数据单元中的协议类型
Flow Label:流标签,标识IPv6流,用于QoS
Source Address:源IP地址,128bits
Destination Address:目的IP地址,128bits
Extension Headers:扩展报文头信息
相比较IPv4的报文格式,IPv6的报文格式比较简单,根本原因是IPv6报文格式中引入了IPv6扩展报文头的概念。
2. IPv6包头的改进
取消了IP的的校验
第二层和第四层的校验已经足够健壮了,因此IPv6直接取消了IP的三层校验
取消中间节点的分片功能
分片重组功能由源目端自己进行,通过PMTU机制来发现路径MTU
定义最长的IPv6报头
有利于硬件的快速处理,中间节点可以避免处理而节省大量的资源
安全选项的支持
IPv6提供了对Ipsec的完美支持,如此上层去协议可以省去许多安全选项,如OSPFv3就取消了认证
增加流标签
提高QoS效率
3. IPv6分组包头及扩展包头
IPv6扩展报文头的引入简化了IPv6基本报文头的格式,一个IPv6报文中可以包含0个及以上扩展报文头。当需要有多个IPv6扩展报文头的时候,IPv6的基本报文头的Next Header字段将会指明下一个扩展报文头的类型,IPv6扩展报文头的Next Header字段将会指明下一个扩展报文头的类型,以此类推,如果后续没有IPv6扩展报文头,那么此字段将指明上层协议类型。
IPv6的扩展报文头及顺序(RFC2460)如下:
1.基本IPv6报头
2.逐跳选项扩展报头
3.目的选项扩展报头
4.路由扩展报头
5.分片扩展报头
6.认证扩展报头、封装安全有效载荷扩展报头
7.上层协议数据报头
此外,值得注意的是:
扩展包头大部分情况下只有目标节点查看,其它节点不查看和处理大部分扩展报头
扩展报文的出现顺序也必须为上面所列出的顺序一样。
有了扩展包头,中间路由器就不需要处理每一个可能出现的选项,提高了路由器处理数据包的速度,提高了其转发性能。在扩展报头链的最后就是有效负载。扩展报头可选,只有需要该扩展报头对应的功能,发送主机才会添加相应扩展报头。
逐跳选项报头 Hop-by——Hop Options Header(协议0)
传送路径上每个路由器都要处理,用于巨型数据包和路由器警报。如RSVP资源预留协议
目标选项报头 Destination Options Header(协议60)
该包头承载特别针对数据包目的地的可选信息,例如用在移动节点和家乡代理之间交换注册信息,即使移动节点改变了连接点,仍允许它保持永久的IP地址
路由包头 Routing Header(协议63)
在数据包发往目的地的途中,该包头能够被IPv6源节点用来强制数据包经过特定的路由器,当路由器类型字段为0时,在路由包头中可以指定中间路由器列表,这个功能类似IPv4中的松散源路由选项
分段报头 Fragment Header(协议44)
在IPv6中,建议所有的节点使用PMTUD机制来发现链路的MTU,这样就不需要对数据进行分段了,但是如果IPv6节点不支持PMTUD,但又必须发送比路径MTU还大的数据包时,就不得不分段了,这时候需要使用分段包头,节点将数据分段,使用分段包头发送每个分段。
认证报头 Authentication Header、封装安全有效载荷报头 Encapsulating Security Payload Header(协议51)
AH头,ESP头
上层报头