IPv6表示方法及其簡化方法
對於一個完整的IPv6地址,需要128位,已經被分成了8個段,每個段4個字元。也就是說要完整的表示一個IPv6地址,需要些32個字母,這是相當長的,並且容易混淆和出錯。所以IPv6在地址的表示方法上是有講究的,到目前為止,IPv6地址的表示方法分為三種,分別是:
-
首選格式
-
壓縮表示
-
IPv4內嵌在IPv6中
IPv6總共128bit,共16個位元組,分成8段,每段佔用2個位元組。每段分別用16進製表示,剛好是4個字元。
下面分別詳述這三種IPv6地址表示方法:
1. 首選格式
首選格式的表示方法其實沒有任何講究,就是將IPv6中的128位,也就是共32個字元完完整整,一個不漏的全寫出來。比如下面就是一些IPv6地址的首選格式表示形式:
0000:0000:0000:0000:0000:0000:0000:0000 0000:0000:0000:0000:0000:0000:0000:0001 2001:0410:0000:1234:FB00:1400:5000:45FF 3ffe:0000:0000:0000:1010:2a2a:0000:0001 FE80:0000:0000:0000:0000:0000:0000:0009 FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF
從上面IPv6的首選格式表示中可以看出,每一個地址,都將32個字元全部寫了出來。即使地址中有許多個0
,或者許多個F
,也都一個不漏地寫了出來。由此可見,首選格式只需要將地址完整寫出即可,沒有任何複雜的變化,但是容易出錯。
2. 壓縮格式
從前面一個IPv6地址表示方法首選格式
可以看出,一個完整的IPv6地址中,會經常性的出現許多個0
。而我們知道,許多時候0
是無意義的。那麼我們就考慮能否在不影響地址結果的前提下將0
0
的表示方法稱為壓縮格式。
而壓縮格式的表示中,分三種情況,下面分別介紹三種壓縮格式:
2.1 情形1
在IPv6中,地址分為8個段來表示,每段共4個字元。但是一個完整的IPv6地址會經常碰到整個段4個字元全部都為0
,所以我們將整個段4個字元全部都為0的使用雙冒號::
來表示。如果連續多個段全都為0,那麼也可以同樣將多個段都使用雙冒號::
來表示。如果是多個段,並不需要將雙冒號寫多次,只需要寫一次即可。比如一個地址8個段,其中有3個段全都為0,那麼我們就將這全為0的三個段共48位用::
來表示。再將其他五個段照常寫出即可。當計算機讀到這樣一個不足128位的地址時,比128位少了多少位,就在::
::
代替為48位,那麼計算機就會在這個地址的::
位置補上48位的0,這樣就正確地將地址還原回去了。
下面來看一些整個段4個字元都為0的IPv6地址使用壓縮格式來表示:
- 例1
壓縮前:
0000:0000:0000:0000:0000:0000:0000:0000
壓縮後:
::
說明:從上面可以看出,由於這個地址的8個段全部都為0,所以只用::
就將整個地址表示出來。當計算機拿到這個壓縮後的地址時,發現比正常的128為少了128位,那麼就會在::
的地方補上128個0,結果為:
0000:0000:0000:0000:0000:0000:0000:0000
可以看出,計算機還原的地址就是壓縮之前的真實地址。
- 例2
壓縮前:
0000:0000:0000:0000:0000:0000:0000:0001
壓縮後:
::0001
說明:可以看出壓縮後的地址比正常的128位少了112位,就算幾就會在::
的地方補上112個0
, 結果為
0000:0000:0000:0000:0000:0000:0000:0001
可以看出,計算機還原的地址就是壓縮之前的真實地址。
- 例3
壓縮前:
2001:0410:0000: 0000:FB00:1400:5000:45FF
壓縮後:
2001:0410 :: FB00:1400:5000:45FF
說明:可以看出,壓縮後的地址比正常的128位少了32位,計算機就會在::的地方補上32個0,結果為
2001:0410:0000: 0000:FB00:1400:5000:45FF
可以看出,計算機還原的地址就是壓縮之前的真實地址。
- 例4
壓縮前:
3ffe:0000:0000:0000:1010:2a2a:0000:0001
壓縮後:
3ffe::1010:2a2a::0001
說明:當計算機拿到這個壓縮後的地址,發現比正常的128位少了64位,計算機就會試圖在::
的地方補上64個0,所以這時補出來的結果很可能是以下幾種
3ffe:0000:1010:2a2a:0000:0000:0000:0001 或: 3ffe:0000:0000:1010:2a2a:0000:0000:0001 或: 3ffe:0000:0000:0000:1010:2a2a:0000:0001
從結果中可以發現,當一個IPv6地址被壓縮後,如果計算機出現兩個或多個::
的時候,計算機在將地址還原時,就可能出現多種情況。這將導致計算機還原後的地址不是壓縮之前的地址,將導致地址錯誤,最終通訊失敗。
所以在壓縮IPv6地址時,一個地址中只能出現一個::
。
2.2 情形2
在壓縮格式的第一種情況的表示中,是在地址中整個段4個字元都為0時,才將其壓縮為::
來表示。但是在使用第一種情況壓縮之後,我們仍然可以看到地址中還存在許多毫無意義的0,比如0001
,0410
。我們知道0001
中,雖然前面有三個0,但是如果我們把前面的0全部省略掉,寫為1,結果是等於0001
的;而0410
也是一樣,我們將前面的0省略掉,寫成410,也同樣等於0410
的。所以我們在省略數字前面的0時,是不影響結果的。那麼這個時候,表示IPv6地址時,允許將一個段中前部分的0省略不寫,因為不影響結果。但是需要注意的是,如果0不是前導0,比如2001
,我們就不能省略0,寫成21,因為21不等於2001。所在中間的0不能省略,只能省略最前面的0。下面來看一些省略前導0的地址表示形式:
- 例1
壓縮前:
0000:0000:0000:0000:0000:0000:0000:0000
壓縮後:
0:0:0:0:0:0:0:0
從結果中可以看出,計算機根本就不需要對這樣的地址還原。壓縮後的結果和壓縮前的結果是相等的。
- 例2
壓縮前:
0000:0000:0000:0000:0000:0000:0000:0001
壓縮後:
0:0:0:0:0:0:0:1
從結果中可以看出,計算機根本就不需要對這樣的地址還原,壓縮後的結果和壓縮前的結果是相等的。
- 例3
壓縮前:
2001:0410:0000:1234:FB00:1400:5000:45FF
壓縮後:
2001:410:0:1234:FB00:1400:5000:45FF
從結果中可以看出,計算機根本就不需要對這樣的地址還原,壓縮後的結果和壓縮前的結果是相等的。
2.3 情形3
在前面兩種IPv6地址的壓縮表示方法中,第一種是在整段4個字元全為0時,才將其壓縮後寫為::
; 而第二種是將無意義的0省略不寫。可以發現兩種方法都能節省時間,方便閱讀。第三種壓縮方法就是結合前兩種方法,既將整段4個字元全為0的部分寫成::
,也將無意義的0省略不寫。結果就出現以下一些最方便的表示方法:
- 例1
壓縮前:
0000:0000:0000:0000:0000:0000:0000:0001
壓縮後:
::1
- 例2
壓縮前:
2001:0410:0000:0000:FB00:1400:5000:45FF
壓縮後:
2001:410::FB00:1400:5000:45FF
可以看到,結合了兩種壓縮格式的方法,更為簡潔。
3. IPv4內嵌在IPv6中
在網路還沒有全部從IPv4過渡到IPv6時,就可能出現某些裝置既連線了IPv4網路,又連線了IPv6網路。對於這樣的情況,就需要一個地址既可表示IPv4地址,又可表示IPv6地址。
因為一個IPv4地址為32位,一個IPv6地址為128位。要讓一個IPv4地址表示為IPv6地址,明顯已經少了96位,那麼就將一個IPv4地址通過增加96位,結果變成128位,來與IPv6通訊。在表示時,是在IPv4原有地址的基礎上,增加96個0,再結合原有的IPv4地址,表示方法為:
0:0:0:0:0:0:A.B.C.D 或者: ::A.B.C.D 或者: 0000:0000:0000:0000:0000:0000:A.B.C.D
例如IPv4地址為138.1.1.1
,表示為IPv6地址為:
0:0:0:0:0:0:138.1.1.1
IPv6中沒有廣播地址,IPv6不建議劃分子網。如果需要劃分子網,網路位請不要低於48位。
[參看]