蓋索林 Gasolin

人們總是高估一年可以完成的事,卻低估十年能完成的事

0%

此 HOWTO 文件應列於"網路/協定"分類

This HOWTO should be listed in category “Networking/Protocols”.

2.4.1. 為什麼稱作IPv6,而非繼IPv4之後稱為IPv5 ? 在任何IP標頭中, 前4位元是為協定版本號所保留的. 所以理論上一個協定的版本號在0和15之間都是可以的:

* 4 己經為IPv4所使用.
* 5 為串流( Stream )協定所保留 (STP, RFC 1819 / 網際網路串流協定第二版)(不曾真正公開使用過)

因此下一個可以用的號碼是6, 因此 IPv6 就這樣誕生了!

2.4.2. IPv6 位址: 為什麼IPv6 位址位元數要這麼長? 在設計IPv4的時候,人們認為32位元的長度足夠全世界使用. 回頭看看這些年來, 32位元就現在和未來幾年來仍足以使用. 然而, 32位元過不久將不能滿足各種網路設備對全球IP位址的需求. 想一想將來要連結網路的移動電話, 汽車(包括電子總控系統), 烤麵包機,冰箱, 照明開關…

所以設計者選擇了128位元, 是今天IPv4 大小(2^96)與長度的4倍.

雖然實際可使用的大小可能比它看起來的還要小. 這是因為現在的定義位址設計, 64位元被用於界面識別. 另外64位元則用於路由. 假設於目前嚴格的集合階層(/48, /35, …), IPv6 所能提供的位址空間仍可能有耗盡的一天, 但在可見的將來中應仍不會發生.

您可由 RFC 1715 / The H Ratio for Address Assignment Efficiency and RFC 3194 / The Host-Density Ratio for Address Assignment Efficiency.中得到更進一步的資訊

2.4.3. IPv6 位址: 為什麼在新的設計裡位元數這麼少? 雖然, 可能有些人在考慮IPv8和IPv16, 然而這些設計無論從接受和執行都是那麼的遙遠. 目前128bit對於標頭和數據傳輸延遲來說是最佳的選擇. 考慮到在IPv4和IPv6的最小最大傳輸單位(MTU),它們分別是576位元組和 1280位元組, IPv4 的標頭長度為20位元組和(最小值,加上IPv4位址選項可以增大到60位元組), 在 IPv6 的標頭中則是48位元組(固定不變的), 標頭分別占它們MTU的3.4%和3.8%, 這意味著兩個協定標頭所造成的負載幾乎相同. 更多位元的位址需要更大的標頭, 因而佔據更大的負載.

同樣,考慮到正常連結的MTU最大值(像現在的以太網): 1500位元組(特別的例子:Jumbo frames使用了9k位元組). 最終,如果在要傳輸的第三層封包中10%或20%都用來傳送位址而非封包內容, 這可能不是個很好的設計方式.

IPv6是將用來取代 IPv4(也叫做IP) 的ㄧ種新的第三層協定 (請參考 linuxports/howto/intro_to_networking/ISO - OSI Model) IPv4是很早以前設計的 (1980年一月, RFC 760 / 網路協定(Internet Protocol)) , 自協定設計之初即不斷地有人要求IP網路協定應提供更多的位址和更高的性能. RFC 2460 / 網路協定第六版 (Internet Protocol Version 6 Specification) 是最新的 RFC 版本. IPv6與IP最主要的不同點在於重新設計了封包標頭. 包括將位址的長度從 32 bits 增加到 128 bits. 因為第三層主要負責使用基於位址的封包路由來達成端對端位址傳輸. 因此與 IPv4 ㄧ樣, 傳輸時必需包含新的IPv6位址(來源和目標). 想知道更多關於 IPv6 歷史的資訊的話可以參考看看較舊版本的 IPv6 相關 RFC 列表 SWITCH IPv6 Pilot / References http://www.switch.ch/lan/ipv6/references.html

前文提到 IPv6 的位址為128位元. 這麼高的位元數換算成一般十進位數字表示法的話, 長度將達到10的39次方:

2^128-1: 340282366920938463463374607431768211455

這麼長的數字或位址將很難記得住. 而且, IPv6的位址是逐位定位的(就像IPv4, 但這個觀點不是公認的). 所以透過十六進制表示法能更好地表示這些數字. 將每 4 位元(也叫做"nibble")表示為數字(0-9)或字符 a-f(10-15). 這種表示法可以將IPv6的地址長度縮減到可用32個字符來表示.

2^128-1: 0xffffffffffffffffffffffffffffffff

這種表示法仍然不是很方便. (因為這樣一長串看下來很容易就會混淆或遺漏了單個十六進制數字), 所以IPv6的設計者將地址形式定為每16位元就用"冒號"區分開來. 此外, 開頭的"0x"(在程式設計當中用來表示十六進制數值)也被省略了:

2^128-1: ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff

如此一來, 一個可用的地址(請參考之後提到的地址類型)如下:

3ffe:ffff:0100:f101:0210:a4ff:fee3:9566

為了簡化, 每個16位元區塊中高位元的0可以被省略:

3ffe:ffff:0100:f101:0210:a4ff:fee3:9566 -> ¬ 3ffe:ffff💯f101:210:a4ff:fee3:9566

連續值為0的16位元位址區塊可以用"::"表示. 但是在一個IPv6位址當中只能使用這種簡寫一次, 否則就不再是唯一表示的位址了:

3ffe:ffff💯f101:0:0:0:1 -> 3ffe:ffff💯f101::1

簡化得最短的 IPv6 本地位址:

0000:0000:0000:0000:0000:0000:0000:0001 -> ::1

也有一種方法叫做簡潔 (compact, base85 coded) 表示法. 定義於 RFC 1924 / IPv6簡潔位址表示法 (定於1996年四月一日), 但從沒有被廣泛使用過, 可能只是個愚人節笑話. 但還是給個例子:

ipv6calc --addr_to_base85 3ffe:ffff:0100:f101:0210:a4ff:fee3:9566

Itu&-ZQ82s>J%s99FJXT

資訊: ipv6calc 是一個IPv6地址格式的計算和轉換的計劃, 您可以在 ipv6calc 首頁中找到: http://www.deepspace6.net/projects/ipv6calc.html 鏡像站: http://mirrors.bieringer.de/www.deepspace6.net/projects/ipv6calc.html