IPv6的普及已經(jīng)喊了很多年了,但是事與愿違啊,由于NAT技術(shù)的出現,硬是將當時(shí)岌岌可危的IPv4拖了二十年,所謂的普及IPv6還是遙遙無(wú)期,不可否認NAT技術(shù)真的很偉大,但是IPv6肯定是未來(lái)的趨勢,作為網(wǎng)絡(luò )編程的開(kāi)發(fā)人員,系統的詳細的了解IPv6還是很有必要的。我相信IPv6的普及很快就會(huì )到來(lái),身懷此絕技的讀者你們,肯定是香饃饃了。所以開(kāi)始看文章吧。
其實(shí)我們用的比較多的主流操作系統都已經(jīng)支持了IPv6協(xié)議棧,Windows7,Linux2.6之后的版本等等。
周所周知,IPv6采用128位的地址長(cháng)度擁有更大的地址空間。首先我們先來(lái)認識一下IPv6到底長(cháng)成什么樣子。
IPv6數據報文和IPv4有很大的差別:
我們來(lái)看下ipv6的報文頭部格式:
ipv6報文頭部
ipv6的頭部更加的簡(jiǎn)單,少了很多的字段,對比ipv4,有這幾個(gè)地方需要注意:
這里的含義與IPv4有很大的差別,需要加以解釋?zhuān)?/span>
為什么要引入擴展頭部這個(gè)概念,這里也是IPv6對IPv4改進(jìn)的一個(gè)方面,用擴展頭部取代了IPv4的可選項信息,精簡(jiǎn)了IPv6的頭部,增強了IPv6的擴展性。有同學(xué)會(huì )不會(huì )有疑問(wèn),IPv6的分片數據報文怎么處理?其實(shí)就是使用了IPv6擴展頭部。
當發(fā)送一個(gè)分片IPv6數據報文的時(shí)候,IPv6使用的是擴展頭部的形式組織各個(gè)分片的信息,IPv6報文頭部Next Header字段值為44表示存在擴展頭部,擴展頭部是IPv6分片數據信息。
對比IPv4,分片信息是記錄在IPv4報文頭部的分片字段中。
IPv6的擴展頭部類(lèi)型有很多種,除了上述的分片頭部,還有路由頭部、逐跳可選頭部等,具體的可以參考RFC2460。
本章主要介紹了IPv6的一些很直觀(guān)的認識,下面逐漸介紹IPv6上的基本知識和概念。
讀者可以網(wǎng)上查,在此不贅述。
IPv6擁有128位巨大的地址空間,對于那么大的空間,也不是隨意的劃分,而是使用按照bit位進(jìn)行號段劃分(與鵝廠(chǎng)內部一些的64位uin改造放號的zone劃分算法)。
IPv6的地址結構如下圖:
例如RFC4291中定義了n=48, m=16,也就是子網(wǎng)和接口ID與各占64位。
IPv6支持子網(wǎng)前綴標識方法,類(lèi)似于IPv4的無(wú)分類(lèi)域間路由CIDR機制(注意:IPv6沒(méi)有子網(wǎng)掩碼mask的概念)。
使用“IPv6地址/前綴長(cháng)度”表示方法,例如:
可以看到,一個(gè)IPv6的地址有子網(wǎng)前綴+接口ID構成,子網(wǎng)前綴由地址分配和管理機構定義和分配,而接口ID可以由各操作系統實(shí)現生成,生成算法后面的章節會(huì )介紹。
IPv6地址分三種類(lèi)型:
IPv6沒(méi)有廣播地址,用組播地址實(shí)現廣播的功能。實(shí)際上我們工作和生活最可能最多接觸的就是單播地址,接下來(lái)本文重點(diǎn)會(huì )講解單播地址的種類(lèi)。組播和任播地址有興趣的同學(xué)自行查閱相關(guān)RFC和文獻。