一、由IPv4到IPv6
互聯網協議(IP,Internet Protocol)由第4版本(IPv4)升級為第6版本(IPv6)最直接的動因是IP地址的匾乏。Internet應用范圍的迅速擴大和用戶數量指數級的增加,是當初制訂IP地址字段長度的人所始料未及。此外,原來的地址結構也不盡合理,利用率不高,也缺少更大地靈活性。因此,IPv6將IPv4的32比特地址字段直接擴展為128比特。這樣為適應其地址字段的變化,并針對原IPv4的報文格式的不足,IPv6的報文(Datagram)格式也發生了變化,但此時稱之為IPv6的分組(Packet)格式了。IPv6的分組格式對IPv4的報文格式進行了優化簡化。IPv6與IPv4相比其主要變化特征可歸結為下表1中的6方面。
表 1:IPv6分組與IPv4報文相比其主要變化特征
欲具體了解互聯網協議(IP)介紹的請進入。
二、IPv6的分組格式
下圖2-1為IPv6分組(Packet)格式(注意:現實中為了延續原有的稱呼,有時也習慣性地將IPv6分組稱呼為IPv6報文)。由圖可知,IPv6分組(Packet)格式的IP的基本數據單元,仍然保持了IPv4報文格式的4字節為一單元,每單元從左至右為第0字節到底4字節,每字節從左至右為第0比特到第7比特的二進制表示方式。最左側的位是高階或最高有效位。
圖 2-1:IPv6分組(Packet)格式
IPv6分組格式是由IPv6基本分組頭、IPv6擴展分組頭以及上層協議數據(載荷)三部分組成,如下圖2-2所示。相比于IPv4報文,IPv6取消了IPv4報文頭中的選項字段,并引入了多種擴展分組頭,在提高處理效率的同時增強了IPv6的靈活性,為IP協議提供了良好的擴展能力。
圖 2-2:IPv6分組(Packet)格式的構成
欲詳細了解互聯網IPv4報文格式的請進入。
需要提示的是,下述只是僅對IPv6的分組格式(包括基本分組頭、擴展分組頭和分組數據(載荷))各字段做一簡要的介紹。由于在RFC 2460《IPv6規范》中,對各字段的含義及要求做了比較詳細的描述,內容是較多的。因此,需要時可在該文檔查詢。
欲詳細了解RFC 2460文檔具體內容的請進入。
三、IPv6基本分組頭的字段:
IPv6的基本分組頭(IPv6 Base Headers)是由8個固定長度的字段構成,相比IPv4,字段數由12個減少到8個,但字節數由20字節,增加為40字節。
1、版本(Version)字段:
該字段的含義和長度與IPv4相同,其字段長度仍是4比特。對IPv6版本其字段取值為“6”,是由RFC 1700規定的。
2、用戶數據等級(Traffic Class)字段:
該字段長度為8比特,是IPv4中“TOS(Type of Service)”字段的替代物(也為8比特。其目的在于為發起節點和中轉節點(Router)指明此IPv6分組傳輸服務級別或優先級別。有關級別的劃分和代碼將在專門的標準中制定。
3、數據的流標簽(Flow Label )字段:
此字段長度為20比特,意在為發起節點制定對分組流的處理方式的機制,如非缺省服務質量等級、“實時”數據流等。所謂數據流是在相同的“一對一”或“一對多”(廣播或組播)地址間連續分組流。發送方要使用此功能時,在此字段內填入00001[Hex]~ FFFFF[Hex]之間的一個偽隨機數,作為該數據流的標志符[2、7](注:有些像連接標志符,無連接IP協議在處理連續流時,借用了面向連接協議中的連接標志符的概念),當發送方不使用此功能時,該字段全填為“0”,中間節點將忽略這一字段。
在RFC 2460的附錄A中描述了當前Flow Label字段的預期語義和用法。在RFC 6437《IPv6 Flow Label Specification》中詳細描述了IPv6 Flow Label字段、IPv6節點標簽流的最低要求、IPv6節點轉發標簽報文、建立流狀態的方法。
4、用戶數據長度(Payload Length)字段:
此字段的長度為16比特(無符號整數)。IPv6有效載荷的長度,即,在這個IPv6報頭之后的數據包的其余部分,以八位字節為單位。(注意,任何擴展頭都被認為是有效負載的一部分,也就是說,包含在長度計數中。)它取代了IPv4中的“報文頭長度(IHL)”字段(4比特)。由于IPv4報頭可選部分長度可變,因此用報頭長度字段來定界。IPv6將可選部分放入用戶數據(Payload)部分,由分組頭中8比特的“下一頭(Next Header)”字段來指明在Payload中緊跟IPv6分組頭固定部分之后的擴展分組頭的類別。有關編碼與IPv4中“協議(Protocol)”字段編碼相同(由RFC 1700規定)。
5、下一分組頭(Next Header)標志符字段:
此字段的長度為8比特。指明緊跟在IPv6分組頭后面的IPv6擴展分組頭或IP層之上的協議類型(如TCP、UDP或ICMPv6等),編碼規則與IPv4的Protocol字段相同,由RFC 1700界定。其IPv6下一分組頭字段的常見值及含義詳見下表3-5。IPv6下一分組頭字段的全部值(0~255)是由互聯網號碼分配機構(IANA)分配管理的。
表 3-5:IPv6下一分組頭字段的常見值及含義
欲詳細了解IPv6下一分組頭字段的全部值(0~255)的請進入。
6、跨越節點數限制(Hop Limit)字段:
該字段的長度為8比特(無符號整數)。它是IPv4中“存活期(Time To Live)”字段(也為8比特)的替代物。IPv6用跨越節點數替代IPv4中的在網中存活時間(秒)更具有可操作性。每經過一個中轉節點,Hop Limit之值被減1;減到0時,該分組被丟棄。
7、源地址/目的地址(Source/Destination Address)字段:
IPv6的地址字段(包括源地址和目的地址)由IPv4的4字節(32比特)增加為16字節(128比特),以解決lPv4的4字節地址的不足。RFC 2373對IPv6的地址有關結構做了詳細的規定。
欲詳細了解IPv6地址技術介紹的請進入。
四、IPv6擴展分組頭:
1、概述
IPv6擴展分組頭(IPv6 Extension Headers)其字段數及長度時任意,理論上可以任意擴展字段,具備優異的靈活性和巨大的創新空間。擴展分組頭中Next header字段與基本分組頭的Next header作用相同,指明下一個擴展分組頭或上層協議類型。非4字節整倍數時增加填充位(Padding)。
IPv6提供的擴展分組頭是為網絡層的可選功能,從某種意義上講也可以看做是IP子層之上的控制/增強子層的功能。這些字段將置于IPv6固定分組頭之后,但在傳送層協議數據單元之前。在IPv6中,可選的互聯網層信息被編碼在單獨的分組頭中,這些分組頭可能被放置在數據包的IPv6分組頭和上層報頭之間。有少量這樣的擴展分組頭,每個都由一個不同的下一個報頭值標識。如這些例子所示,一個IPv6數據包可以攜帶0個、1個或多個擴展分組頭,每個擴展分組頭由前一個分組頭的下一個分組頭字段標識。
2、種類
目前的RFC 2460文本中定義了4種擴展分組頭,它們分別是:逐段選項擴展頭(Hop-by-Hop Options)、路徑選擇擴展頭(Routing)、分片擴展頭(Fragment)和目的地選項擴展頭(Destination Options);另外,RFC 2402定義了身份認證擴展頭(Authentication),RFC 2406定義了用戶安全數據封裝擴展頭(Encapsulating Security Payload)。根據RFC 8200的定義,目前IPv6的擴展分組頭以及排列順序為:逐跳選項擴展頭、目的選項擴展頭、路由擴展頭、分片擴展頭、認證擴展頭、安全數據封裝擴展頭、目的選項擴展頭和上層協議擴展頭。下表4-2給出了上述某些擴展分組頭的簡介。
表 4-2:IPv6擴展分組頭簡介
五、IPv6的數據
IPv6的數據即用戶間要傳輸的信息數據,即上層協議數據(載荷),此字段緊跟IP擴展分組頭之后。IP分組頭固定部分為40字節,加上可選字段(擴展分組頭)和用戶數據信息部分最大長度為65636字節。
六、IPv4與IPv6分組頭的簡單比較
對比IPv4與IPv6的組成格式,我們可以對二者的分組頭固定部分的字段作如下對比,見下表6。
表 6:IPv4與IPv6報文頭/分組頭固定部分的字段對比
欲進一步了解IPv4與IPv6在性能方面比較的請進入。