溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

IPv6入門教程

發(fā)布時(shí)間:2020-08-07 22:41:26 來源:ITPUB博客 閱讀:168 作者:小米運(yùn)維 欄目:互聯(lián)網(wǎng)科技

本篇文章主要從基礎(chǔ)概念、IPv6的相關(guān)網(wǎng)絡(luò)工具、關(guān)于移動(dòng)應(yīng)用在IPv6和IPv4網(wǎng)絡(luò)環(huán)境中自動(dòng)降級(jí)機(jī)制的研究等三個(gè)方面介紹了IPv6的入門教程。

前言

眾所周知,32位的IPv4地址已經(jīng)基本耗盡(這里的耗盡只是說的分配完了,實(shí)際上有相當(dāng)一部分并沒有投入到使用中),新一代的網(wǎng)絡(luò)協(xié)議--IPv6采用128位的地址長(zhǎng)度擁有更大的地址空間,如此大的地址空間,可以給地球上的每粒沙子分配一個(gè)IPv6地址。IPv6網(wǎng)絡(luò)普及的聲音喊了很多年,在國內(nèi)由于受限于各種因素卻一直沒有推廣開。2017年11月開始中共中央辦公廳和國務(wù)院辦公廳印發(fā)了《推薦互聯(lián)網(wǎng)協(xié)議第六版(IPv6)規(guī)模部署行動(dòng)計(jì)劃》http://www.xinhuanet.com/politics/2017-11/26/c_1122012631.htm,并發(fā)出通知,要求各地區(qū)各部門結(jié)合實(shí)際認(rèn)真貫徹落實(shí)。這條新聞傳達(dá)了一個(gè)很重要的信息:這個(gè)是推進(jìn)中國IPv6發(fā)展的戰(zhàn)略總動(dòng)員令。2018年6月份,網(wǎng)信辦對(duì)三大運(yùn)營商和國內(nèi)頭部的50家互聯(lián)網(wǎng)公司發(fā)出紅頭文件,要求各大運(yùn)營商和頭部互聯(lián)網(wǎng)公司給出各自的實(shí)施方案和排期,并定下目標(biāo):在2018年年底國內(nèi)IPv6活躍用戶數(shù)上升一個(gè)階段。所以從2018年6月份開始,各大公司的IPv6改造才緊鑼密鼓改造起來,并且在2018年底取得了相當(dāng)?shù)某晒?/span>

由于IPv6網(wǎng)絡(luò)協(xié)議相對(duì)來說還是一個(gè)比較新的協(xié)議,在推廣過程中,很多人對(duì)這個(gè)網(wǎng)絡(luò)協(xié)議缺乏必備的知識(shí),所以在這里寫一篇簡(jiǎn)單的文章對(duì)該協(xié)議進(jìn)行簡(jiǎn)單介紹和應(yīng)用。

基礎(chǔ)概念

軟件支持

當(dāng)前大部分操作系統(tǒng)和硬件都比較好地支持IPv6了,簡(jiǎn)單列舉如下:

  • Windows:windows 7、windows 8.x、windows 10,默認(rèn)開啟IPv6;

  • Linux:內(nèi)核2.6.x、內(nèi)核3.x、內(nèi)核4.x已經(jīng)支持IPv6(需要手動(dòng)開啟);

  • iOS:IOS9開始已經(jīng)支持IPv6 Only,2016年蘋果已經(jīng)強(qiáng)制要求app必須支持IPv6;

  • Android也已經(jīng)支持IPv6(但是不支持DHCPv6)。

如何查看手機(jī)或者電腦的網(wǎng)絡(luò)是否支持IPv6呢,在手機(jī)或者電腦上的瀏覽器中打開:Ipv6-test.com,顯示如下說明你的手機(jī)網(wǎng)絡(luò)已經(jīng)支持IPv6,并已經(jīng)分配了IPv6地址。

IPv6入門教程

圖一:查看當(dāng)前網(wǎng)絡(luò)是否支持IPv6

從上述截圖中我們可以看到,當(dāng)前大部分支持IPv6的網(wǎng)絡(luò)環(huán)境中都是雙棧環(huán)境,即同時(shí)支持IPv4和IPv6,也就是當(dāng)我們連接運(yùn)營商LTE網(wǎng)絡(luò)的時(shí)候,它一般會(huì)分配一個(gè)IPv4地址(一般是10.開頭的內(nèi)網(wǎng)地址),和一個(gè)IPv6地址(全球單播地址,相當(dāng)于ipv4里面的公網(wǎng)地址)。雙棧環(huán)境下,用戶自動(dòng)選擇使用什么IPv6或者IPv4協(xié)議去連接遠(yuǎn)端服務(wù),如果服務(wù)端域名支持IPv6(域名解析中存在AAAA記錄),客戶端則會(huì)優(yōu)先使用IPv6協(xié)議去連接服務(wù)端(特殊情況下除外);當(dāng)服務(wù)端域名只支持IPv4(DNS解析中只有A記錄),客戶端則會(huì)使用IPv4協(xié)議去連接服務(wù)端,完成請(qǐng)求。

IPv6協(xié)議簡(jiǎn)介

先看一個(gè)簡(jiǎn)單的IPv6報(bào)文抓包圖:

IPv6入門教程

圖二:ipv6數(shù)據(jù)報(bào)文

從WireShark的報(bào)文信息來看,IPv6報(bào)文的報(bào)文類型字段、頭部字段和IPv4報(bào)文存在較大的差異。RFC2460定義了IPv6數(shù)據(jù)報(bào)格式??傮w結(jié)構(gòu)上,IPv6數(shù)據(jù)報(bào)格式與IPv4數(shù)據(jù)報(bào)格式是一樣的,也是由IP報(bào)頭和數(shù)據(jù)(在IPv6中稱為有效載荷)這兩個(gè)部分組成的,但在IPv6數(shù)據(jù)報(bào)數(shù)據(jù)部分還可以包括0個(gè)或者多個(gè)IPv6擴(kuò)展報(bào)頭(Extension header),如下圖所示。IP報(bào)頭部分固定為40字節(jié)長(zhǎng)度,而有效載荷部分最長(zhǎng)不得超過65535字節(jié)。

IPv6入門教程

圖三:IPv6頭部字段

簡(jiǎn)單介紹下IPv6報(bào)文中的各個(gè)頭部字段:

  • Version(版本):該字段表示IP版本,值為6。

  • Traffic class(流量類別):該字段及其功能類似于IPv4的業(yè)務(wù)類型字段。該字段以區(qū)分業(yè)務(wù)編碼點(diǎn)(DSCP)標(biāo)記一個(gè)IPv6數(shù)據(jù)包,以此指明數(shù)據(jù)包應(yīng)當(dāng)如何處理。

  • Flow label(流標(biāo)簽):該字段用來標(biāo)記IP數(shù)據(jù)包的一個(gè)流,當(dāng)前的標(biāo)準(zhǔn)中沒有定義如何管理和處理流標(biāo)簽的細(xì)節(jié)。

  • Payload length(有效載荷長(zhǎng)度):該字段表示有效載荷的長(zhǎng)度,有效載荷是指緊跟IPv6基本報(bào)頭的數(shù)據(jù)包,包含IPv6擴(kuò)展報(bào)頭。

  • Next header(下一報(bào)頭):該字段指明了跟隨在IPv6基本報(bào)頭后的擴(kuò)展報(bào)頭的信息類型。

更多詳細(xì)比較可以參考這篇文章:

IPV6報(bào)文頭部格式:http://support.huawei.com/hedex/pages/EDOC10000256133118G231/08/EDOC10000256133118G231/08/resources/fea_des/topics/fea_ipv6_00014.html

>>>>

IPv6地址表示方法

IPv6地址由八組、每組四位16進(jìn)制數(shù)字組成,每組之間由":"來分隔,看個(gè)簡(jiǎn)單的例子:

2001:cdba:0000:0000:0000:0000:3257:9652,每個(gè):前后都是4位16進(jìn)制的數(shù)字,共分隔成8組)

根據(jù)簡(jiǎn)寫規(guī)則,上述地址可以簡(jiǎn)寫成如下表示:

1.省略前導(dǎo)零,上述ip地址可以表示為:

2001:cdba:0:0:0:0:3257:9652(4個(gè)0簡(jiǎn)寫成1個(gè)0)

2.通過使用雙冒號(hào)(::)代替一系列零來指定Ipv6地址,上述地址可以表示為:
2001:cdba::3257:9652(:0:0:0:0:簡(jiǎn)寫成::,即省略所有的0,需要注意(
一個(gè)IP地址中只可使用一次雙冒號(hào))

>>>>

IPv6地址分類

IPv6地址是單個(gè)或一組接口的128位標(biāo)識(shí)符。在IPv4中,ip地址分為A、B、C、D、E五類,而IPv6突破了IPv4類別劃分,主要?jiǎng)澐譃槿N地址類型:?jiǎn)尾サ刂?、組播地址和任意播地址,各類地址的介紹如下:

  • 單播(Unicast)地址:?jiǎn)尾サ刂纷鳛橐粋€(gè)單一的接口標(biāo)識(shí)符。IPv6數(shù)據(jù)包發(fā)送到一個(gè)單播地址被傳遞到由該地址標(biāo)識(shí)的接口。對(duì)應(yīng)于IPv4的普通公網(wǎng)和私網(wǎng)地址;

  • 多播(MultiCast)地址:多播地址作為一組標(biāo)識(shí)符,多播地址的行為/接口可能屬于不同的節(jié)點(diǎn)集合。IPv6數(shù)據(jù)包發(fā)送到多播地址被傳遞到多個(gè)接口;

  • 任播(AnyCast)地址:一組接口(一般屬于不同節(jié)點(diǎn))的標(biāo)識(shí)符。發(fā)往任播地址的包被送給該地址標(biāo)識(shí)的接口之一(路由協(xié)議度量距離最近的)。

單播地址是使用最為廣泛的一類地址,單播地址中包含了多種地址類型,包括:

1-1.單播地址

1-1-1全球單播地址

前綴2000::/3,指的是在IPv6的前3bit,必須為二進(jìn)制的001。而二進(jìn)制換化為十六進(jìn)制,需要4bit的二進(jìn)制數(shù),所以IPv6全球單播地址的從左到右的第一字段的變化范圍為“0010”到“0011”,換化為十六進(jìn)制變化范圍就為2到3。那么如下圖4所示,表示IPv6全球單播地址的范圍。相當(dāng)于IPv4的公網(wǎng)地址(IPv6的誕生根本上就是為了解決IPv4公網(wǎng)地址耗盡的問題)。這種地址在全球的路由器間可以路由。

IPv6入門教程

圖四. IPv6全球單播地址的范圍

1-1-2鏈路本地地址

前綴FE80::/10,顧名思義,此類地址用于同一鏈路上的節(jié)點(diǎn)間的通信,主要用于自動(dòng)配置地址和鄰居節(jié)點(diǎn)發(fā)現(xiàn)過程。Windows和Linux開啟IPv6后,默認(rèn)會(huì)給網(wǎng)卡接口自動(dòng)配置一個(gè)鏈路本地地址。也就是說,一個(gè)接口一定有一個(gè)鏈路本地地址。如下圖:

IPv6入門教程

圖五.IPv6鏈路本地地址

每個(gè)接口必須至少有一個(gè)鏈路本地地址;每個(gè)接口可以配置1個(gè)以上的單播地址,例如一個(gè)接口可以配置一個(gè)鏈路本地地址,同時(shí)也可以配置一個(gè)全球單播地址。

注意:很容易會(huì)把鏈路本地地址和IPv4的私網(wǎng)/內(nèi)網(wǎng)地址對(duì)應(yīng)起來,其實(shí)鏈路本地地址對(duì)應(yīng)于IPv4的APIPA地址,也就是169.254開頭的地址(典型場(chǎng)景就是windows開啟自動(dòng)獲取地址而獲取失敗后自動(dòng)分配一個(gè)169.254的地址)。而IPv4私網(wǎng)對(duì)應(yīng)于IPv6的唯一本地地址。

1-1-3唯一本地地址

前綴FC00::/7,相當(dāng)于IPv4的私網(wǎng)地址(10.0.0.0、172.16.0.0、192.168.0.0),在RFC4193中新定義的一種解決私網(wǎng)需求的單播地址類型。

在IPv4中,利用NAT技術(shù)私網(wǎng)內(nèi)的網(wǎng)絡(luò)節(jié)點(diǎn)可以使用統(tǒng)一的公網(wǎng)出口訪問互聯(lián)網(wǎng)資源,大大節(jié)省了IPv4公網(wǎng)地址的消耗(IPv6推進(jìn)緩慢的原因之一)。另一方面,由于默認(rèn)情況下私網(wǎng)內(nèi)節(jié)點(diǎn)與外界通信的發(fā)起是單向的,網(wǎng)絡(luò)訪問僅僅能從私網(wǎng)內(nèi)發(fā)起,外部發(fā)起的請(qǐng)求會(huì)被統(tǒng)一網(wǎng)關(guān)或者防火墻阻隔掉,這樣的網(wǎng)絡(luò)架構(gòu)很好的保護(hù)了私網(wǎng)內(nèi)的節(jié)點(diǎn)安全性和私密性。因此,在安全性和私密性要求下,IPv6中同樣需要支持私網(wǎng),并且也需要支持NAT。在Linux內(nèi)核3.7版本開始加入對(duì)IPv6 NAT的支持,實(shí)現(xiàn)的方式和IPv4下的差別不大(Linux內(nèi)核代碼中變量和函數(shù)的命名幾乎就是ctrl+c和ctrl+v過來的)。IPv6唯一本地地址配置如下圖:

IPv6入門教程

圖六.IPv6唯一本地地址

1-1-4特殊地址

除了上述那些常見的單播地址,IPv6中還有一些特殊地址,簡(jiǎn)單列舉如下:

  • 全0的地址::/128為未定義地址,大家不要去使用

  • 除了最后一位是1,其它都是0的地址::1/128為本地環(huán)回地址,同IPv4里面的127.0.0.1

  • FF00::/8這個(gè)網(wǎng)段的地址都是多播地址

IPv6相關(guān)網(wǎng)絡(luò)工具
>>>>

dig

dns解析,查看一個(gè)域名是否具有AAAA記錄

IPv6入門教程

圖七.dig獲取域名的AAAA記錄

>>>>

curl

通過IPv6網(wǎng)絡(luò)協(xié)議進(jìn)行請(qǐng)求響應(yīng),獲取服務(wù)端數(shù)據(jù)

IPv6入門教程

圖八.curl通過IPv6獲取接口數(shù)據(jù)

>>>>

ping6

查看IPv6網(wǎng)絡(luò)的連通性和域名解析的正確性

IPv6入門教程

圖九.ping6測(cè)試IPv6網(wǎng)絡(luò)連通性

>>>>

telnet

查看對(duì)應(yīng)IPv6地址端口是否開放

IPv6入門教程

圖十.telnet查看端口可用性

>>>>

mtr

IPv6網(wǎng)絡(luò)連通性判斷工具

IPv6入門教程

圖十一.mtr查看IPv6網(wǎng)絡(luò)連通性

>>>>

traceroute6

IPv6網(wǎng)絡(luò)測(cè)試、評(píng)估和管理工具

IPv6入門教程

圖十二.traceroute6查看IPv6路由節(jié)點(diǎn)情況

>>>>

ip&route

查看本機(jī)IPv6路由表

IPv6入門教程

圖十三.查看本機(jī)IPv6路由表

關(guān)于移動(dòng)應(yīng)用在IPv6和IPv4網(wǎng)絡(luò)環(huán)境中自動(dòng)降級(jí)機(jī)制的研究

由于最近在幫助業(yè)務(wù)上線IPv6,所以簡(jiǎn)單使用安卓手機(jī)(小米5S+MIUI10+瀏覽器)驗(yàn)證了下手機(jī)在雙棧環(huán)境中如何自動(dòng)選擇合適的協(xié)議向服務(wù)端請(qǐng)求數(shù)據(jù)。具體過程如下:

第一步需要對(duì)服務(wù)端的域名進(jìn)行DNS解析??蛻舳双@取域名的DNS解析時(shí),會(huì)先請(qǐng)求域名的AAAA記錄,等DNS服務(wù)器返回域名的AAAA記錄解析后,然后再請(qǐng)求域名的A記錄。具體過程如下抓包截圖:

IPv6入門教程

圖十四.DNS解析抓包

第二步根據(jù)獲取到的域名的AAAA記錄和A記錄情況,執(zhí)行不同的操作:

1.如果AAAA記錄中存在有效的IPv6地址,且本地網(wǎng)絡(luò)支持IPv6,則會(huì)優(yōu)先使用AAAA記錄里面對(duì)應(yīng)IPv6地址通過IPv6網(wǎng)絡(luò)協(xié)議去連接服務(wù)端,當(dāng)通過域名的AAAA記錄無法連接上服務(wù)端,客戶端一般會(huì)重試4次(重試過程大概總計(jì)會(huì)耗費(fèi)300ms左右,視具體網(wǎng)絡(luò)環(huán)境而定),如果四次都無法通過IPV6地址連接上服務(wù)端,客戶端會(huì)自動(dòng)降級(jí)使用IPV4協(xié)議連接服務(wù)端,具體過程如下圖。

IPv6入門教程

圖十五.IPv6和IPv4自動(dòng)降級(jí)機(jī)制

2.如果域名的AAAA記錄中存在有效的IPv6地址,但是本地網(wǎng)絡(luò)不支持IPv6,則會(huì)直接使用A記錄中的IPv4地址通過IPv4網(wǎng)絡(luò)協(xié)議去連接服務(wù)端;

3.如果DNS服務(wù)器返回的AAAA記錄解析中沒有包含有效的IPv6地址,只有有效的A記錄,則會(huì)直接使用A記錄中的IPv4地址通過IPV4網(wǎng)絡(luò)協(xié)議去連接服務(wù)端。

總結(jié)

本篇文章僅僅只是對(duì)IPv6協(xié)議做了簡(jiǎn)單介紹,涉及的知識(shí)方面較少。更多寫的是在業(yè)務(wù)上線IPv6過程中學(xué)習(xí)到的或者使用過的一些知識(shí)、工具。很多IPv6的基本概念并沒有介紹到,比如說鄰居發(fā)現(xiàn)協(xié)議、DHCPv6、ICMPv6、PMTU、EUI-64計(jì)算鏈路本地地址等,這些協(xié)議在網(wǎng)絡(luò)上已經(jīng)有很多比較好的文章或者權(quán)威協(xié)議對(duì)這些知識(shí)點(diǎn)進(jìn)行了介紹,大家不妨多動(dòng)手谷歌下。IPv6入門教程

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI