網路層:轉送與 IP

IPv6

/ I-P-version-six /

IPv6 是網際網路協定較新的版本,主要是為了解決一個大問題而生:IPv4 的 32 位元位址,約 43 億個,用完了。IPv6 採用 128 位元位址,提供 2^128 個——這個數字大到(約 3.4 乘以 10 的 38 次方)我們可以給地球上每個裝置一個全球唯一的位址都還綽綽有餘,再也不需要 IPv4 逼我們採用的 NAT 變通辦法。如果說 IPv4 的位址相當於一座城市的電話號碼量,IPv6 則多到足以讓每一粒沙都有自己的一條線。

一個 IPv6 位址寫成八組、每組四個十六進位數字、以冒號分隔,例如 2001:0db8:85a3:0000:0000:8a2e:0370:7334,並有簡寫規則:去掉每組開頭的零,並用「::」取代一段全零的組。所以那個範例縮寫成 2001:db8:85a3::8a2e:370:7334。除了尺寸,IPv6 把標頭簡化為固定 40 位元組(處理更快)、移除路由器端的分段與標頭檢查碼、內建位址自動設定(主機能自己組出位址),並把 IPsec 與多播當成一等公民。它沒有廣播;廣播的工作由多播與一種新的「任播(anycast)」接手。

誠實的現實是:IPv6 並非魔法,本身也不會更快——它是同一套盡力而為的資料報服務,只是位址空間更大、標頭更乾淨。採用速度慢,是因為 IPv4 加上 NAT 一直「夠用」,而且 IPv4 與 IPv6 並不直接相通:一台純 IPv6 主機無法直接和一台純 IPv4 主機對話。這道鴻溝正是轉換機制(雙協定堆疊、隧道、轉譯)存在的原因,也是為什麼 IPv6 標準化數十年後,兩個協定仍並肩運行。

位址 2001:0db8:0000:0000:0000:0000:0000:0001 壓縮成 2001:db8::1——開頭的零去掉,一段全零的組縮成「::」。「::」在一個位址中只能出現一次,這樣展開時才不會有歧義。

可做零壓縮的十六進位組——讓 128 位元變得可讀。

IPv6 本質上並不比 IPv4 更快或更安全;它最主要的勝利是龐大的位址空間。它也不向後相容——純 IPv4 與純 IPv6 主機之間,需要轉換機制才能通訊。

又称
IP version 6IPngIPv6