天天看点

《DNS与BIND(第5版)》——10.14 IPv6寻址入门

本节书摘来自异步社区《dns与bind(第5版)》一书中的第10章,第10.14节,作者: 【美】joseph davies 更多章节内容可以访问云栖社区“异步社区”公众号查看。

在介绍接下来的两个主题(包括如何将域名解析为ipv6地址,以及将ipv6地址逆向解析为域名)之前,最好先了解一下ipv6地址的表示方法和结构。ipv6地址的长度为128位(128bit),其最佳表示方法是使用冒号分隔的8组数字,每组数字由4个十六进制数构成;例如:

《DNS与BIND(第5版)》——10.14 IPv6寻址入门

https://yqfile.alicdn.com/618065b62109d0e6d20b49c27553246d293455ed.png" >

第一组十六进制数(本例中是2001)代表此ipv6地址中最高的16位(16bit)。

在每组数字中,起始的一个或多个0可以被省略,因此可以将上面的地址写成:

《DNS与BIND(第5版)》——10.14 IPv6寻址入门

https://yqfile.alicdn.com/a23ec6f738678bd74bc89f8530f8692ccd369e52.png" >

除非使用::标记,否则每组数字中必须包含至少一个十六进制数。::标记用来压缩连续几组全0的数字。当仅需要指定ipv6地址前缀(prefix)时,该标记会非常有用。例如:

《DNS与BIND(第5版)》——10.14 IPv6寻址入门

https://yqfile.alicdn.com/249c0a47063a69e7a3a6a97445d4ef077b23caf1.png" >

用来指定ipv6地址起始的64位为2001:db80:dead:beef,而剩下的64位全为0。

还可以在ipv6地址的开头使用::标记来指定其后缀(suffix)。例如,ipv6的loopback(环回)地址通常写成:

《DNS与BIND(第5版)》——10.14 IPv6寻址入门

https://yqfile.alicdn.com/65088127517033ecf5c0593038983d1c103ed4fb.png" >

或者写成127个0后接着一个1。甚至可以在ipv6地址的中间使用::标记,用来简写连续几组全0的数字:

《DNS与BIND(第5版)》——10.14 IPv6寻址入门

在一个ipv6地址中只能使用一个::标记,因为多于一个::标记会造成混淆,无法确定每个::标记代表的0的位数。

ipv6地址前缀的表示方法类似于ipv4的cidr表示法。作为前缀的有效位(significant bit)使用标准的ipv6表示法表示,后面跟着一个斜杠(/)以及一个表示前缀确切个数的十进制数。因此,以下3种前缀表示方法是等价的(虽然简洁程度明显不同):

《DNS与BIND(第5版)》——10.14 IPv6寻址入门

https://yqfile.alicdn.com/3406a2fb146a8f51e14c02e0e294e9f70469e4c5.png" >

ipv6与ipv4网络号等价的部分,被称为全球路由前缀(global routing prefix)。该前缀由ipv6地址的高位(high-order bit)组成,长度可变,用来识别一个特定的网络。所有全球单播地址(global unicast address)都具有以二进制数001为起始位的全球路由前缀。这些地址由地址注册机构或internet服务提供商(isp)进行分配。全球路由前缀本身是层次化的,地址注册机构负责将较低位(lower-order bit)分配给各个isp,再由isp负责将最低位(lowest-order bit)分配给其客户。

在全球路由前缀之后,ipv6地址包含另一个由若干位组成的长度可变的数字,用来识别网络中的特定子网,称之为子网id(subnet id)。地址中其余的位用来识别特定的网络接口,并被称之为接口id(interface id)。

下面的图表来自于rfc 3513,展示了这三部分的组合方式:

|    n位      |   m位   |    128-n-m位   |

|  全环路由前缀   |   子网id   |   接口id      |

根据rfc 3177的建议,ipv6地址应该以如下方式分配给网站。

家庭网络用户应该分配一个/48的前缀。

小型和大型企业应该分配一个/48的前缀。

超大型用户应该分配一个/47或更短的前缀。

上一篇: 测试
下一篇: Hadoop

继续阅读