总论:
IPv6的分片处理只在作为起点的发送端主机上进行,中间路由器不参与分片,可以减少路由器的负担,提高网速,所以呢,IPv6中的路径MTU发现功能必不可少,不过IPv6最小MTU为1280字节。
IPv6关于分片最主要的改变就是分片只在端主机上进行,中间网络只负责转发,上一篇中IPv4关于分片的16比特的Identification和3比特的Flags字段在IPv6中都没有了,IPv6的标准头首部长度是固定的40字节,Ipv6中的分片信息放在了IPv6的扩展首部里
关于何时Ipv6报文需要分片:
- skb的长度大于PMTU发现的mtu值
- 本地链路mtu小于1280字节
- skb分片中的最大分片长度大于PMTU发现的mtu值
IPv6部分首部:
流标号-Flow Label
20比特,准备用于QoS
有效载荷长度-Payload Length
这16比特指的是包的数据部分,而不是像IPv4中的Total Length指包括首部在内的所有长度
下一个首部-Next Header
相当于IPv4中的协议字段,共8比特,通常表示IP的上一层是什么协议,一般为UDP,TCP,不过当IPv6有扩展首部的时候,该字段表示后面第一个扩展首部的协议类型
跳数限制-Hop Limit
8比特,就是IPv4中的TTL
IPv6扩展首部
扩展首部通常位于IPv6首部和TCP/UDP首部中间,且扩展首部没有长度限制,比如需要对IPv6的数据进行分片时,可以设置扩展域为44(IPv6-Frag)