IPv6 地址类型
十六进制数
在介绍 IPv6 地址格式之前,我们先了解一下十六进制数字系统。十六进制是使用基数为 16 的位置数字系统。为了使得十六进制的值阅读方便,该系统使用 0-9 符号表示从 0 到 9 的值,使用 A-F 表示从 10 到 15 的值。十六进制中的每个数字都可以表示 0 到 15 之间的值。
下表是十进制-二进制-十六进制数之间的换算表
十进制 | 二进制 | 十六进制 |
---|---|---|
0 | 0000 | 0 |
1 | 0001 | 1 |
2 | 0010 | 2 |
3 | 0011 | 3 |
4 | 0100 | 4 |
5 | 0101 | 5 |
6 | 0110 | 6 |
7 | 0111 | 7 |
8 | 1000 | 8 |
9 | 1001 | 9 |
10 | 1010 | A |
11 | 1011 | B |
12 | 1100 | C |
13 | 1101 | D |
14 | 1110 | E |
15 | 1111 | F |
地址结构
IPv6 地址由 128 位组成,分为八个 16 位块。然后将每个块转换为由冒号分隔的 4 位十六进制数。
例如,下面给出的是一个以二进制格式表示的 128 位 IPv6 地址,并分为八个 16 位块:
0010000000000001 0000000000000000 0011001000111000 110111111100001 0000000001100011 0000000000000010101010101010101010
然后将每个块转换为十六进制并用冒号(:
)符号分隔:
2001:0000:3238:DFE1:0063:0000:0000:FEFB
即使转换为十六进制格式后,IPv6 地址仍然很长。IPv6 提供了一些规则来缩短地址。规则如下:
规则 1:丢弃前导零:
像上面地址的第5块, 0063
,前两个0可以省略,如下所示
2001:0000:3238:DFE1:63:0000:0000:FEFB
规则 2:如果两个以上的块包含连续的零,则将它们全部省略并用双冒号 :: 替换,例如(第 6 和第 7 块):
2001:0000:3238:DFE1:63::FEFB
连续的零块只能被 :: 替换一次,所以如果地址中还有零块,它们可以缩小为单个零,例如(第二块):
2001:0:3238:DFE1:63::FEFB
接口标识
IPv6 具有三种不同类型的单播地址方案。地址的后半部分(最后 64 位)始终用于接口 ID。系统的 MAC 地址由 48 位组成,以十六进制表示。MAC 地址被认为是全球唯一分配的。接口 ID 就利用了 MAC 地址的这种唯一性。
主机可以使用 IEEE 的扩展唯一标识符 (EUI-64) 格式自动配置其接口 ID。首先,主机将自己的 MAC 地址分成两部分,每部分都有 24 位。然后 16 位十六进制值 0xFFFE 被夹在 MAC 地址的这两半中,从而产生 EUI-64 接口 ID。
EUI-64 ID 到 IPv6 接口标识符的转换
要将 EUI-64 ID 转换为 IPv6 接口标识符,需对 EUI-64 ID 的最高有效第 7 位进行补码。例如:
全球单播地址
此地址类型等效于 IPv4 的公共地址。IPv6 中的全球单播地址是全球唯一的,并且是可识别和寻址的。
全局路由前缀:最高有效的 48 位被指定为全局路由前缀,分配给特定的自主系统。全局路由前缀的三个最高有效位始终设置为 001。
Link-Local Address
自动配置的 IPv6 地址称为链路本地地址。该地址始终以 FE80 开头。链路本地地址的前 16 位始终设置为 1111 1110 1000 0000 (FE80)。接下来的 48 位设置为 0。如下所示
链路本地地址仅用于链路(广播段)上 IPv6 主机之间的通信。这些地址是不可路由的,因此路由器永远不会将这些地址转发到链路之外。
唯一本地地址
这种类型的 IPv6 地址是全球唯一的,但应该在本地通信中使用。该地址的后半部分包含接口 ID,前半部分分为前缀、L位、全局 ID 和子网 ID。
前缀始终设置为 1111 110。L 位,如果地址是本地分配的,则设置为 1。到目前为止,L 位为 0 的含义尚未定义。因此,唯一本地 IPv6 地址始终以“FD”开头。
IPv6 单播地址的范围:
链路本地地址的范围仅限于段。唯一本地地址在本地是全球性的,但不通过 Internet 路由,因此将其范围限制在组织的边界内。全球单播地址是全球唯一且可识别的。他们是未来 Internet v2 寻址方式的核心。