2020年11月15日 星期日

IPv6(Internet Protocol version 6)

IPv6的發展過程,除了一般所知的IPv4位址不足之問題外,還有諸多技術上的考量,包括網路架構的簡單化、網路組態的自動化、路由效能的改善、網路安全的提昇、行動性的支援,以及服務品質的提供等。

截至2018年1月,全球上網人數已達40.21億,IPv4僅能提供約42.9億個IP位置。IPv6的使用增長緩慢,在2019年12月,透過IPv6使用Google服務的用戶百分率首次超過30%。IPv6具有比IPv4大得多的編碼位址空間。這是因為IPv6採用128位元的位址,而IPv4使用的是32位元。因此新增的位址空間支援2128(約3.4×1038)個位址,具體數量為

340,282,366,920,938,463,463,374,607,431,768,211,456 個,就以地球人口70億人計算,每人平均可分得約4.86×1028(486117667×1020)個IPv6位址。

 IPv6 的虛擬 IP 範圍也很廣,只要是 fc00 開頭的,通通都是虛擬 IP (也可以稱為私有 IP)。

https://test-ipv6.com 這個網站會告知您的電腦目前所使用的IPv6地址,還有您目前所連接的網路環境,是否支援IPv6。

IPv6格式

IPv6二進位制下為128位元長度,以16位元為一組,每組以冒號「:」隔開,可以分為8組,每組以4位十六進制方式表示。例如:2001:0db8:86a3:08d3:1319:8a2e:0370:7344 是一個合法的IPv6位址。類似於IPv4的點分十進位,同樣也存在點分十六進位的寫法,將8組4位元十六進位位址的冒號去除後,每位以點號「.」分組,例如: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在某些條件下可以省略:

每項數字前導的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

可以用雙冒號「::」表示一組0或多組連續的0,但只能出現一次:

如果四組數字都是零,可以被省略。遵照以上省略規則,下面這兩組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

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

如果這個位址實際上是IPv4的位址,後32位元可以用10進制數表示;因此::ffff:192.168.89.9 相等於::ffff:c0a8:5909。

另外,::ffff: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標頭格式
IPv4標頭格式

IPv6標頭格式與IPv4標頭格式比較,可以發現前者少了6個欄位,所以IPv6可節省不少封包處理之時間。

其中最明顯的差異在於IPv6標頭的流量標籤(Flow Label),而在IPv4中並無類似的欄位。流量標籤的目的,在於標示特定的即時與多媒體訊務;而下層標頭(Next Header)則是用來標示緊接於IPv6標頭後的延伸標頭種類,包括節點選項標頭(Hop – by – Hop Options Header)、收端選項標頭(Destination Options Header)、路由標頭(Routing Header)、分割標頭(Fragment Header)、認證標頭(Authentication Header)、加密安全資料標頭(Encrypted Security Payload Header)與其它上層之標頭(Upper Layer Header),下圖顯示出IPv6延伸標頭的架構。

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)

在組態穿隧中,如6in4穿隧隧,穿隧端點是要明確組態過的,可以是藉由管理員手動或作業系統的組態機制,或者藉由如tunnel broker等的自動服務。[24]組態穿隧通常比自動穿隧更容易去除錯,故建議用於大型且良好管理的網路。組態穿隧在IPv4穿隧上,使用網際協定中號碼的41號。

沒有留言:

張貼留言