写点什么

IPv6 地址分类

  • 2023-04-16
    北京
  • 本文字数:2418 字

    阅读完需:约 8 分钟

IPv6地址分类

相较于 IPv4 地址的分类情况,IPv6 地址有以下 3 个重要变化。IPv6 地址不再有网络地址和广播地址,广播被组播替代,减少了广播风暴对网络性能的影响。不再有 A、B、C、D、E 类地址,而是固定特定的地址段用于特殊的网络或环境。一个接口一般会有多个 IPv6 地址,每个地址有不同的用途。


根据 RFC 4291 的定义,IPv6 地址分为 3 类:单播、任播和多播。IPv6 中还有特殊的未指定地址和环回地址。

1、单播地址

单播地址用于标识一定范围内唯一的网络接口,发送给单播地址的数据包将最终发送到由该地址标识的网络接口。单播地址具有两个特点:在一定范围内唯一存在;一个地址只能配置在一个接口上。


一个单播地址包括 N 位网络标识符和 128−N 位接口标识符,且通常情况下前缀长度(即网络标识符位数)和接口标识符都是 64 位。单播地址又可继续分为 4 类:可聚合全球单播地址、链路本地单播地址、站点本地单播地址、内嵌 IPv4 地址的兼容地址。

1)可聚合全球单播地址

可聚合全球单播地址即可用在全球 IPv6 互联网中且可聚合、可路由的地址,它类似于 IPv4 的公网地址,在 IPv6 网络中可相互直接通信。当然,这样的地址也是需要向专门的地址分配机构——互联网数字分配机构(Internet Assigned Numbers Authority,IANA)去申请才能获得。虽然 IPv6 的地址很多,但目前可聚合的全球单播地址仅限于前 3 位是“001”的地址,即 2000::/3,其范围为 2000::~3FFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF。尽管可聚合全球单播地址数量众多,但 IANA 将来仍有可能会把其他未分配的地址段重新定义为全球单播地址。

2)链路本地单播地址

链路本地单播地址是以 fe80::/64 打头的地址,它在 IPv6 通信中是受限制的,其作用范围仅限于连接到同一本地链路的节点之间,即以路由器为界的单一链路范围内,路由器网关并不会将来自本地链路的数据转发到别的出口。也可以简单地认为链路本地地址只用来在不跨网段的局域网内通信。链路本地单播地址在局域网通信中有着重要的作用,自动配置机制、邻居发现机制等都会用到链路本地单播地址。通常情况下,链路本地单播地址都是自动配置的,即只要接口启用了 IPv6 协议,就会自动生成 fe80::/64+64 位接口 ID(可为 EUI-64 格式,也可遵循私密性扩展,对接口 ID 进行随机化处理)形式的 IPv6 地址。该地址也可进行手动修改。

3)站点本地单播地址

站点本地单播地址是 IPv6 中的私网地址,它类似于 RFC 1918 中定义的不可路由到互联网上的私网 IPv4 地址。早期的站点本地单播地址的前缀是 FEC0::/10,其后的 54 位用于子网 ID,最后 64 位用于主机 ID。后来该地址被 IANA 收回,并重新采用 RFC 4193 中定义的唯一本地地址段 FC00::/7 来替代站点本地单播地址。按照子网划分的原则,FC00::/7 可以划分为 FC00::/8 和 FD00::/8,其中 FC00::/8 为保留地址段,FD00::/8 为站点本地范围内的单播地址。换言之,站点本地单播地址已由早期的 FEC0::/10 更换成 FD00::/8 了。

4)内嵌 IPv4 的兼容地址

在 IPv6 过渡技术中,经常会使用内嵌了 IPv4 地址的兼容地址。兼容地址一般用于在 IPv4 网络中建立 IPv6 自动隧道,从而将各个 IPv6 孤岛连接起来。IPv6 过渡技术的工作原理是部署双协议栈节点(路由器网关或主机本身),在 IPv6 侧使用兼容地址,在 IPv4 侧提取兼容地址中的 IPv4 地址信息,构建 IPv4 报头,然后对 IPv6 进行封装,从而在 IPv4 网络中通过这种自动隧道实现 IPv6 孤岛的互联。常见的 IPv6 兼容地址有::FFFF/96+32 位 IPv4 地址;6to4 使用的兼容地址为 2002(16 位)+IPv4 地址(32 位)+子网 ID(16 位)+接口 ID(64 位);ISATAP 隧道使用的兼容地址为固定前缀(64 位)+0000:5EFE(32 位)+IPv4 地址(32 位)。

2、任播地址

任播地址在地址格式上与单播地址别无二致,但用途不同。单播地址用于一个源地址到一个目的地址的通信,即一个单播地址只能用于一个接口,而任播地址是同一个地址用在网络中多个节点、多个接口之上。换句话说,任播地址用于表示一组不同节点的接口。


若某个数据包的目的地址是任播地址,该数据包将被发送到路由意义上最近的一个网络接口。为了与单播地址区分,任播地址一般约定 64 位接口 ID 全是 0。这有点类似于 IPv4 的主机位为 0 的网络地址,只不过 IPv4 主机位全是 0 的网络地址和主机位全是 1 的广播地址是不能分配给设备使用的,而 IPv6 中主机位全是 0 的任播地址和主机位全是 1 的地址都能供设备使用。


注意,在使用任播地址时一定要谨慎,一定要事先约定哪些地址作为任播地址,并作为特殊用途,不然网络中就会出现地址冲突。比如,移动 IPv6 就需要任播地址,使客户主机不管在什么位置,都能就近访问由任播地址标识的接入点。

3、组播地址

IPv6 中的组播地址用来标识多个接口,它对应于一组接口的地址,且这些接口通常分属于不同的节点。由源节点发送到组播地址的数据包会被由该地址标识的每个接口所接收。由此可见,组播地址只能用作目的地址。组播地址的前 8 位必须全是 1。


标志位目前只定义了十六进制的 0 和 1,其中 0 经常使用,表示永久;1 较少使用,表示临时。IPv6 不像 IPv4 那样使用 TTL 来限制范围,而是使用组播地址中的范围字段来定义和限制。目前,范围字段定义的十六进制数包括:“1”表示本地接口范围;“2”表示本地链路范围;“3”表示本地子网范围;“4”表示本地管理范围;“5”表示本地站点范围;“8”表示组织机构范围;“E”表示全球范围。其中“2”表示的本地链路范围较为常用。


在 IPv6 中,由于组播替代了广播,所以即便网络中没有组播应用,也常常见到一些组播地址。

4、未指定地址和本地环回地址

未指定地址就是 128 位全是 0 的地址,可以表示为“::/128”,其用途与 IPv4 的全 0 地址一样,可在接口还未自动获取到 IPv6 地址时,用作源地址。环回地址则是除了最后一位是 1 外,其余位全是 0,可以表示为“::1/128”。本地环回地址跟 IPv4 的本地环回地址一样,用于测试网络协议是否正常。发送给本地环回地址的数据包并不会从本机网络接口发送出去,而是由本机自己响应。Windows 等主机默认设有本地环回地址,可以在命令提示符下执行 netsh interface ipv6 show interface 查看环回地址,也可以在主机上自行 ping 本地环回地址。

发布于: 刚刚阅读数: 4
用户头像

InfoQ签约作者 2018-11-30 加入

热爱生活,收藏美好,专注技术,持续成长

评论

发布
暂无评论
IPv6地址分类_ipv6_穿过生命散发芬芳_InfoQ写作社区