本节书摘来自异步社区《IPv6精髓(第2版)》一书中的第3章,第3.4节,作者: 【美】Silvia Hagen 更多章节内容可以访问云栖社区“异步社区”公众号查看。

3.4 前缀记法

前缀记法定义在RFC 4291中。全局路由前缀是IP地址中用来标识子网或特定地址类型的高阶比特(如表3-2所示)。在早期RFC中也被称为格式前缀(format prefix)。前缀记法与采取CIDR记法(通常用来对IPv4地址进行子网划分)的IPv4地址表达形式非常相似。该记法就是在地址后附加前缀长度,在斜线后面写上比特数,即地址格式如下:

IPv6地址/前缀长度

前缀长度指定了该地址最左侧的多少个比特表示前缀,这是子网掩码(subnet mask)的另一种表达形式。请记住,子网掩码指定了IPv4地址中属于网络ID的比特数。前缀用来标识接口所属的子网并被路由器用来进行转发操作。下面的例子解释了前缀的解析方式。以IPv6前缀2E78:DA53:1200::/40为例,为了理解该地址,下面将该地址的十六进制形式转化为二进制形式(如表3-1所示)。


ebde1416a750527619178a6389f4dfaf687cc112

压缩记法(compressed notation)(以双冒号替代连续的0)也适用于前缀的表达形式。但是在应用中一定要小心细致,因为地址中可能会存在两个或多个连续的全0段,此时只能压缩其中的一个全0段。

以前面讨论过的地址为例,考虑以下前缀记法。IPv6地址是2001:DB8:0000:0056: 0000:ABCD:EF12:1234/64,但是现在仅对该地址的前缀感兴趣,下面来分析压缩后的结果是否正确:

2001:DB8::56/64

为了验证该记法,下面来扩展该地址。遵循前面所说的规则,可以得到地址2001:DB8:0000:0000:0000:0000:0000:0056,64比特前缀为2001:DB8:0000:0000。可见地址压缩后出现了错误,与原始地址和原始前缀完全不相同。为了保证地址解析的正确性,必须将该地址表示为:

2001:DB8:0:56::/64
Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐