1.2.3 IPv6 网络前缀
最后,你必须理解网络前缀的概念。网络前缀是指一些固定的比特位和一些未被定义的比特位。我们可以使用网络前缀创建新的子前缀,或者为主机分配完整的 IPv6 地址。
我们看一些例子:
1)网络前缀2001:db8:1::/48
(2001:0db8:0001:0000:0000:0000:0000:0000
的压缩形式)表示一组地址的前 48 位是相同的(2001:0db8:0001
),后 80 位可以由我们自己定义。例如,我们可以获得一个更小的前缀:2001:db8:1:a::/64
和2001:db8:1:b::/64
。
2)对于上面定义的更小的前缀2001:db8:1:b::/64
,其前 64 位是固定的,后 64 位可以由我们自己分配。例如,我们可以为一个主机分配 IPv6 接口2001:db8:1:b:1:2:3:4
。
第 2)个例子给我们引入了 IPv6 的基本概念:局域网(Local Area Network,LAN)中经常使用前缀 *A/64。最右边的 64 位被叫做接口标识符(interface identifier,IID),因为它在一个由前缀 /64 所定义的本地网络中唯一地标识了一个主机的接口。下图描述了这个情形:
理解了 IPv6 地址的基本概念后,我们将对你今后会碰到的两种地址(保留地址和单播地址)进行更详细地讨论。
- 未指明的地址,当没有有效地址的时候,用于占位符:
0:0:0:0:0:0:0:0 (::/128)
。 - 回路地址,一个节点发送 IPv6 地址包到它自身:
0:0:0:0:0:0:0:1 (::1/128)
- 文件前缀:
2001:db8::/32
。这个前缀被保留用于在例子和文档中使用。你已经在本章中看到过这个前缀了。
在文档 [RFC6890] 中有介绍,互联网地址编码分配机构 IANA 负责维护注册具有特殊目的的 IPv6 地址。
下面是一些其他类型的单播地址:
- 链路本地地址:连接到网络的 IPv6 接口总是存在一个链路本地地址。链路本地地址由前缀 FE80::/10 开始,且可以用于与该本地网络中其它主机通信,也就是说,所有连接到同一个交换机的主机可以使用链路本地地址进行相互通信。链路本地地址不能与其他网络中的主机通信,也就是说不能穿过路由器发送、接收报文。
- 唯一本地地址(ULA)[RFC4193]:所有的 ULA 地址都由前缀 FC00::/7 开始(在实际中意味着你可以看到
FC00::/8
或FD00::/8
)。ULA 用于本地通信,且通常用于在单一点。ULA 一般不用于在全球因特网中进行路由选择,而仅仅用于一个更受限的环境中。 - 全球单播地址:等价于与 IPv4 的公共地址。全球单播地址在整个因特网中是唯一的,可以用于从一个站点发送数据包到因特网中的任意目的地。