IPv6
網際協定的第6版 来自维基百科,自由的百科全书
網際協定的第6版 来自维基百科,自由的百科全书
網際協定第6版(英語:Internet Protocol version 6,縮寫:IPv6)是網際協定的最新版本,用作網際網路的協定。用它來取代IPv4主要是為了解決IPv4位址枯竭問題,同時它也在其他方面對於IPv4有許多改進。
IPv6的設計目的是取代IPv4,然而長期以來IPv4在網際網路流量中仍佔據主要地位,IPv6的使用增長緩慢。在2022年4月,通過IPv6使用Google服務的使用者百分率首次超過40%[1]。
現今的網際網路發展蓬勃,截至2018年1月,全球上網人數已達40.21億,IPv4僅能提供約42.9億個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相比還非常的少[2][3],技術上仍以雙架構並存居多。預計在2025年以前IPv4仍會被支援,以便給新協定的修正留下足夠的時間。
在Internet上,資料以分組的形式傳輸。IPv6定義了一種新的分組格式,目的是為了最小化路由器處理的訊息標頭[4][5]。由於IPv4訊息和IPv6訊息標頭有很大不同,因此這兩種協定無法互操作。但是在大多數情況下,IPv6僅僅是對IPv4的一種保守擴展。除了嵌入了網際網路位址的那些應用協定(如FTP和NTPv3,新位址格式可能會與當前協定的語法衝突)以外,大多數傳輸層和應用層協定幾乎不怎麼需要修改就可以在IPv6上運行。
當連接到IPv6網路上時,IPv6主機可以使用鄰居發現協定對自身進行自動組態。當第一次連接到網路上時,主機傳送一個鏈路本地路由器請求(solicitation)多播請求來取得組態參數。路由器使用包含Internet層組態參數的路由器宣告(advertisement)報文進行回應[6]。
在不適合使用IPv6無狀態位址自動組態的場景下,網路可以使用有狀態組態(DHCPv6),或者使用靜態方法手動組態。
IPv6具有比IPv4大得多的編碼位址空間。這是因為IPv6採用128位元的位址,而IPv4使用的是32位元。因此新增的位址空間支援2128(約3.4×1038)個位址,具體數量為340,282,366,920,938,463,463,374,607,431,768,211,456 個,也可以說成1632個,因為每4位元位址(128位元分為32段,每段4位元)可以取24=16個不同的值。
網路位址轉換是目前減緩IPv4位址耗盡最有效的方式,而IPv6的位址消除了對它的依賴,被認為足夠在可以預測的未來使用。就以地球人口70億人計算,每人平均可分得約4.86×1028(486117667×1020)個IPv6位址。
從IPv4到IPv6最顯著的變化就是網路位址的長度。RFC 2373和RFC 2374定義的IPv6位址有128位元長;IPv6位址的表達形式一般採用32個十六進制數。
在很多場合,IPv6位址由兩個邏輯部分組成:一個64位元的網路前綴和一個64位元的主機位址,主機位址通常根據實體位址自動生成,叫做EUI-64(或者64-位擴展唯一標識)。
IPv6二進位制下為128位元長度,以16位元為一組,每組以冒號「:」隔開,可以分為8組,每組以4位十六進制方式表示。例如:2001:0db8:86a3:08d3:1319:8a2e:0370:7344
是一個合法的IPv6位址。類似於IPv4的點分十進制,同樣也存在點分十六進制的寫法,將8組16位元十六進制位址的冒號去除後,每位以點號「.」分組,例如:2001:0db8:85a3:08d3:1319:8a2e:0370:7344
則記為2.0.0.1.0.d.b.8.8.5.a.3.0.8.d.3.1.3.1.9.8.a.2.e.0.3.7.0.7.3.4.4
,其倒序寫法用於ip6.arpa子域名記錄IPv6位址與域名的對映。
同時IPv6在某些條件下可以省略:
由於同一非全域位址可能在同一範圍的多個區域中使用(例如,在兩條獨立的物理鏈路中使用鏈路本地位址 fe80::1),而且一個節點可能連接到同一範圍的不同區域的介面(例如,一個路由器通常有多個介面連接到不同的鏈路)。IPv6新增了區域ID(Zone ID)加以區分,或稱作用域ID(Scope ID)。作用域ID僅用於本地連結,使用百分號追加在位址後面。其內容特定於作業系統,例如Windows使用數字 fe80::2%3 ,Linux使用網卡名字 fe80::2%eth0 。[7] 在URI中使用時,百分號需要進行編碼,例如 fe80::a%en1 應顯示為 http://[fe80::a%25en1] 。[8]
IPv6位址可分為三種:[9]
IANA維護官方的IPv6位址空間列表[10]。全域的單播位址的分配可在各個區域網際網路註冊管理機構或 GRH DFP 頁面找到[11]。
IPv6中有些位址是有特殊含義的:
IPv6封包由兩個主要部分組成:頭部和負載。
包頭是包的前320位元,並且包含有源和目的位址,協定版本,通訊類別(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也要求實現「MTU路徑發現」來避免封包需要被中間裝置分片,所以IPv4頭涉及分片的欄位從IPv6基本頭移出至專用的分片擴充報頭中。
在IPv6中,可選項都被從標準頭部中移出並在協定欄位中指定,類似於IPv4的協定欄位功能。
IPv6位址在域名系統中為執行正向解析表示為AAAA記錄(所謂4A記錄,類似地,IPv4表示為A記錄(A record));反向解析在ip6.arpa(原先是ip6.int)下進行,在這裡位址空間為半位元組16進制數字格式。這種模式在RFC 3596給與了定義。
AAAA模式是IPv6結構設計時的兩種提議之一。另外一種正向解析為A6記錄。也有一些其他的創新像二進制串標籤和DNAME記錄等。RFC 2874和它的一些參照中定義了這種模式。
AAAA模式只是IPv6域名系統的簡單概括,A6模式使域名系統中檢查更全面,也因此更複雜:
2002年8月的RFC 3363中對AAAA模式給予了有效的標準化(在RFC 3364有對於兩種模式優缺點的更深入的討論)。
2004年7月時ICANN聲稱網際網路的根域名伺服器已經經過改進以同時支援IPv6和IPv4。[13]
缺點:
工作:
部署進度:
網際網路安全協定(Internet Protocol Security,即IPsec)原本為IPv6開發,但是在IPv4中已經大量部署。IPsec最初是IPv6協定的強制要求[15],但後來改為可選項。[16]
在IPv6完全取代IPv4前,需要一些轉換機制[17]使得只支援IPv6的主機可以連絡IPv4服務,並且允許孤立的IPv6主機及網路可以藉由IPv4設施連絡IPv6網際網路。
在IPv6主機和路由器與IPv4系統共存的時期時,RFC2893(頁面存檔備份,存於網際網路檔案館)和RFC2185(頁面存檔備份,存於網際網路檔案館)定義了轉換機制。這些技術,有時一起稱作簡單網際網路轉換(SIT,Simple Internet Transition)。[18]包含:
許多轉換機制使用穿隧來把IPv6交通包封在IPv4網路中。這個解決方案並不完美,可能會增加延時以及引起路徑最大傳輸單元發現(Path MTU Discovery)的問題,[19]它並不總能執行,因為過時的網路裝置可能不支援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裝置。其它流行的封裝機制則有AYIYA和GRE。
自動穿隧(Automatic tunneling)指路由設施自動決定穿隧端點的技術。RFC 3056建議使用6to4穿隧技術來自動穿隧,其會使用41協定來封裝。[20] 穿隧端點是由遠端知名的IPv4任播位址所決定,並在本地端嵌入IPv4位元址資訊到IPv6中。現今6to4是廣泛佈署的。
Teredo是使用UDP封裝的穿隧技術,據稱可跨越多個NAT裝置。[21]Teredo並非廣泛用於佈署的,但一個實驗性版本的Teredo已安裝於Windows XP SP2 IPv6堆疊中。IPv6,包含6to4穿隧和Teredo穿隧,在Windows Vista中預設是啟動的。[22]許多Unix系統只支援原生的6to4,但Teredo可由如Miredoo的第三方軟體來提供。
ISATAP[23]藉由將IPv4位元址對應到IPv6的鏈路本地位址,從而將IPv4網路視為一種虛擬的IPv6區域連線。不像6to4和Teredo是站點間的穿隧機制,ISATAP是一種站點內機制,意味著它是用來設計提供在一個組織內節點之間的IPv6連接性。
在組態穿隧中,如6in4穿隧隧,穿隧端點是要明確組態過的,可以是藉由管理員手動或作業系統的組態機制,或者藉由如tunnel broker等的自動服務。[24]組態穿隧通常比自動穿隧更容易去除錯,故建議用於大型且良好管理的網路。
組態穿隧在IPv4穿隧上,使用網際協定中號碼的41號。
在區域網際網路註冊管理機構耗盡所有可使用的IPv4位元址後,非常有可能使新加入網際網路的主機只具有IPv6連接能力。對這些須要向後相容以能存取IPv4資源的客戶端,須要佈署合適的轉換機制。
一種轉換技術是使用雙堆疊的應用層代理,如網頁代理伺服器。
一些對於應用程式無法得知但在其低層使用類NAT轉換技術也曾被提出。但因為一般應用層協定所要求的能力其應用太廣,其中大部分都被認定在實際上太不可靠,並且被認為應刪除。
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.