1.2.2 IPv6 编址
IPv6 使用 128 位进行地址编址,这样做将带来以下好处:
- 提供更多的地址,可以满足现在和将来的需求
- 简化地址自动配置机制
- 简化是地址管理和授权机制
- 更多的层级结构空间和更多的路由聚合空间
- 能够做端对端的安全协议
IPv6 地址可以归纳为下面几类(也在 IPv4 中存在):
- 单播(一对一):数据包从源发送到一个目的地。这是最常见的一种形式。我们今后涉及得最多的就是这种地址。
- 组播(一对多):数据包从源发送多多个目的地。通过多播路由,使报文能够在某些地方被替换(注:不明白这句话啥意思)。
- 广播(一对最近的):数据包从源发送到一组中的最近目的地。
- 被保留的:这些地被用作特殊用途。
在正式认识 IPv6 地址之前,我们先理解其符号规则。你必须对这些概念有清楚的认识,因为这可能是你用 IPv6 表示地址时面临的第一个问题。
IPv6地址的符号规则:
- 由 8 组组成,每组 16 位,组与组之间由":"隔开
- 每 4 位由一个十六进制符号表示
- 大小写不敏感
- 网络前缀(地址的组)的格式是:前缀/前缀长度,其中前缀长度表明一组地址中前面有多少个连续比特相同
- 每组中最左边的 0 可以被省略
- 一个或者多个全零组可以被"::"代替。这只能做一次。
前三条规则告诉你最基本的 IPv6 地址符号组成规则。他们由从 0 到 F 的十六进制符号表示。IPv6 的地址由 8 组组成,每组有 4 个十六进制符号,组与组之间由冒号":"分隔。最后两条规则是用于地址的符号压缩,我们将在下面介绍如何进行地址压缩的。
先看一些例子:
1)我们写出所有的地址位,比如2001:0db8:4004:0010:0000:0000:6543:0ffd
2)我们用方括号将地址位括起来,比如[2001:0db8:4004:0010:0000:0000:6543:0ffd]
3)我们使用第四条规则,省略每个组最左边的 0,比如2001:db8:4004:10:0:0:6543:ffd
4)我们使用第五条规则,将一个或多个连续的零组用 "::" 进行压缩,比如2001:db8:4004:10::6543:ffd
我们的注意力应该放在 IPv6 地址的压缩和解压缩过程,这个过程应该是可逆的。犯错是很常见的,比如地址2001:db8:A:0:0:12:0:80
可能会被多次使用 "::" 压缩。请看下面这两种表示方法:
a) 2001:db8:A::12:0:80
b) 2001:db8:A:0:0:12::80
地址2001:db8:A::12::80
是错误的,因为它没有遵循最后一条压缩规则。通过这个被严重过度压缩的地址,我们不能确定如何去扩展它。我们不知道应该扩展为2001:db8:A:0:12:0:0:80
,还是扩展为2001:db8:A:0:0:12:0:80
。