總論:
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)