IPV6地址的表示方法

1、IPV6地址介绍

对于一个完整的IPv6地址,需要128位,已经被分成了8个段,每个段4个字符。也就是说要完整的表示一个IPv6地址,需要些32个字母;

IPv6总共128bit,共16个字节,分成8段,每段占用2个字节。每段分别用16进制表示,刚好是4个字符。

IPv6地址的表示方法分为三种:

  • 首选格式
  • 压缩表示
  • IPv4内嵌在IPv6中

2、IPv6地址的表示方法–首选格式

首选格式的表示方法就是将IPv6中的128位,也就是共32个字符完完整整,一个不漏的全写出来。

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,也都一个不漏地写了出来。

3、IPv6地址的表示方法–压缩格式

Case 1:

<1>在IPv6中,地址分为8个段来表示,每段共4个字符。
<2>但是一个完整的IPv6地址会经常碰到整个段4个字符全部都为0,所以我们将整个段4个字符全部都为0的使用双冒号 ::来表示。
<3>如果连续多个段全都为0,那么也可以同样将多个段都使用双冒号::来表示。如果是多个段,并不需要将双冒号写多次,只需要写一次即可。
<4>比如一个地址8个段,其中有3个段全都为0,那么我们就将这全为0的三个段共48位用::来表示。再将其他五个段照常写出即可。当计算机读到这样一个不足128位的地址时,比128位少了多少位,就在::的地方补上多少个0。上面的::代替为48位,那么计算机就会在这个地址的::位置补上48位的0,这样就正确地将地址还原回去了。

eg 1:

0000:0000:0000:0000:0000:0000:0000:0000

压缩为:

::

note:由于这个地址的8个段全部都为0,所以只用::就将整个地址表示出来。当计算机拿到这个压缩后的地址时,发现比正常的128为少了128位,那么就会在::的地方补上128个0,结果为:0000:0000:0000:0000:0000:0000:0000:0000

eg 2 :

0000:0000:0000:0000:0000:0000:0000:0001

压缩为:

::0001

note:压缩后的地址比正常的128位少了112位,就算几就会在::的地方补上112个0, 结果为:0000:0000:0000:0000:0000:0000:0000:0001

eg 3 :

2001:0410:0000: 0000:FB00:1400:5000:45FF

压缩为:

2001:0410 :: FB00:1400:5000:45FF

note:压缩后的地址比正常的128位少了32位,计算机就会在::的地方补上32个0,结果为:2001:0410:0000: 0000:FB00:1400:5000:45FF

eg 4 :

3ffe:0000:0000:0000:1010:2a2a:0000:0001

压缩为:

3ffe::1010:2a2a::0001

note:当计算机拿到这个压缩后的地址,发现比正常的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地址时,一个地址中只能出现一个::

Case 2 :

<1> 在压缩格式的case 1 的表示中,是在地址中整个段4个字符都为0时,才将其压缩为::来表示。

<2> 但是在使用第一种情况压缩之后,我们仍然可以看到地址中还存在许多毫无意义的0,比如0001,0410。我们知道0001中,虽然前面有三个0,但是如果我们把前面的0全部省略掉,写为1,结果是等于0001的;

<3> 而0410也是一样,我们将前面的0省略掉,写成410,也同样等于0410的。所以我们在省略数字前面的0时,是不影响结果的。那么这个时候,表示IPv6地址时,允许将一个段中前部分的0省略不写,因为不影响结果。

<4> 但是需要注意的是,如果0不是前导0,比如2001,我们就不能省略0,写成21,因为21不等于2001。所在中间的0不能省略,只能省略最前面的0

eg 1 :

0000:0000:0000:0000:0000:0000:0000:0000

压缩为:

0:0:0:0:0:0:0:0

eg 2 :

0000:0000:0000:0000:0000:0000:0000:0001

压缩为:

0:0:0:0:0:0:0:1

eg 3 :

2001:0410:0000:1234:FB00:1400:5000:45FF

压缩为:

2001:410:0:1234:FB00:1400:5000:45FF

Case 3 :

<1>在前面两种IPv6地址的压缩表示方法中,case 1是在整段4个字符全为0时,才将其压缩后写为::
<2> 而case 2是将无意义的0省略不写。
<3> case 3 就是结合前两种方法,既将整段4个字符全为0的部分写成::,也将无意义的0省略不写。

eg 1 :

0000:0000:0000:0000:0000:0000:0000:0001 

压缩为:

::1

eg 2 :

2001:0410:0000:0000:FB00:1400:5000:45FF

压缩为:

2001:410::FB00:1400:5000:45FF

4、 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

eg 1:
IPv4地址为138.1.1.1,表示为IPv6地址为:

0:0:0:0:0:0:138.1.1.1

IPv6中没有广播地址,IPv6不建议划分子网。如果需要划分子网,网络位不要低于48位。

猜你喜欢

转载自blog.csdn.net/qq_22938603/article/details/124802934