网络知识之IPV6(三)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了网络知识之IPV6(三)相关的知识,希望对你有一定的参考价值。

参考技术A

对于一个完整的IPv6地址,需要128位,已经被分成了8个段,每个段4个字符。也就是说要完整的表示一个IPv6地址,需要些32个字母,这是相当长的,并且容易混淆和出错。

所以IPv6在地址的表示方法上是有讲究的,到目前为止,IPv6地址的表示方法分为三种,分别是:

IPv6总共128bit,共16个字节,分成8段,每段占用2个字节。

每段分别用16进制表示,刚好是4个字符。

下面分别详述这三种IPv6地址表示方法:

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

比如下面就是一些IPv6地址的首选格式表示形式:

从上面IPv6的首选格式表示中可以看出,每一个地址,都将32个字符全部写了出来。

即使地址中有许多个 0 ,或者许多个 F ,也都一个不漏地写了出来。

由此可见,首选格式只需要将地址完整写出即可,没有任何复杂的变化,但是容易出错。

从前面一个IPv6地址表示方法 首选格式 可以看出,一个完整的IPv6地址中,会经常性的出现许多个 0 。

而我们知道,许多时候 0 是无意义的。那么我们就考虑能否在不影响地址结果的前提下将 0 给省略,不写出来。

这样就可以大大节省时间,也方便人们阅读和书写, 这样的将地址省略 0 的表示方法称为压缩格式。

而压缩格式的表示中,分三种情况,下面分别介绍三种压缩格式:

在IPv6中,地址分为8个段来表示,每段共4个字符。

但是一个完整的IPv6地址会经常碰到整个段4个字符全部都为 0 ,所以我们将整个段4个字符全部都为0的使用双冒号 :: 来表示。

如果连续多个段全都为0,那么也可以同样将多个段都使用双冒号 :: 来表示。

如果是多个段,并不需要将双冒号写多次,只需要写一次即可。

比如一个地址8个段,其中有3个段全都为0,那么我们就将这全为0的三个段共48位用 :: 来表示。再将其他五个段照常写出即可。当计算机读到这样一个不足128位的地址时,比128位少了多少位,就在 :: 的地方补上多少个0。比如上面的 :: 代替为48位,那么计算机就会在这个地址的 :: 位置补上48位的0,这样就正确地将地址还原回去了。

下面来看一些整个段4个字符都为0的IPv6地址使用压缩格式来表示:

压缩前:

压缩后:

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

可以看出,计算机还原的地址就是压缩之前的真实地址。

压缩前:

压缩后:

说明:可以看出压缩后的地址比正常的128位少了112位,就算几就会在 :: 的地方补上112个 0 , 结果为

可以看出,计算机还原的地址就是压缩之前的真实地址。

压缩前:

压缩后:

说明:可以看出,压缩后的地址比正常的128位少了32位,计算机就会在::的地方补上32个0,结果为

可以看出,计算机还原的地址就是压缩之前的真实地址。

压缩前:

压缩后:

说明:当计算机拿到这个压缩后的地址,发现比正常的128位少了64位,计算机就会试图在 :: 的地方补上64个0,所以这时补出来的结果很可能是以下几种

从结果中可以发现,当一个IPv6地址被压缩后,如果计算机出现两个或多个 :: 的时候,计算机在将地址还原时,就可能出现多种情况。这将导致计算机还原后的地址不是压缩之前的地址,将导致地址错误,最终通信失败。

所以在压缩IPv6地址时,一个地址中只能出现一个 :: 。

在压缩格式的第一种情况的表示中,是在地址中整个段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的地址表示形式:

压缩前:

压缩后:

从结果中可以看出,计算机根本就不需要对这样的地址还原。压缩后的结果和压缩前的结果是相等的。

压缩前:

压缩后:

从结果中可以看出,计算机根本就不需要对这样的地址还原,压缩后的结果和压缩前的结果是相等的。

压缩前:

压缩后:

从结果中可以看出,计算机根本就不需要对这样的地址还原,压缩后的结果和压缩前的结果是相等的。

在前面两种IPv6地址的压缩表示方法中,第一种是在整段4个字符全为0时,才将其压缩后写为 :: ; 而第二种是将无意义的0省略不写。可以发现两种方法都能节省时间,方便阅读。第三种压缩方法就是结合前两种方法,既将整段4个字符全为0的部分写成 :: ,也将无意义的0省略不写。结果就出现以下一些最方便的表示方法:

压缩前:

压缩后:

压缩前:

压缩后:

可以看到,结合了两种压缩格式的方法,更为简洁。

在网络还没有全部从IPv4过渡到IPv6时,就可能出现某些设备既连接了IPv4网络,又连接了IPv6网络。对于这样的情况,就需要一个地址既可表示IPv4地址,又可表示IPv6地址。

因为一个IPv4地址为32位,一个IPv6地址为128位。要让一个IPv4地址表示为IPv6地址,明显已经少了96位,那么就将一个IPv4地址通过增加96位,结果变成128位,来与IPv6通信。在表示时,是在IPv4原有地址的基础上,增加96个0,再结合原有的IPv4地址,表示方法为:

例如IPv4地址为 138.1.1.1 ,表示为IPv6地址为:

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

以上是关于网络知识之IPV6(三)的主要内容,如果未能解决你的问题,请参考以下文章

网络之二

网络编程之一文读懂什么是IPv6

Android5.0网络之ipv6

网络先行与创新之城:当“IPv6+”成为千行百业的数字化支点

ipv6怎么关闭

中科三方——IPv6升级改造安全策略之多段式防护