有人可以解释一下IPv6唯一本地寻址和链路本地寻址之间的区别吗?我知道 Link-Local 用于网络内,但唯一本地寻址不是与此类似吗?
IPv6 ULA 与本地链路
IPv6 链路本地地址是必需的地址,它们不能被路由。它们仅限于单个链接,并且每个链接都具有相同的链接本地网络。链路本地地址范围是fe80::/10
。来自RFC 4291,IP 版本 6 寻址架构:
2.5.6. 链路本地 IPv6 单播地址
链路本地地址用于单个链路。链路本地地址具有以下格式:
| 10 | | bits | 54 bits | 64 bits | +----------+-------------------------+----------------------------+ |1111111010| 0 | interface ID | +----------+-------------------------+----------------------------+
链路本地地址旨在用于在单个链路上寻址,以实现自动地址配置、邻居发现或不存在路由器的情况。
路由器不得将任何带有本地链路源地址或目标地址的数据包转发到其他链路。
可以路由 ULA 地址(公共 Internet 除外)。ULA 寻址有一些规则。ULA 地址范围是fc00::/7
,但地址的前半部分fc00::/8
, 保留给全球权威机构分配。ULA 地址范围的后半部分fd00::/8
可供本地使用,但必须随机选择 40 位全局 ID。来自RFC 4193,唯一本地 IPv6 单播地址:
一、介绍
本文档定义了一种全球唯一的 IPv6 单播地址格式,用于本地通信 [ IPV6 ]。这些地址称为唯一本地 IPv6 单播地址,在本文档中缩写为本地 IPv6 地址。预计它们在全球互联网上是不可路由的。它们可以在更有限的区域(例如站点)内路由。它们也可以在一组有限的站点之间路由。
本地IPv6单播地址具有以下特点:
- 全局唯一前缀(具有很高的唯一性概率)。
- 众所周知的前缀,可以在站点边界轻松过滤。
- 允许站点组合或私有互连,而不会产生任何地址冲突或需要使用这些前缀的接口重新编号。
- 独立于 Internet 服务提供商,可用于站点内部的通信,无需任何永久或间歇性 Internet 连接。
- 如果通过路由或 DNS 意外泄漏到站点之外,则不会与任何其他地址发生冲突。
- 在实践中,应用程序可能会将这些地址视为全局范围的地址。
链接本地地址是链接的本地地址*。进出链路本地地址的数据包不能穿过任何路由器。此外,使用链接本地地址需要知道它与什么接口相关。问题是接口 ID 是一个机器本地概念,不是很稳定。这些限制严重限制了链接本地地址的实用性。
唯一本地地址类似于 IPv4 的 RFC1918 地址。它们可以在一个站点或一组协作站点内路由,但不能在 Internet 上做广告。它们被应用程序视为全局范围地址,没有那个接口 ID BS。
RFC1918 地址的一个问题是需要在两个以前未连接的专用网络之间建立互连时。这两个网络极有可能使用重叠的 RFC1918 空间,因此互连会很困难。ULA 旨在缓解此问题。
ULA 块分为两部分,下半部分 (FC00::/8) 旨在由提供唯一性保证的注册机构分配。然而,这从未真正发生过**,因此这些地址被认为是保留的。
上半部分 (FD00::/8) 被分配给概率上唯一的地址。站点应该从 FD00::/8 中随机选择一个 /48 前缀(建议使用一种算法,但标准中没有强制要求)。这意味着在一组 n 个站点中地址冲突的概率大约为 n 2 /(2*2 40 )。
我的猜测是您的困惑来自家庭/小型企业对网络的看法。在家庭/小型企业网络中,一个专用网络中很少有多个“链接”。另一方面,在较大的组织中,更常见的是具有许多“链接”和这些链接之间的路由的复杂专用网络。
* 链接是一组通过比 IP 更低级别的协议连接的机器。例如单个以太网 VLAN(或没有 VLAN 的单个以太网网络)
** 有人担心私有地址和独立于提供商的全局地址之间的界限模糊。