本頁使用了標題或全文手工轉換

IPv6

維基百科,自由的百科全書
跳到: 導覽搜尋

互聯網通訊協定第6版英文Internet Protocol version 6縮寫:IPv6)是互聯網協定的最新版本,用於封包交換互聯網絡的網絡層協議,旨在解決IPv4地址枯竭問題

IPv6意圖取代IPv4,而IPv4在2014年5月仍然在網絡交通上佔有96%。[1][2][3]在2014年10月,通過IPv6使用Google服務的用戶百分率首次超過5%。[4]

背景與目標[編輯]

現今的互聯網絡發展蓬勃,截至2013年12月,全球上網人數已達22.7億,IPv4僅能提供約2.5億個IP位置。雖然目前的網絡地址轉換無類別域間路由等技術可延緩網絡位置匱乏之現象,但為求解決根本問題,從1990年開始,互聯網工程任務小組開始規劃IPv4的下一代協定,除要解決即將遇到的IP地址短缺問題外,還要發展更多的擴充功能,為此IETF小組創建IPng,以讓後續工作順利進行。1994年,各IPng領域的代表們於多倫多舉辦的IETF會議中,正式提議IPv6發展計劃,該提議直到同年的11月17日才被認可,並於1996年8月10日成為IETF的草案標準,最終IPv6在1998年12月被互聯網工程研究團隊通過公佈互聯網標準規範(RFC 2460)的方式定義出台。

IPv6的計劃是建立未來互聯網擴充的基礎,其目標是取代IPv4,雖然IPv6在1994年就已被IETF指定作為IPv4的下一代標準,由於早期的路由器、防火牆、企業的企業資源計劃系統及相關應用程式皆須改寫,所以在世界範圍內使用IPv6部署的公眾網與IPv4相比還非常的少[5][6],技術上仍以雙架構並存居多。預計在2025年以前IPv4仍會被支持,以便給新協議的修正留下足夠的時間。

IPv6能解決的核心問題與互聯網目前所面臨的關鍵問題之間出現了明顯的偏差,難以給互聯網的發展帶來革命性的影響。與IPv4的各種地址復用解決方案相比,IPv6能夠降低複雜性和成本,然而目前卻只有製造商較能夠感受到這個優勢,用戶和運營商​​無法直接感受到,導致產業鏈缺乏推動IPv6的動力。[7]

與IPv4比較[編輯]

在Internet上,數據以分組的形式傳輸。IPv6定義了一種新的分組格式,目的是為了最小化路由器處理的訊息標頭[8][9]。由於IPv4訊息和IPv6訊息標頭有很大不同,因此這兩種協定無法互操作。但是在大多數情況下,IPv6僅僅是對IPv4的一種保守擴展。除了嵌入了互聯網地址的那些應用協議(如FTPNTPv3,新地址格式可能會與當前協定的語法衝突)以外,大多數傳輸層和應用層協定幾乎不怎麼需要修改就可以工作在IPv6上。

無狀態地址自動配置(SLAAC)[編輯]

當連線到IPv6網絡上時,IPv6主機可以使用鄰居發現協定對自身進行自動配置。當第一次連線到網絡上時,主機傳送一個鏈路本地路由器請求(solicitation)多播請求來取得配置參數。路由器使用包含Internet層配置參數的路由器宣告(advertisement)報文進行回應[10]

在不適合使用IPv6無狀態地址自動配置的場景下,網絡可以使用有狀態配置,如DHCPv6,或者使用靜態方法手動配置。

IPv6編址[編輯]

IPv6具有比IPv4大得多的編碼地址空間。這是因為IPv6採用了128位元的地址,而IPv4使用的是32位元。因此新增的地址空間支持2128(約3.4×1038)個地址,具體數量為340,282,366,920,938,463,463,374,607,431,768,211,456 個,也可以說成1632個,因為32位元地址每位可以取16個不同的值。

網絡地址轉換是目前減緩IPv4地址耗盡最有效的方式,而IPv6的地址消除了對它的依賴,被認為足夠在可以預測的未來使用。就以地球人口70億人計算,每人平均可分得約4.86×1028(486117667×1020)個IPv6地址。

IPv6從IPv4到IPv6最顯著的變化就是網絡地址的長度。RFC 2373和RFC 2374定義的IPv6地址有128位元長;IPv6地址的表達形式一般採用32個十六進制數。

在很多場合,IPv6地址由兩個邏輯部分組成:一個64位元的網絡前綴和一個64位元的主機地址,主機地址通常根據實體位址自動生成,叫做EUI-64(或者64-位擴展唯一標識)

IPv6格式[編輯]

IPv6二進位制下為128位元長度,以16位元為一組,每組以冒號「:」隔開,可以分為8組,每組以4位十六進制方式表示。例如:2001:0db8:85a3:08d3:1319:8a2e:0370:7344 是一個合法的IPv6地址。

同時IPv6在某些條件下可以省略:

  1. 每項數字前導的0可以省略,省略後前導數字仍是0則繼續,例如下組IPv6是相等的。
    2001:0DB8:02de:0000:0000:0000:0000:0e13
    2001:DB8:2de:0000:0000:0000:0000:e13
    2001:DB8:2de:000:000:000:000:e13
    2001:DB8:2de:00:00:00:00:e13
    2001:DB8:2de:0:0:0:0:e13
  2. 可以用雙冒號「::」表示一組0或多組連續的0,但只能出現一次:
    1. 如果四組數字都是零,可以被省略。遵照以上省略規則,下面這兩組IPv6都是相等的。
      • 2001:DB8:2de:0:0:0:0:e13
      2001:DB8:2de::e13
      • 2001:0DB8:0000:0000:0000:0000:1428:57ab
      2001:0DB8:0000:0000:0000::1428:57ab
      2001:0DB8:0:0:0:0:1428:57ab
      2001:0DB8:0::0:1428:57ab
      2001:0DB8::1428:57ab
    2. 2001::25de::cade 是非法的,因為雙冒號出現了兩次。它有可能是下種情形之一,造成無法推斷。
      • 2001:0000:0000:0000:0000:25de:0000:cade
      • 2001:0000:0000:0000:25de:0000:0000:cade
      • 2001:0000:0000:25de:0000:0000:0000:cade
      • 2001:0000:25de:0000:0000:0000:0000:cade
    3. 如果這個地址實際上是IPv4的地址,後32位元可以用10進制數表示;因此::ffff:192.168.89.9 相等於::ffff:c0a8:5909,但不等於::192.168.89.9 和::c0a8:5909。

另外,::ffff:1.2.3.4 格式叫做IPv4對映地址。而::1.2.3.4 格式叫做IPv4一致地址,目前已被取消。

IPv4位元址可以很容易的轉化為IPv6格式。舉例來說,如果IPv4的一個地址為135.75.43.52(十六進位為0x874B2B34),它可以被轉化為0000:0000:0000:0000:0000:ffff:874B:2B34 或者::ffff:874B:2B34。同時,還可以使用混合符號(IPv4-compatible address),則地址可以為::ffff:135.75.43.52。

IPv6地址的分類[編輯]

IPv6地址可分為三種:[11]

單播(unicast)地址
單播地址標示一個網絡介面。協定會把送往地址的封包送往給其介面。IPv6的單播地址可以有一個代表特殊地址名字的範疇,如link-local地址和唯一區域地址(ULA,unique local address)。單播地址包括可聚類的全球單播地址、鏈路本地地址等。
任播(anycast)地址
Anycast是IPv6特有的數據傳送方式,它像是IPv4的Unicast(單點傳播)與Broadcast(多點廣播)的綜合。IPv4支持單點傳播和多點廣播,單點廣播在來源和目的地間直接進行通訊;多點廣播存在於單一來源和多個目的地進行通訊。
而Anycast則在以上兩者之間,它像多點廣播(Broadcast)一樣,會有一組接收節點的網址列表,但指定為Anycast的封包,只會傳送給距離最近或傳送成本最低(根據路由表來判斷)的其中一個接收地址,當該接收地址收到封包並進行回應,且加入後續的傳輸。該接收列表的其他節點,會知道某個節點地址已經回應了,它們就不再加入後續的傳輸作業。
以目前的應用為例,Anycast地址只能分配給路由器,不能分配給電腦使用,而且不能作為發送端的地址。
多播(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)來解譯連結層地址,因而不用干擾到在區網內的所有節點。

特殊地址[編輯]

IANA維護官方的IPv6地址空間列表[12]。全域的單播地址的分配可在各個區域互聯網註冊管理機構或 GRH DFP 頁面找到[13]

IPv6中有些地址是有特殊含義的:

未指定地址
  • ::/128-所有位元皆為零的地址稱作未指定地址。這個地址不可指定給某個網絡介面,並且只有在主機尚未知道其來源IP時,才會用於軟件中。路由器不可轉送包含未指定地址的封包。
鏈路本地地址
  • ::1/128-是一種單播繞回地址。如果一個應用程式將封包送到此地址,IPv6堆疊會轉送這些封包繞回到同樣的虛擬介面(相當於IPv4中的127.0.0.1/8)。
  • fe80::/10-這些鏈路本地地址指明,這些地址只在區域連線中是合法的,這有點類似於IPv4中的169.254.0.0/16
唯一區域位域
  • fc00::/7唯一區域地址(ULA,unique local address)只可在一群網站中繞送。這定義在RFC 4193中,是用來取代站點本地位域。這地址包含一個40位元的偽隨機數,以減少當網站合併或封包誤傳到網絡時碰撞的風險。這些地址除了只能用於區域外,還具備全域性的範疇,這點違反了唯一區域位域所取代的站點本地地址的定義。
多播地址
  • ff00::/8-這個前置表明定義在"IP Version 6 Addressing Architecture"(RFC 4291)中的多播地址[14]。其中,有些地址已用於指定特殊協議,如ff0X::101對應所有區域的NTP伺服器(RFC 2375)。
請求節點多播地址(Solicited-node multicast address)
  • ff02::1:FFXX:XXXX-XX:XXXX為相對應的單播或任播地址中的三個最低的位元組。
IPv4轉譯地址
ORCHID
  • 2001:10::/28-ORCHID (Overlay Routable Cryptographic Hash Identifiers)(RFC 4843)。這些是不可遶送的IPv6地址,用於加密雜湊識別。
檔案
  • 2001:db8::/32-這前置用於檔案(RFC 3849)。這些地址應用於IPV6地址的範例中,或描述網絡架構。
遭捨棄或刪除的用法
  • ::/96-這個前置曾用於IPv4相容地址,現已刪除。
  • fec0::/10-這個站點本地前置指明這地址只在組織內合法。它已在2004年9月的RFC3879中捨棄,並且新系統不應該支持這類型的地址。

IPv6封包[編輯]

IPv6封包的架構說明。

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和域名系統[編輯]

IPv6地址在域名系統中為執行正向解析表示為AAAA記錄(所謂4A記錄,類似地,IPv4表示為A記錄(A record));反向解析在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部署與應用[編輯]

2004年7月的ICANN聲稱互聯網的根域名伺服器已經經過改進同時支持IPv6和IPv4。[15]

缺點:

  • 需要在整個互聯網和它所連線到的裝置上建立對IPv6的支持
  • 從IPv4存取時的轉換過程中,在閘道器路由器(IPv6<-->IPv4)還是需要一個IPv4地址和一些NAT(=共享的IP位址),增加了它的複雜性,還意味着IPv6許諾的巨大的空間地址不能夠立刻被有效的使用。
  • 遺留的結構問題,例如在對IPv6 multihoming支持上一致性的匱乏。

工作:

  • 6bone
  • ICMPv6
  • IPv6 multihoming

部署進度:

  • 截至2011年,全球通過IPv6第二階段認證的產品共644項,以國別和地區論,美國位居首共264種產品通過階段認證,次為日本計143項,台灣居第三,共115項完成階段認證,中國大陸居四,共68件產品通過階段認證[16]

網絡層安全[編輯]

網際網絡安全協定(Internet Protocol Security,即IPsec)原本是為IPv6開發,但是在IPv4中已被大量部署。最初,IPsec是IPv6協定組中不可少的一部分[17],但現在已經是可選的一部分。[18]

轉換機制[編輯]

在IPv6完全取代IPv4前,需要一些轉換機制[19]使得只支持IPv6的主機可以聯絡IPv4服務,並且允許孤立的IPv6主機及網絡可以藉由IPv4設施聯絡IPv6互聯網。

在IPv6主機和路由器與IPv4系統共存的時期時,RFC2893RFC2185定義了轉換機制。這些技術,有時一起稱作簡單互聯網轉換(SIT,Simple Internet Transition)。[20]包含:

  • 運作於主機和路由器之間的雙堆疊IP實作
  • 將IPv4嵌入IPv6地址
  • IPv6立於IPv4之上的穿隧機制
  • IPv4/IPv6報頭轉換

許多轉換機制使用穿隧來把IPv6交通包封在IPv4網絡中。這個解決方案並不完美,可能會增加延時以及引起路徑最大傳輸單元發現(Path MTU Discovery)的問題,[21]它並不總能執行,因為過時的網絡裝置可能不支持IPv6。有線電視基礎上的Internet存取就是一個例子。在現代的有線電視網絡中,光纖同軸混合網(HFC)的核心(比如大型核心路由器)是有可能支持IPv6的。然而,其他網絡裝置(比如一個線纜數據機終端系統(CMTS))以及用戶裝置(如線纜數據機)會需要軟件更新或硬件更新來支持IPv6。這意味着線纜網絡營辦商必須調整適應穿隧直至主幹裝置支持內部雙堆疊。

雙堆疊[編輯]

雙堆疊(Dual IP stack implementation)是將IPv6視為一種IPv4的延伸,以共享程式碼的方式去實作網絡堆疊,其可以同時支持IPv4和IPv6,如此是相對較為容易的。如此的實作稱為雙堆疊,並且,一個實作雙堆疊的主機稱為雙堆疊主機。這步驟描述於RFC 4213。

目前大部分IPv6的實現使用雙堆疊。一些早期實驗性實作使用獨立的IPv4和IPv6堆疊。

通道[編輯]

通道(Tunneling)是另一個用來連結IPv4與IPv6的機制。為了連通IPv6互聯網,一個孤立主機或網絡需要使用現存IPv4的基礎設施來攜帶IPv6封包。這可由將IPv6封包裝入IPv4封包的通道協議來完成,實際上就是將IPv4當成IPv6的連結層。

IP協議號碼的41號用來標示將IPv6數據訊框直接裝入IPv4封包。IPv6亦能加入UDP封包,如為了跨過一些會阻擋協議41交通的路由器或NAT裝置。其它流行的封裝機制則有AYIYAGRE

自動通道[編輯]

自動通道(Automatic tunneling)指路由設施自動決定通道端點的技術。RFC 3056建議使用6to4穿隧技術來自動通道,其會使用41協議來封裝。[22] 通道端點是由遠端知名的IPv4任播地址所決定,並在本地端嵌入IPv4位元址資訊到IPv6中。現今6to4是廣泛佈署的。

Teredo是使用UDP封裝的通道技術,據稱可跨越多個NAT裝置。 [23] Teredo並非廣泛用於佈署的,但一個實驗性版本的Teredo已安裝於Windows XP SP2 IPv6堆疊中。IPv6,包含6to4通道和Teredo通道,在Windows Vista中預設是啟動的。[24]許多Unix系統只支持原生的6to4,但Teredo可由如Miredoo的第三方軟件來提供。

ISATAP[25]藉由將IPv4位元址對應到IPv6的link-local地址,從而將IPv4網絡視為一種虛擬的IPv6區域連線。不像6to4和Teredo是站點間的通道機制,ISATAP是一種站點內機制,意味着它是用來設計提供在一個組織內節點之間的IPv6連接性。

組態通道(6in4)[編輯]

組態通道中,如6in4通道隧,通道端點是要明確組態過的,可以是藉由管理員手動或作業系統的組態機制,或者藉由如tunnel broker等的自動服務。[26]組態通道通常比自動通道更容易去除錯,故建議用於大型且良好管理的網絡。

組態通道在IPv4穿隧上,使用網際協議中號碼的41號。

用於只支持IPv6主機的代理和轉譯[編輯]

區域互聯網註冊管理機構耗盡所有可使用的IPv4位元址後,非常有可能新加入互聯網的主機只具有IPv6連接能力。對這些須要向後相容以能存取IPv4資源的客戶端,須要佈署合適的轉換機制。

一種轉換技術是使用雙堆疊的應用層代理,如網頁代理伺服器。

一些對於應用程式無法得知但在其低層使用類NAT轉換技術也曾被提出。但因為一般應用層協議所要求的能力其應用太廣,其中大部分都被認定在實際上太不可靠,並且被認為應刪除。

主要的IPv6公告[編輯]

  • 在2003年,日本經濟新聞(在2003年被CNET亞洲機構參照)報告中說日本、中國和韓國聲稱已經決定要在網絡技術中尋求領先,將部分參與IPv6的開發並在2005年開始全面採用IPv6。
  • ICANN在2004年7月20日發表聲明,稱DNS根伺服器已經建立了對應日本(.jp)和韓國(.kr)的頂級域名伺服器的AAAA記錄,序列號為2004072000。對應法國的(.fr)IPv6記錄會再晚一點時間加入。這就開放了IPv6的運作。
  • 2011年互聯網協會將6月8日定為世界IPv6日。包括Google、Facebook和雅虎在內的參與者將在當天對他們的主要服務啟用IPv6,以推進互聯網工業加速部署全面IPv6支持[27]

參看[編輯]

相關的IETF工作群組[編輯]

  • 6bone:IPv6 Backbone
  • ipng:IP Next Generation (concluded)
  • ipv6:IP Version 6
  • ipv6mib:IPv6 MIB (concluded)
  • multi6:Site Multihoming in IPv6
  • v6ops:IPv6 Operations

參考資料[編輯]

  1. ^ IPv6 Adoption
  2. ^ World: Display IPv6 Prefixes Data
  3. ^ David Frost. Ipv6 traffic volumes going backwards. iTWire. 20 April 2011 [19 February 2012]. 
  4. ^ IPv6. Google Statistics. Google. [1 November 2014]. 
  5. ^ IPv6 Reports
  6. ^ BGP Analysis Reports
  7. ^ IPv6發展現狀和面臨困難分析,2008年11月22日
  8. ^ RFC 2460, Internet Protocol, Version 6 (IPv6) Specification, Deering S. Hinden R.(December 1998)
  9. ^ RFC 1726, Technical Criteria for Choosing IP The Next Generation (IPng), Partridge C., Kastenholz F.(December 1994)
  10. ^ RFC 4862, IPv6 Stateless Address Autoconfiguration, Thomson S., Narten T., Jinmei T.(September 2007)
  11. ^ RFC 2373 - IP Version 6 Addressing Architecture
  12. ^ Internet Protocol Version 6 Address Space. 2013-02-15 [2013-04-26] (英語). 
  13. ^ GRH DFP pages
  14. ^ [1]
  15. ^ Next-generation IPv6 Address Added to the Internet's Root DNS Zone. 2004-06-20 [2013-04-26]. 
  16. ^ 上千菁英來台打造網路新標準鍾榮峰/台北/中央社. 2011-11-14 [2013-04-26]. 
  17. ^ RFC 4301, IPv6 Node Requirements", J. Loughney (April 2006)
  18. ^ RFC 6434, "IPv6 Node Requirements", E. Jankiewicz, J. Loughney, T. Narten (December 2011)
  19. ^ IPv6 Transition Mechanism / Tunneling Comparison
  20. ^ Rodriguez, Adolfo; John Gatrell; John Karas; Roland Peschke. Internet transition - Migrating from IPv4 to IPv6. TCP/IP Tutorial and Technical Overview. IBM. 2001-08-06 [2008-08-15]. These techniques are sometimes collectively termed Simple Internet Transition (SIT). 
  21. ^ IPv6: Dual stack where you can; tunnel where you must. www.networkworld.com. 5 September 2007 [27 November 2012]. 
  22. ^ RFC 3056: Connection of IPv6 Domains via IPv4 Clouds
  23. ^ RFC 4380: Teredo: Tunneling IPv6 over UDP through Network Address Translations (NATs)
  24. ^ The Windows Vista Developer Story: Application Compatibility Cookbook
  25. ^ RFC 4214: Intra-Site Automatic Tunnel Addressing Protocol (ISATAP)
  26. ^ RFC 3053: IPv6 Tunnel Broker
  27. ^ Internet Society - World IPv6 Day. Internet Society. [2011-06-07]. 
  • RFC 2460 - Internet Protocol, Version 6 - 現在版本
  • RFC 1883 - Internet Protocol, Version 6 - 舊版本
  • RFC 5214: Intra-Site Automatic Tunnel Addressing Protocol (ISATAP) - 現在版本取代RFC 4214

外部連結[編輯]