在近幾年,大家經常聽著IPv4位址即將枯竭,然後網路即將要更換到IPv6。不過,到底什麼是IPv4及IPv6呢?以及,這兩者名字很像,它們有什麼連帶關係?
IPv4與IPv6,兩者為截然不同的網路協定
網路通訊協定(Internet Protocol,IP)是用於網路交換封包的一種協定,它定義了定址方式及資料的封裝結構。而IP位址則是在網路上替主機定義位址,簡單來說它類似於公司地址,能夠明確標示出公司所在位址。
目前最被廣泛使用的網路協定為IPv4,現代人上網使用的任何服務,幾乎都使用到它。而近幾年經常被提及的IPv6,則是被視為繼承IPv4的下一代網路協定。其設計初衷,是在90年代有學者擔心IPv4位址不夠使用,所以重新規畫。因此IPv6除了在位址數量上大幅增加外,更進一步針對安全性、QoS等問題加以改進。
雖然這兩個協定似乎只是版本上的差異,但實際上它們是徹底完全不同的兩個協定。它們就像中文和英文的差別,雖然都是用來溝通的語言,但其構造及語法差異極大。也因為這樣,IPv4與IPv6不能互通,IPv4的用戶只能連線到IPv4的網站,且IPv6亦然。而兩者間較明顯的差異比較如下:
位址的數量
這兩個世代的網路協定,最明顯的差異就在於其提供的網路位址數量。IPv4的位址格式是採用32位元長度,位址能提供2的32次方個,換算後約42億個。雖然IPv4有這麼多IP位址,但依舊在2011年的2月3日消耗殆盡。
而IPv6的位址格式則採用128位元長度,其位址能提供2的128次方個。它所能提供的IP位址,遠遠超過IPv4的數量,預估能讓地球上每個人都分到100萬個IP位址,或是地球上每平方公尺面積皆提供1000多個IP位址。簡而言之,轉換到IPv6後,IP位址的數量多到幾乎不可能用盡。
位址表示方式
IPv4的IP位址是由32位元所組成,原始的表示方式是8個位元為一個單位,分4個部分。每個部分以2進位表示,並以「.」做區隔,譬如:「10110110.11101001.01001100.11111111」。
不過這樣的表示法太長,不便記憶。所以通常都以10進位的方法表示,而每個部份的數字會呈現0至255的整數,譬如iThome網站的IP位址為210.59.230.150。
而IPv6的IP位址則是128位元組成,表示方式是使用8組數字,每組為4個字元的16進位方法表示。而區隔每個部分的方式亦與IPv4不同,是以「:」表示。譬如「1079:0BD3:6ED4:1D71:414B:2E2A:7144:72BE」,這樣就是一組標準的IPv6網路位址。
不過IPv6的位址表示法太長,所以位址有所謂的省略規則,以下為2個位址省略規則:
規則1:為每組數字的第一個0可以省略,若整組皆為0,則以0表示。譬如,「0DB8」可以省略為「DB8」,「0000」則為「0」。
規則2:為連續出現的0000可以省略成「::」。譬如:「:0000:0000:0000:0000:」可以省略成「:0000:0000:0000::」、「:0:0:0:0:」、「:0::0:」或「::」。
但需注意的是,由於「::」表示為連續且數量多的0,所以如果位址中出現2個「::」時,會讓人搞不清楚實際代表的位址。因為這樣,在位址省略規則中有明訂,對於一個IPv6位址,只能出現一次「::」來省略0。
由於IPv6的位址經過省略後,依舊不方便一般人記憶。所以在網頁存取位址,或撰寫應用程式呼叫網址時,建議不要直接使用IPv6位址,應該使用DNS網域名稱會較為方便。
除了表示方式不同外,兩者間的位址型態也有些許差異。像IPv6提供Unicast、Anycast及Multicast,三種位址型態。其中Unicast對應單點傳送、Multicast則取代廣播,只有這兩點與IPv4類似。而Anycast則是發送給群組,但只有最近的介面會接收到。
表頭格式與功能
IPv6的表頭格式是改良自IPv4,它有大幅度的修改,讓表頭格式更為簡化及具有擴充性。IPv6與IPv4共同的欄位有Version、Source Address、Destination Address,還有部分欄位功能類似,名稱卻不同。譬如Payload Length取代了Datagram Length、Next Header取代Protocol,以及Hop Limit取代TTL。
而IPv6亦增加了Flow Label及Priority等兩個欄位,它們的功能是用來支援像視訊、語音這類即時服務的需求,以提高QoS的品質。
就Flow Label欄位來說,IPv6的封包能夠在該欄位留下標記。在傳輸時,一連串的封包會要求所經過的路由器,提供特別的處理。而路由器則會透過該欄位,辨識封包的Flow Level;而Priority則可以設定封包傳輸的優先順序,透過這欄位的檢查,讓較重要的封包優先傳送。
除此之外,IPv6在安全、擴充等功能上,加強了IPv4缺乏的部份。像安全性方面,IPv6預設有IPSec,來提升安全性。相較之下,IPv4的IPSec則需要額外開啟。而擴充方面,IPv4只能使用Option欄位,而IPv6除了將基本表頭簡化外,還可以任意加上多個擴充表頭使用。