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