3.3 地址問題
3.3.1 為什么IPv6協(xié)議的地址長度是128位?
有些人也許要問,IPv4地址不夠用,那我在IPv4上再增加幾位地址表示就行了,何必非要是IPv6的128 位呢?這種提問是對(duì)芯片設(shè)計(jì)及CPU處理方式不理解造成的,同時(shí)也對(duì)未來網(wǎng)絡(luò)的擴(kuò)展沒有充分的預(yù)見性。芯片設(shè)計(jì)中數(shù)值的表示我們知道是全用“0”、“1” 代表,CPU處理字長發(fā)展到現(xiàn)在分別經(jīng)歷了4位、8位、16位、32位、64位等,我們知道,在計(jì)算機(jī)中,當(dāng)數(shù)據(jù)能用2的指數(shù)次冪字長位的二進(jìn)制數(shù)表示時(shí),CPU對(duì)數(shù)值的處理效率最高。IPv4地址對(duì)應(yīng)的是32比特字長就是因?yàn)楫?dāng)時(shí)的互聯(lián)網(wǎng)上的主機(jī)CPU字長為32位?,F(xiàn)在的64位機(jī)已十分普及,128 位機(jī)正在成長中。將地址定為64位在網(wǎng)絡(luò)擴(kuò)展性上顯得不足,定為其它的一個(gè)長度在硬件芯片設(shè)計(jì)、程序編制方面的效率都將下降,因此從處理效率和未來網(wǎng)絡(luò)擴(kuò)展性上考慮,將IPv6的地址長度定為128位是十分合適的。
3.3.2 IPv6的128位地址是一個(gè)什么概念?
IPv6提供128位的地址空間,IPv6所能提供的巨大的地址容量可以從以下幾個(gè)方面來說明:
共有2128個(gè)不同的IPv6地址,也就是全球可分配地址數(shù)為340,282,366,920,938,463,463,374,607,431,768,211,456個(gè);
若按土地面積分配,每平方厘米可獲得2.2*1020個(gè)地址。
IPv6地址耗盡的機(jī)會(huì)是很小的。在可預(yù)見的很長時(shí)期內(nèi),IPv6的128位地址長度形成的巨大的地址空間能夠?yàn)樗锌梢韵胂蟪龅木W(wǎng)絡(luò)設(shè)備提供一個(gè)全球唯一的地址,IPv6充足的地址空間將極大地滿足那些伴隨著網(wǎng)絡(luò)智能設(shè)備的出現(xiàn)而對(duì)地址增長的需求,例如個(gè)人數(shù)據(jù)助理(PDA)、移動(dòng)電話(Mobile Phone)、家庭網(wǎng)絡(luò)接入設(shè)備(HAN)等。
3.3.3 IPv6地址是如何表示的?
IPv4地址表示為點(diǎn)分十進(jìn)制格式,32位的地址分成4個(gè)8位分組,每個(gè)8位寫成十進(jìn)制,中間用點(diǎn)號(hào)分隔。而IPv6的128位地址則是以16位為一分組,每個(gè)16位分組寫成4個(gè)十六進(jìn)制數(shù),中間用冒號(hào)分隔,稱為冒號(hào)分十六進(jìn)制格式。例如:21DA:00D3:0000:2F3B:02AA:00FF:FE28:9C5A 是一個(gè)完整的IPv6地址。
IPv6的地址表示有以下幾種特殊情形:
IPv6地址中每個(gè)16位分組中的前導(dǎo)零位可以去除做簡化表示,但每個(gè)分組必須至少保留一位數(shù)字。如上例中的地址,去除前導(dǎo)零位后可寫成:21DA:D3:0:2F3B:2AA:FF:FE28:9C5A。
某些地址中可能包含很長的零序列,為進(jìn)一步簡化表示法,還可以將冒號(hào)十六進(jìn)制格式中相鄰的連續(xù)零位合并,用雙冒號(hào)“::”表示?!埃海骸狈?hào)在一個(gè)地址中只能出現(xiàn)一次,該符號(hào)也能用來壓縮地址中前部和尾部的相鄰的連續(xù)零位。例如地址1080:0:0:0:8:800:200C:417A,0:0:0:0: 0:0:0:1,0:0:0:0:0:0:0:0分別可表示為壓縮格式1080::8:800:200C:417A,::1,:: 。
在IPv4和IPv6混合環(huán)境中,有時(shí)更適合于采用另一種表示形式:x:x:x:x:x:x:d.d.d.d,其中x是地址中6個(gè)高階16位分組的十六進(jìn)制值,d是地址中4個(gè)低階8位分組的十進(jìn)制值(標(biāo)準(zhǔn)IPv4表示)。例如地址0:0:0:0:0:0:13.1.68.3 ,0:0:0:0:0:FFFF:129.144.52.38 寫成壓縮形式為::13.1.68.3,::FFFF.129.144.52.38 。
要在一個(gè)URL中使用文本IPv6地址,文本地址應(yīng)該用符號(hào)“[”和“]”來封閉。例如文本IPv6地址FEDC:BA98:7654:3210:FEDC:BA98:7654:3210寫作URL示例為
?。踰rl=http://[fedc:BA98:7654:3210:FEDC:BA98:7654:3210]:80/index.html]http://[FEDC:BA98:7654:3210:FEDC:BA98:7654:3210]:80/index.html[/url]
。
3.3.4 IPv6地址為128位,配地址豈不是要花費(fèi)很多時(shí)間?
IPv6協(xié)議支持地址自動(dòng)配置,這是一種即插即用的機(jī)制。IPv6節(jié)點(diǎn)通過地址自動(dòng)配置得到IPv6地址和網(wǎng)關(guān)地址。
IPv6支持無狀態(tài)地址自動(dòng)配置和狀態(tài)地址自動(dòng)配置兩種地址自動(dòng)配置方式。在無狀態(tài)地址自動(dòng)配置方式下,需要配置地址的網(wǎng)絡(luò)接口先使用鄰居發(fā)現(xiàn)機(jī)制獲得一個(gè)鏈路本地地址。網(wǎng)絡(luò)接口得到這個(gè)鏈路本地地址之后,再接收路由器宣告的地址前綴,結(jié)合接口標(biāo)識(shí)得到一個(gè)全球地址。而狀態(tài)地址自動(dòng)配置的方式,如動(dòng)態(tài)主機(jī)配置協(xié)議(DHCP),需要一個(gè)DHCP服務(wù)器,通過客戶機(jī)/服務(wù)器模式從DHCP服務(wù)器處得到地址配置的信息。
3.3.5 IPv6地址都有哪些類型?
所有類型的IPv6地址都被分配到接口,而不是節(jié)點(diǎn)。IPv6地址是單個(gè)或一組接口的128位標(biāo)識(shí)符,有三種類型:
(1) 單播(Unicast)地址
單一接口的標(biāo)識(shí)符。發(fā)往單播地址的包被送給該地址標(biāo)識(shí)的接口。對(duì)于有多個(gè)接口的節(jié)點(diǎn),它的任何一個(gè)單播地址都可以用作該節(jié)點(diǎn)的標(biāo)識(shí)符。IPv6單播地址是用連續(xù)的位掩碼聚集的地址,類似于CIDR的IPv4地址。IPv6中的單播地址分配有多種形式,包括全部可聚集全球單播地址、NSAP地址、IPX分級(jí)地址、站點(diǎn)本地地址、鏈路本地地址以及運(yùn)行IPv4的主機(jī)地址。單播地址中有下列兩種特殊地址:
不確定地址
單播地址0:0:0:0:0:0:0:0稱為不確定地址。它不能分配給任何節(jié)點(diǎn)。它的一個(gè)應(yīng)用示例是初始化主機(jī)時(shí),在主機(jī)未取得自己的地址以前,可在它發(fā)送的任何IPv6包的源地址字段放上不確定地址。不確定地址不能在IPv6包中用作目的地址,也不能用在IPv6路由頭中;
回環(huán)地址
單播地址0:0:0:0:0:0:0:1稱為回環(huán)地址。節(jié)點(diǎn)用它來向自身發(fā)送IPv6包。它不能分配給任何物理接口。
?。?) 任意播(AnyCast)地址
一組接口(一般屬于不同節(jié)點(diǎn))的標(biāo)識(shí)符。發(fā)往任意播地址的包被送給該地址標(biāo)識(shí)的接口之一(路由協(xié)議度量距離最近的)。IPv6任意播地址存在下列限制:
· 任意播地址不能用作源地址,而只能作為目的地址;
· 任意播地址不能指定給IPv6主機(jī),只能指定給IPv6路由器;
IPv6任意播地址
(3) 組播(MultiCast)地址
一組接口(一般屬于不同節(jié)點(diǎn))的標(biāo)識(shí)符。發(fā)往多播地址的包被送給該地址標(biāo)識(shí)的所有接口。地址開始的11111111標(biāo)識(shí)該地址為組播地址。
IPv6組播地址
IPv6中沒有廣播地址,它的功能正在被組播地址所代替。另外,在IPv6中,任何全“0”和全“1”的字段都是合法值,除非特殊地排除在外的。特別是前綴可以包含“0”值字段或以“0”為終結(jié)。一個(gè)單接口可以指定任何類型的多個(gè)IPv6地址(單播、任意播、組播)或范圍。
3.3.6 什么是IPv6的可聚集全球單播地址?
IPv6為點(diǎn)對(duì)點(diǎn)通信設(shè)計(jì)了一種具有分級(jí)結(jié)構(gòu)的地址,這種地址被稱為可聚集全球單播地址(Aggregatable Global Unicast Address),它在RFC2374中定義。可聚集地址具有三個(gè)層次的分級(jí)結(jié)構(gòu):
公用拓?fù)洌禾峁┕没ヂ?lián)網(wǎng)傳送服務(wù)的供應(yīng)商和交換局群體;
站點(diǎn)拓?fù)洌罕镜氐奶囟ㄕ军c(diǎn)或組織,不提供到本站點(diǎn)以外節(jié)點(diǎn)的公用傳送服務(wù);
接口標(biāo)識(shí)符:標(biāo)識(shí)鏈路上的接口;
可聚集全球單播地址的分級(jí)結(jié)構(gòu)劃分如下圖所示。開始3個(gè)地址位是地址類型前綴,用于區(qū)別其它地址類型。其后的13位TLA ID、32位NLA ID、16位SLA ID和 64位主機(jī)接口ID,分別用于標(biāo)識(shí)分級(jí)結(jié)構(gòu)中自上向下排列的TLA (Top Level Aggregator,頂級(jí)聚集體)、NLA(Next Level Aggregator,下級(jí)聚集體)、SLA(Site Level Aggregator,站點(diǎn)級(jí)聚集體)和主機(jī)接口。RES保留,以備將來TLA或NLA擴(kuò)充用。TLA是與長途服務(wù)供應(yīng)商和電話公司相互連接的公共網(wǎng)絡(luò)接入點(diǎn),它從國際Internet注冊(cè)機(jī)構(gòu)如IANA處獲得地址。NLA通常是大型ISP,它從TLA處申請(qǐng)獲得地址,并為 SLA分配地址。SLA也可稱為訂戶(subscriber),它可以是一個(gè)機(jī)構(gòu)或一個(gè)小型ISP。SLA負(fù)責(zé)為屬于它的訂戶分配地址。SLA通常為其訂戶分配由連續(xù)地址組成的地址塊,以便這些機(jī)構(gòu)可以建立自己的地址分級(jí)結(jié)構(gòu)以識(shí)別不同的子網(wǎng)。分級(jí)結(jié)構(gòu)的最底層是網(wǎng)絡(luò)主機(jī)。
IPv6可聚集全球單播地址
設(shè)計(jì)這樣的地址格式是為了既支持基于當(dāng)前供應(yīng)商的聚集,又支持被稱為交換局的新的聚集類型。其組合使高效的路由聚集可用于直接連接到供應(yīng)商和連接到交換局兩者的站點(diǎn)上。站點(diǎn)可以選擇連接到兩種類型中的任何一種聚集點(diǎn)。
3.3.7 IPv6的地址分配方式與IPv4有什么區(qū)別?
IPv4中,地址是用戶擁有的。也就是說,一旦用戶從某機(jī)構(gòu)處申請(qǐng)到一段地址空間,他就永遠(yuǎn)使用該地址空間,而不管他是從哪個(gè)因特網(wǎng)服務(wù)提供者(ISP)處獲得服務(wù)。這種方式的缺點(diǎn)是ISP必須在路由表中為每個(gè)用戶的網(wǎng)絡(luò)號(hào)維護(hù)一條表項(xiàng)。隨著用戶數(shù)的增加,會(huì)出現(xiàn)大量無法會(huì)聚的特殊路由,即使無類別域間路由(CIDR)也不能處理這樣的路由表爆炸現(xiàn)象。
IPv6改變了地址的分配方式,從用戶擁有變成了ISP擁有。全球網(wǎng)絡(luò)號(hào)由因特網(wǎng)地址分配機(jī)構(gòu)(IANA)分配給ISP,用戶的全球網(wǎng)絡(luò)地址是ISP地址空間的子集。每當(dāng)用戶改變ISP時(shí),全球網(wǎng)絡(luò)地址必須更新為新ISP提供的地址。這樣ISP能有效地控制路由信息,避免路由爆炸現(xiàn)象的出現(xiàn)。
3.3.8 一臺(tái)IPv6主機(jī)有多少地址?
通常一臺(tái)IPv6主機(jī)有多個(gè)IPv6地址,即使該主機(jī)只有一個(gè)單接口。一臺(tái)IPv6主機(jī)可同時(shí)擁有以下幾種單點(diǎn)傳送地址:
· 每個(gè)接口的鏈路本地地址;
· 每個(gè)接口的單播地址(可以是一個(gè)站點(diǎn)本地地址和一個(gè)或多個(gè)可聚集全球地址);
· 回環(huán)(loopback)接口的回環(huán)地址(::1)。
此外,每臺(tái)主機(jī)還需要時(shí)刻保持收聽以下多點(diǎn)傳送地址上的信息:
· 節(jié)點(diǎn)本地范圍內(nèi)所有節(jié)點(diǎn)組播地址(FF01::1);
· 鏈路本地范圍內(nèi)所有節(jié)點(diǎn)組播地址(FF02::1);
· 請(qǐng)求節(jié)點(diǎn)(solicited-node)組播地址(如果主機(jī)的某個(gè)接口加入請(qǐng)求節(jié)點(diǎn)組);
· 組播組組播地址(如果主機(jī)的某個(gè)接口加入任何組播組)。
3.3.9 一臺(tái)IPv6路由器有多少地址?
一臺(tái)IPv6路由器可被分配以下幾種單點(diǎn)傳送地址:
· 每個(gè)接口的鏈路本地地址;
· 每個(gè)接口的單播地址(可以是一個(gè)站點(diǎn)本地地址和一個(gè)或多個(gè)可聚集全球地址);
· 子網(wǎng)-路由器任意播地址;
· 其他任意播地址(可選);
· 回環(huán)接口的回環(huán)地址(::1)。
同樣,除以上這些地址外,路由器需要時(shí)刻保持收聽以下多點(diǎn)傳送地址上的信息流:
· 節(jié)點(diǎn)本地范圍內(nèi)的所有節(jié)點(diǎn)組播地址(FF01::1);
· 節(jié)點(diǎn)本地范圍內(nèi)的所有路由器組播地址(FF01::2);
· 鏈路本地范圍內(nèi)的所有節(jié)點(diǎn)組播地址(FF02::1);
· 鏈路本地范圍內(nèi)的所有路由器組播地址(FF02::2);
· 站點(diǎn)本地范圍內(nèi)的所有路由器組播地址(FF05::2);
· 請(qǐng)求節(jié)點(diǎn)(solicited-node)組播地址(如果路由器的某個(gè)接口加入請(qǐng)求節(jié)點(diǎn)組);
· 組播組組播地址(如果路由器的某個(gè)接口加入任何組播組)。
3.4 地址自動(dòng)配置技術(shù)
3.4.1 IPv6如何實(shí)現(xiàn)“即插即用”?
“即插即用”是指無需任何人工干預(yù),就可以將一個(gè)節(jié)點(diǎn)插入IPv6網(wǎng)絡(luò)并在網(wǎng)絡(luò)中啟動(dòng),IPv6使用了兩種不同的機(jī)制來支持即插即用網(wǎng)絡(luò)連接:啟動(dòng)協(xié)議(BOOTstrap Protocol,BOOTP)和動(dòng)態(tài)主機(jī)配置協(xié)議(DHCP)。這兩種機(jī)制允許IP節(jié)點(diǎn)從特殊的BOOTP服務(wù)器或DHCP服務(wù)器獲取配置信息。這些協(xié)議采用“狀態(tài)自動(dòng)配置”(Stateful Autoconfiguration),即服務(wù)器必須保持每個(gè)節(jié)點(diǎn)的狀態(tài)信息,并管理這些保存的信息。
狀態(tài)自動(dòng)配置的問題在于,用戶必須保持和管理特殊的自動(dòng)配置服務(wù)器以便管理所有“狀態(tài)”,即所容許的連接及當(dāng)前連接的相關(guān)信息。對(duì)于有足夠資源來建立和保持配置服務(wù)器的機(jī)構(gòu),該系統(tǒng)可以接受;但是對(duì)于沒有這些資源的小型機(jī)構(gòu),工作情形較差。
3.4.2 除了狀態(tài)自動(dòng)配置,IPv6還提供什么自動(dòng)配置服務(wù)?
除了狀態(tài)自動(dòng)配置,IPv6還采用了一種被稱為無狀態(tài)自動(dòng)配置(Stateless Auto Configuration)的自動(dòng)配置服務(wù)。RFC2462中描述了IPv6的無狀態(tài)自動(dòng)配置。無狀態(tài)自動(dòng)配置要求本地鏈路支持組播,而且網(wǎng)絡(luò)接口能夠發(fā)送和接收組播包。無狀態(tài)自動(dòng)配置過程要求節(jié)點(diǎn)采用如下步驟:
首先,進(jìn)行自動(dòng)配置的節(jié)點(diǎn)必須確定自己的鏈路本地地址;
然后,必須驗(yàn)證該鏈路本地地址在鏈路上的唯一性;
最后,節(jié)點(diǎn)必須確定需要配置的信息。該信息可能是節(jié)點(diǎn)的IP地址,或者是其他配置信息,或者兩者皆有。如果需要IP地址,節(jié)點(diǎn)必須確定是使用無狀態(tài)自動(dòng)配置過程還是使用狀態(tài)自動(dòng)配置過程來獲得。
具體地說,在無狀態(tài)自動(dòng)配置過程中,主機(jī)首先通過將它的網(wǎng)卡MAC地址附加在鏈路本地地址前綴1111111010之后,產(chǎn)生一個(gè)鏈路本地單播地址(IEEE已經(jīng)將網(wǎng)卡MAC地址由48位改為了64位。如果主機(jī)采用的網(wǎng)卡的MAC地址依然是48位,那么IPv6網(wǎng)卡驅(qū)動(dòng)程序會(huì)根據(jù)IEEE的一個(gè)公式將48位MAC地址轉(zhuǎn)換為64位MAC地址)。接著主機(jī)向該地址發(fā)出一個(gè)鄰居發(fā)現(xiàn)請(qǐng)求(Neighbor Discovery Request),以驗(yàn)證地址的唯一性。如果請(qǐng)求沒有得到響應(yīng),則表明主機(jī)自我配置的鏈路本地單播地址是唯一的。否則,主機(jī)將使用一個(gè)隨機(jī)產(chǎn)生的接口ID 組成一個(gè)新的鏈路本地單播地址。然后,以該地址為源地址,主機(jī)向本地鏈路中所有路由器多點(diǎn)傳送一個(gè)路由器請(qǐng)求(Router Solicitation)來請(qǐng)求配置信息,路由器以一個(gè)包含一個(gè)可聚集全球單播地址前綴和其它相關(guān)配置信息的路由器宣告(Router Advertisement)作為響應(yīng)。主機(jī)用它從路由器得到的全球地址前綴加上自己的接口ID,自動(dòng)配置全球地址,然后就可以與Internet中的其它主機(jī)通信了。
如果沒有路由器為網(wǎng)絡(luò)上的節(jié)點(diǎn)服務(wù),也就是本地網(wǎng)絡(luò)孤立于其他網(wǎng)絡(luò),則節(jié)點(diǎn)必須尋找配置服務(wù)器來完成其配置;否則,節(jié)點(diǎn)必須偵聽路由器宣告報(bào)文。這些報(bào)文周期性地發(fā)往所有主機(jī)的組播地址,以指明諸如網(wǎng)絡(luò)地址和子網(wǎng)地址等配置信息。節(jié)點(diǎn)可以等待路由器宣告,也可以通過發(fā)送組播請(qǐng)求給所有路由器的組播地址來請(qǐng)求路由器發(fā)送宣告。一旦收到路由器的響應(yīng),節(jié)點(diǎn)就可以使用響應(yīng)的信息來完成自動(dòng)配置。
使用無狀態(tài)自動(dòng)配置,無需手動(dòng)干預(yù)就能夠改變網(wǎng)絡(luò)中所有主機(jī)的IP地址。例如,當(dāng)企業(yè)更換了聯(lián)入Internet的ISP時(shí),將從新ISP處得到一個(gè)新的可聚集全球地址前綴。ISP把這個(gè)地址前綴從它的路由器上傳送到企業(yè)路由器上。由于企業(yè)路由器將周期性地向本地鏈路中的所有主機(jī)多點(diǎn)傳送路由器宣告,因此企業(yè)網(wǎng)絡(luò)中所有主機(jī)都將通過路由器宣告收到新的地址前綴,此后,它們就會(huì)自動(dòng)產(chǎn)生新的IP地址并覆蓋舊的IP地址。
評(píng)論