1. 程式人生 > 其它 >IPv6表示方法及其簡化方法

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位少了多少位,就在::

的地方補上多少個0。比如上面的::代替為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位。



[參看]

  1. IPv6地址表示方法及其簡化方法