IPv6 范围 ID 的用途是什么?

网络工程 ip 子网 网络 ipv6 IP地址
2021-07-20 22:51:58

在结构体中struct sockaddr_in6,字段sin6_scope_id被声明。

这个会员有什么用?我们如何从 IPv6 地址和前缀长度知道它应该使用的范围?

1个回答

给定 IPv6 链路本地寻址,其中每个接口都具有相同的网络 ( fe80::/10),因此在引用链路本地地址时,必须有某种方法来区分哪个特定网络。这就是范围 ID,也称为区域 ID,以免与多播范围标志混淆。

基本上,范围或区域是主机中链路本地地址的接口。有一些关于此的RFC,例如RFC 6874,在地址文字和统一资源标识符中表示 IPv6 区域标识符,它解释了如何将其用于 URI,包括 Web 浏览器。%字符用于表示文本地址表示末尾的区域:

fe80::1:2:3:4%9

-或者-

fe80::1:2:3:4%eth0

不幸的是,并非所有 Web 浏览器都支持使用链接本地寻址。还有一些安全限制,此时应该只用于链路本地寻址:

为了限制这种风险,实现不能允许使用这种格式,除了明确定义的用法,例如发送到前缀 fe80::/10 下的链接本地地址。在撰写本文时,这是已知的唯一明确定义的用法。

范围或区域 ID 仅在本地有意义:

HTTP 客户端、代理或其他中介必须删除任何附加到传出 URI 的 ZoneID,因为它在发送主机上仅具有本地意义。

范围或区域 ID 的表示方式特定于特定的操作系统。