相关疑难解决方法(0)

为什么 IPv6 地址中有一个百分号“%”?

我正在使用这些.NET Framework类来获取我机器的 IP 地址。

Dns.GetHostAddresses(Dns.GetHostName())
Run Code Online (Sandbox Code Playgroud)

我有一个 VirtualBox 适配器,它同时具有 IPv4 和 IPv6 地址。使用 .NET 代码,我将 IPv6 地址作为fe80::71a3:2b00:ddd3:753f%16

注意到末尾的 %16 了吗?

但是,如果我使用相同的查询WMI,我得到的地址为'fe80::71a3:2b00:ddd3:753f'

那么,%16 有什么特殊意义吗?

编辑:

我只是对此有更多的观察。它们与斯蒂芬詹宁斯在他的回答中所说的非常吻合。

我安装了 Vmware 以查看它发出的 IPv6 地址。地址是:fe80::3dd0:7f8e:57b7:34d5%19

fe80::b059:65f4:e877:c40%20

显然,% 之后的数字不是某种十六进制表示。我使用 Wmi 检查了网络适配器的所有可用属性,发现这些数字与每个网络适配器的 InterfaceIndex 属性完全相同。根据MSDN,它唯一标识每个网络适配器,这个属性是在 Vista 中引入的。

仍然让我感到困惑的是,为什么 IPAddress 类允许您以该格式创建 IP 地址,除非它有效。斯蒂芬提供了答案。数字是范围 ID。IPAddress 有一个接受地址和范围 ID 的构造函数。

哦,所有这三个网络适配器都是本地链接。通过 ipconfig 确认

凉爽的。那很有趣!!

ipv6

149
推荐指数
3
解决办法
11万
查看次数

标签 统计

ipv6 ×1