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