IPv6
出自 MBA智库百科(https://wiki.mbalib.com/)
IPv6(Internet Protocol Version 6)
目錄 |
IPv6是Internet Protocol Version 6的縮寫,其中Internet Protocol譯為“互聯網協議”。IPv6是IETF(互聯網工程任務組,Internet Engineering Task Force)設計的用於替代現行版本IP協議(IPv4)的下一代IP協議。目前IP協議的版本號是4(簡稱為IPv4),它的下一個版本就是IPv6。
我們使用的第二代互聯網IPv4技術,核心技術屬於美國。它的最大問題是網路地址資源有限,從理論上講,編址1600萬個網路、40億台主機。但採用A、B、C三類編址方式後,可用的網路地址和主機地址的數目大打折扣,以至IP地址已於2011年2月3日分配完畢。其中北美占有3/4,約30億個,而人口最多的亞洲只有不到4億個,中國截止2010年6月IPv4地址數量達到2.5億,落後於4.2億網民的需求。地址不足,嚴重地制約了中國及其他國家互聯網的應用和發展。
一方面是地址資源數量的限制,另一方面是隨著電子技術及網路技術的發展,電腦網路將進入人們的日常生活,可能身邊的每一樣東西都需要連入全球網際網路。在這樣的環境下,IPv6應運而生。單從數量級上來說,IPv6所擁有的地址容量是IPv4的約8×10^28倍,達到2^128(算上全零的)個。這不但解決了網路地址資源數量的問題,同時也為除電腦外的設備連入互聯網在數量限制上掃清了障礙。
但是與IPv4一樣,IPv6一樣會造成大量的IP地址浪費。準確的說,使用IPv6的網路並沒有2^128個能充分利用的地址。首先,要實現IP地址的自動配置,區域網所使用的子網的首碼必須等於64,但是很少有一個區域網能容納2^64個網路終端;其次,由於IPv6的地址分配必須遵循聚類的原則,地址的浪費在所難免。
但是,如果說IPv4實現的只是人機對話,而IPv6則擴展到任意事物之間的對話,它不僅可以為人類服務,還將服務於眾多硬體設備,如家用電器、感測器、遠程照相機、汽車等,它將是無時不在,無處不在的深入社會每個角落的真正的寬頻網。而且它所帶來的經濟效益將非常巨大。
當然,IPv6並非十全十美、一勞永逸,不可能解決所有問題。IPv6只能在發展中不斷完善,也不可能在一夜之間發生,過渡需要時間和成本,但從長遠看,IPv6有利於互聯網的持續和長久發展。國際互聯網組織已經決定成立兩個專門工作組,制定相應的國際標準。
(1)IPV6地址長度為128位,地址空間增大了2的96次方倍;
(2)靈活的IP報文頭部格式。使用一系列固定格式的擴展頭部取代了IPV4中可變長度的選項欄位。IPV6中選項部分的出現方式也有所變化,使路由器可以簡單路過選項而不做任何處理,加快了報文處理速度。(3)IPV6簡化了報文頭部格式,欄位只有8個,加快報文轉發,提高了吞吐量;
(4)提高安全性。身份認證和隱私權是IPV6的關鍵特性;
(5)支持更多的服務類型;
(6)允許協議繼續演變,增加新的功能,使之適應未來技術的發展;
與IPV4相比,IPV6具有以下幾個優勢:
1.IPv6具有更大的地址空間。IPv4中規定IP地址長度為32,最大地址個數為2^32;而IPv6中IP地址的長度為128,即最大地址個數為2^128。與32位地址空間相比,其地址空間增加了2^128-2^32個。
2.IPv6使用更小的路由表。IPv6的地址分配一開始就遵循聚類(Aggregation)的原則,這使得路由器能在路由表中用一條記錄(Entry)表示一片子網,大大減小了路由器中路由表的長度,提高了路由器轉發數據包的速度。
3.IPv6增加了增強的組播(Multicast)支持以及對流的控制(Flow Control),這使得網路上的多媒體應用有了長足發展的機會,為服務質量(QoS,Quality of Service)控制提供了良好的網路平臺。
4.IPv6加入了對自動配置(Auto Configuration)的支持。這是對DHCP協議的改進和擴展,使得網路(尤其是區域網)的管理更加方便和快捷。
5.IPv6具有更高的安全性。在使用IPv6網路中用戶可以對網路層的數據進行加密並對IP報文進行校驗,在IPV6中的加密與鑒別選項提供了分組的保密性與完整性。極大的增強了網路的安全性。
6.允許擴充。如果新的技術或應用需要時,IPV6允許協議進行擴充。
7.更好的頭部格式。IPV6使用新的頭部格式,其選項與基本頭部分開,如果需要,可將選項插入到基本頭部與上層數據之間。這就簡化和加速了路由選擇過程,因為大多數的選項不需要由路由選擇。
8.新的選項。IPV6有一些新的選項來實現附加的功能。
IPv6的普及一個重要的應用是網路實名制下的互聯網身份證/VIeID,基於IPv4的網路之所以難以實現網路實名制,一個重要原因就是因為IP資源的共用,因為IP資源不夠,所以不同的人在不同的時間段共用一個IP,IP和上網用戶無法實現一一對應。
在IPv4下,根據IP查人也比較麻煩,電信局要保留一段時間的上網日誌才行,通常因為數據量很大,運營商只保留三個月左右的上網日誌,比如查前年某個IP發帖子的用戶就不能實現。
IPv6的出現可以從技術上一勞永逸地解決實名制這個問題,因為那時IP資源將不再緊張,運營商有足夠多的IP資源,那時候,運營商在受理入網申請的時候,可以直接給該用戶分配一個固定IP地址,這樣實際就實現了實名制,也就是一個真實用戶和一個IP地址的一一對應。
當一個上網用戶的IP固定了之後,你任何時間做的任何事情都和一個唯一IP綁定,你在網路上做的任何事情在任何時間段內都有據可查,並且無法否認。
但是,實際情況是,每個路由器只負責幾個網段的路由,而不會為某個特定IP進行路由,否則信息量之大會使對一個數據包的計算成本高到崩潰。受路由器吞吐量限制,通過每人一個固定IP的實名制方式在很長一段時間內將只是一種理論。
IPv6地址可分為三種:
1.單播(unicast)地址
單播地址標示一個網路介面。協議會把送往地址的數據包投送給其介面。IPv6的單播地址可以有一個代表特殊地址名字的範疇,如link-local地址和唯一區域地址(ULA,unique local address)。單播地址包括可聚類的全球單播地址、鏈路本地地址等。
2.任播(anycast)地址
Anycast 是 IPv6 特有的數據傳送方式,它像是IPv4的Unicast(單點傳播)與Broadcast(多點廣播)的綜合。IPv4 支持單點傳播和多點廣播,單點廣播在來源和目的地間直接進行通信;多點廣播存在於單一來源和多個目的地進行通信。 而Anycast則在以上兩者之間,它像多點廣播(Broadcast)一樣,會有一組接收節點的地址欄表,但指定為 Anycast 的數據包,只會傳送給距離最近或傳送成本最低(根據路由表來判斷)的其中一個接收地址,當該接收地址收到數據包併進行回應,且加入後續的傳輸。該接收列表的其他節點,會知道某個節點地址已經回應了,它們就不再加入後續的傳輸作業。 以目前的應用為例,Anycast 地址只能分配給路由器,不能分配給電腦使用,而且不能作為發送端的地址。
3.多播(multicast)地址
多播地址也稱組播地址。多播地址也被指定到一群不同的介面,送到多播地址的數據包會被傳送到所有的地址。多播地址由皆為一的位元組起始,亦即:它們的前置為FF00::/8。其第二個位元組的最後四個比特用以標明"範疇"。
一般有node-local(0x1)、link-local(0x2)、site-local(0x5)、organization-local(0x8)和global(0xE)。多播地址中的最低112位會組成多播組群識別碼,不過因為傳統方法是從MAC地址產生,故只有組群識別碼中的最低32位有使用。定義過的組群識別碼有用於所有節點的多播地址0x1和用於所有路由器的0x2。
另一個多播組群的地址為"solicited-node多播地址",是由前置FF02::1:FF00:0/104和剩餘的組群識別碼(最低24位)所組成。這些地址允許經由鄰居發現協議(NDP,Neighbor Discovery Protocol)來解譯鏈接層地址,因而不用干擾到在區網內的所有節點。
4.特殊地址
IANA維護官方的IPv6地址空間列表。全局的單播地址的分配可在各個區域互聯網註冊管理機構或GRH DFP pages找到。IPv6中有些地址是有特殊含義的:
(1)未指定地址
所有比特皆為零的地址稱作未指定地址。這個地址不可指定給某個網路介面,並且只有在主機尚未知道其來源IP時,才會用於軟體中。路由器不可轉送包含未指定地址的數據包。
(2)鏈路本地地址
::1/128- 是一種單播繞回地址。如果一個應用程式將數據包送到此地址,IPv6堆棧會轉送這些數據包繞回到同樣的虛擬介面(相當於IPv4中的127.0.0.0/8)。
fe80::/10- 這些鏈路本地地址指明,這些地址只在區域連接中是合法的,這有點類似於IPv4中的169.254.0.0/16。
(3)唯一區域位域
fc00::/7-唯一區域地址(ULA,unique local address)只可在一群網站中繞送。這定義在RFC 4193中,是用來取代站點本地位域。這地址包含一個40比特的偽隨機數,以減少當網站合併或數據包誤傳到網路時碰撞的風險。這些地址除了只能用於區域外,還具備全局性的範疇,這點違反了唯一區域位域所取代的站點本地地址的定義。
(4)多播地址
ff00::/8-這個前置表明定義在"IP Version 6 Addressing Architecture"(RFC 4291)中的多播地址。其中,有些地址已用於指定特殊協議,如ff0X::101對應所有區域的NTP伺服器(RFC 2375)。
(5)請求節點多播地址 (Solicited-node multicast address)
ff02::1:FFXX:XXXX-XX:XXXX為相對應的單播或任播地址中的三個最低的位元組。
(6)IPv4轉譯地址
::ffff:x.x.x.x/96- 用於IPv4映射地址。
2001::/32- 用於Teredo tunneling。
2002::/16- 用於6to4。
(7)ORCHID
2001:10::/28-ORCHID (Overlay Routable Cryptographic Hash Identifiers) (RFC 4843)。這些是不可繞送的IPv6地址,用於加密散列識別。
(8)文件
2001:db8::/32- 這前置用於文件(RFC 3849)。這些地址應用於IPV6地址的示例中,或描述網路架構。
(8)遭捨棄或刪除的用法
::/96- 這個前置曾用於IPv4兼容地址,現已刪除。
fec0::/10- 這個站點本地前置指明這地址只在組織內合法。它已在2004年9月的RFC3879中捨棄,並且新系統不應該支持這類型的地址。
IPv6數據包由兩個主要部分組成:頭部和負載。
包頭是包的前64比特並且包含有源和目的地址,協議版本,通信類別(8位,包優先順序),流標記(20比特,QoS服務質量控制),分組長度(16位),下一個頭部(用於入棧解碼,類似IPv4中的協議號),和跳段數限制(8位,生存時間,相當於IPv4中的TTL)。後面是負載。MTU至少1280位元組長,在常見的乙太網環境中為1500位元組。負載在標準模式下最大可為65535位元組,如果擴展報頭設置了"jumbo payload"選項,則長度值被置為0。IPv6曾有兩個有著細微差別的版本;在 RFC 1883 中定義的原始版本(現在廢棄)和 RFC 2460 中描述的現在提議的標準版本。兩者主要在通信類別這個選項上有所不同,它的位數由4位變為了8位。其他的區別都是微不足道的。
分段(Fragmentation)只在IPv6的主機中被處理。在IPv6中,可選項都被從標準頭部中移出併在協議欄位中指定,類似於IPv4的協議欄位功能。
IPv6地址在功能變數名稱系統中為執行正向解析表示為AAAA記錄(所謂4A記錄,類似的IPv4表示為A記錄A records);反向解析在ip6.arpa(原先ip6.int)下進行,在這裡地址空間為半位元組16進位數字格式。這種模式在RFC 3596給與了定義。
AAAA模式是IPv6結構設計時的兩種提議之一。另外一種正向解析為A6記錄並且有一些其他的創新像二進位串標簽和DNAME記錄等。RFC 2874和它的一些引用中定義了這種模式。
AAAA模式只是IPv6功能變數名稱系統的簡單概括,A6模式使功能變數名稱系統中檢查更全面,也因此更複雜:
A6記錄允許一個IPv6地址在分散於多個記錄中,或許在不同的區域;舉例來說,這就在原則上允許網路的快速重編號。
使用功能變數名稱系統記錄委派地址被DNAME記錄(類似於現有的CNAME,不過是重命名整棵樹)所取代。
一種新的叫做比特標簽的類型被引入,主要用於反向解析。
2002年8月的RFC 3363中對AAAA模式給與了有效的標準化(在RFC 3364有著對於兩種模式優缺點的更深入的討論)。
在IPv6完全取代IPv4前,需要一些轉換機制使得只支持IPv6的主機可以連絡IPv4服務,並且允許孤立的IPv6主機及網路可以藉由IPv4設施連絡IPv6互聯網。
在IPv6主機和路由器與IPv4系統共存的時期時,RFC2893 和 RFC2185 定義了轉換機制。這些技術,有時一起稱作簡單互聯網轉換(SIT,Simple Internet Transition)。包含:
- 運作於主機和路由器之間的雙堆棧IP實現
- 將IPv4嵌入IPv6地址
- IPv6立於IPv4之上的隧道機制
- IPv4/IPv6報頭轉換
1.雙堆棧
雙堆棧(Dual IP stack implementation)是將IPv6視為一種IPv4的延伸,以共用代碼的方式去實現網路堆棧,其可以同時支持IPv4和IPv6,如此是相對較為容易的。如此的實現稱為雙堆棧,並且,一個實現雙堆棧的主機稱為雙堆棧主機。這步驟描述於RFC 4213。
目前大部分IPv6的實現使用雙堆棧。一些早期實驗性實現使用獨立的IPv4和IPv6堆棧。
2.隧道
隧道(Tunneling)是另一個用來鏈接IPv4與IPv6的機制。為了連通IPv6互聯網,一個孤立主機或網路需要使用現存IPv4的基礎設施來攜帶IPv6數據包。這可由將IPv6數據包裝入IPv4數據包的隧道協議來完成,實際上就是將IPv4當成IPv6的鏈接層。
IP協議號碼的41號用來標示將IPv6數據訊框直接裝入IPv4數據包。IPv6亦能將入UDP數據包,如為了跨過一些會阻擋協議41交通的路由器或NAT設備。其它流行的封裝機制則有AYIYA和GRE。
3.自動隧道
自動隧道(Automatic tunneling)指路由設施自動決定隧道端點的技術。RFC 3056建議使用6to4隧道技術來自動隧道,其會使用41協議來封裝。隧道端點是由遠程知名的IPv4任播地址所決定,併在本地端嵌入IPv4位址信息到IPv6中。現今6to4是廣泛佈署的。
Teredo是使用UDP封裝的隧道技術,據稱可跨越多個NAT設備。Teredo並非廣泛用於佈署的,但一個實驗性版本的Teredo已安裝於Windows XP SP2 IPv6堆棧中。IPv6,包含6to4隧道和Teredo隧道,在Windows Vista中預設是啟動的。許多Unix系統只支持本地的6to4,但Teredo可由如Miredoo的第三方軟體來提供。
ISATAP藉由將IPv4位址對應到IPv6的link-local地址,從而將IPv4網路視為一種虛擬的IPv6區域連接。不像6to4和Teredo是站點間的隧道機制,ISATAP是一種站點內機制,意味著它是用來設計提供在一個組織內節點之間的IPv6連接性。
4.組態隧道 (6in4)
在組態隧道中,如6in4隧道,隧道端點是要明確組態過的,可以是藉由管理員手動或操作系統的組態機制,或者藉由如tunnel broker等的自動服務。組態隧道通常比自動隧道更容易去除錯,故建議用於大型且良好管理的網路。組態隧道在IPv4隧道上,使用網際協議中號碼的41號。
5.用於只支持IPv6主機的代理和轉譯
在區域網際網路註冊管理機構耗盡所有可使用的IPv4位址後,非常有可能新加入互聯網的主機只具有IPv6連接能力。對這些須要向後兼容以能訪問IPv4資源的客戶端,須要佈署合適的轉換機制。
一種轉換技術是使用雙堆棧的應用層代理,如網頁代理服務器。一些對於應用程式無法得知但在其低層使用類NAT轉換技術也曾被提出。但因為一般應用層協議所要求的能力其應用太廣,其中大部分都被認定在實際上太不可靠,並且被認為應刪除。