电竞比分网-中国电竞赛事及体育赛事平台

分享

IPv6技術(shù)詳解

 天下小糧倉 2019-06-28

1、前戲

IPv6的普及已經(jīng)喊了很多年了,但是事與愿違啊,由于NAT技術(shù)的出現(xiàn),硬是將當(dāng)時岌岌可危的IPv4拖了二十年,所謂的普及IPv6還是遙遙無期,不可否認(rèn)NAT技術(shù)真的很偉大,但是IPv6肯定是未來的趨勢,作為網(wǎng)絡(luò)編程的開發(fā)人員,系統(tǒng)的詳細(xì)的了解IPv6還是很有必要的。我相信IPv6的普及很快就會到來,身懷此絕技的讀者你們,肯定是香饃饃了。所以開始看文章吧。

其實(shí)我們用的比較多的主流操作系統(tǒng)都已經(jīng)支持了IPv6協(xié)議棧,Windows7,Linux2.6之后的版本等等。

2、IPV6的基本概念

周所周知,IPv6采用128位的地址長度擁有更大的地址空間。首先我們先來認(rèn)識一下IPv6到底長成什么樣子。

IPv6數(shù)據(jù)報文和IPv4有很大的差別:

  • 1)數(shù)據(jù)鏈路層(L2)的type字段標(biāo)識為 0x86dd,表示承載的上層協(xié)議是IPv6(IPv4對比:type字段為0x0800);
  • 2)IPv6的頭部字段,和IPv4差別巨大(可以猜測到,IPv6和IPv4無法兼容)。

我們來看下ipv6的報文頭部格式:

IPv6技術(shù)詳解

ipv6報文頭部

ipv6的頭部更加的簡單,少了很多的字段,對比ipv4,有這幾個地方需要注意:

  • 1)IPv6報文頭部是定長(固定為40字節(jié)),IPv4報文頭部是變長的。這個意味著,寫代碼處理IPv6數(shù)據(jù)報文的效率會提高很多:);
  • 2)IPv6中Hop Limit字段含義類似IPv4的TTL;
  • 3)IPv6中的Traffic Class字段含義類似IPv4中的TOS(Type Of Service);
  • 4)IPv6的報文頭部取消了校驗(yàn)和字段:取消這個字段也是對IPv4協(xié)議的一個改進(jìn)。當(dāng)IPv4報文在網(wǎng)路間傳輸,每經(jīng)過一個路由器轉(zhuǎn)發(fā)就是修改TTL字段,就需要重新計算校驗(yàn)和,而由于數(shù)據(jù)鏈路層L2和傳輸層L4的校驗(yàn)已經(jīng)足夠強(qiáng)壯,因此IPv6取消這個字段會提高路由器的轉(zhuǎn)發(fā)效率。值得一提的是,在IPv6協(xié)議下,傳輸層L4協(xié)議UDP、TCP是強(qiáng)制需要進(jìn)行校驗(yàn)和的(IPv4是可選的);
  • 5)IPv6報文頭部中的Next Header字段表示“承載上一層的協(xié)議類型”或者“擴(kuò)展頭部類型”。

這里的含義與IPv4有很大的差別,需要加以解釋:

  • 當(dāng)IPv6數(shù)據(jù)報文承載的是上層協(xié)議ICMPv6、TCP、UDP等的時候,Next Header的值分別為58、6、17,這個時候和IPv4報文頭部中的Protocol字段很類似;
  • 當(dāng)不是以上3種協(xié)議類型的時候,IPv6報文頭部緊接的是擴(kuò)展頭部。擴(kuò)展頭部是IPv6引入的一個新的概念,每個IPv6的數(shù)據(jù)報文可以承載0個或多個擴(kuò)展頭部,擴(kuò)展頭部通過鏈表的形式組織起來。當(dāng)IPv6數(shù)據(jù)報文承載著擴(kuò)展頭部的時候,Next Header的數(shù)值為擴(kuò)展頭部的類型值。

為什么要引入擴(kuò)展頭部這個概念,這里也是IPv6對IPv4改進(jìn)的一個方面,用擴(kuò)展頭部取代了IPv4的可選項信息,精簡了IPv6的頭部,增強(qiáng)了IPv6的擴(kuò)展性。有同學(xué)會不會有疑問,IPv6的分片數(shù)據(jù)報文怎么處理?其實(shí)就是使用了IPv6擴(kuò)展頭部。

當(dāng)發(fā)送一個分片IPv6數(shù)據(jù)報文的時候,IPv6使用的是擴(kuò)展頭部的形式組織各個分片的信息,IPv6報文頭部Next Header字段值為44表示存在擴(kuò)展頭部,擴(kuò)展頭部是IPv6分片數(shù)據(jù)信息。

對比IPv4,分片信息是記錄在IPv4報文頭部的分片字段中。

IPv6的擴(kuò)展頭部類型有很多種,除了上述的分片頭部,還有路由頭部、逐跳可選頭部等,具體的可以參考RFC2460。

本章主要介紹了IPv6的一些很直觀的認(rèn)識,下面逐漸介紹IPv6上的基本知識和概念。

3、ipv6的地址語法

讀者可以網(wǎng)上查,在此不贅述。

4、IPv6地址的號段劃分和前綴表示法

IPv6擁有128位巨大的地址空間,對于那么大的空間,也不是隨意的劃分,而是使用按照bit位進(jìn)行號段劃分(與鵝廠內(nèi)部一些的64位uin改造放號的zone劃分算法)。

IPv6的地址結(jié)構(gòu)如下圖:

IPv6技術(shù)詳解

例如RFC4291中定義了n=48, m=16,也就是子網(wǎng)和接口ID與各占64位。

IPv6支持子網(wǎng)前綴標(biāo)識方法,類似于IPv4的無分類域間路由CIDR機(jī)制(注意:IPv6沒有子網(wǎng)掩碼mask的概念)。

使用“IPv6地址/前綴長度”表示方法,例如:

  • 2001:C3:0:2C6A::/64表示一個子網(wǎng);
  • 而2001:C3:0:2C6A:C9B4:FF12:48BC:1A22/64表示該子網(wǎng)下的一個節(jié)點(diǎn)地址。

可以看到,一個IPv6的地址有子網(wǎng)前綴+接口ID構(gòu)成,子網(wǎng)前綴由地址分配和管理機(jī)構(gòu)定義和分配,而接口ID可以由各操作系統(tǒng)實(shí)現(xiàn)生成,生成算法后面的章節(jié)會介紹。

5、IPv6的地址類型

IPv6地址分三種類型:

  • 1)單播,對應(yīng)于IPv4的普通公網(wǎng)和私網(wǎng)地址;
  • 2)組播,對應(yīng)于IPv4的組播(多播)地址;
  • 3)任播,IPv6新增的地址概念類型。

IPv6沒有廣播地址,用組播地址實(shí)現(xiàn)廣播的功能。實(shí)際上我們工作和生活最可能最多接觸的就是單播地址,接下來本文重點(diǎn)會講解單播地址的種類。組播和任播地址有興趣的同學(xué)自行查閱相關(guān)RFC和文獻(xiàn)。

這篇寫的不夠好,希望大家見諒,謝謝大家支持。

喜歡我的文章的話,就關(guān)注我吧!不要只收藏和轉(zhuǎn)發(fā)哦,每天至少兩篇編程知識給大家,都是本人多年的經(jīng)驗(yàn)總結(jié)!

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多