这个 IPv6-link-local 地址(由 Windows 报告)是否正确?如果是这样,为什么?

Jer*_*ner 6 windows ipv6 link-local

根据我在网上阅读的内容,通过获取网络接口的 MAC 地址,在其中插入一个 FF:FE 字,或者在一些附加位中进行 OR 运算,等等,就可以生成 IPv6 链路本地地址:例如 MAC 地址 00: 3E:E1:c6:20:c2 对应 IPv6 链路本地地址 fe80::23e:e1ff:fec6:20c2%en0,知道 MAC 地址的程序可以计算 IPv6 地址,反之亦然。

这在我的 Macintosh 上似乎运行良好,但在我同事的 Windows 机器上,我们看到了这一点(来自 ipconfig 的输出):

Connection-specific DNS Suffix  . :
Link-local IPv6 Address . . . . . : fe80::eb:b41:3e4c:fd9e%11
IPv4 Address. . . . . . . . . . . : 192.168.0.3
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . :
Run Code Online (Sandbox Code Playgroud)

在这里看起来网络接口的 MAC 地址(即 0b:41:3e:4c:fd:9e )只有字节“eb”或“或”到它的前面,而不是将 ff:fe 插入到正如我所预料的那样。

谁能解释这是为什么?即,Windows 是否在此处执行与 IPv6 链路本地地址规范相反的操作,还是仅使用了一些我不知道的其他可接受的 MAC->IPv6 约定?或者,当从 MAC 地址生成 fe80 地址时,供应商可能只是被允许做任何他们想做的事?

Ron*_*pin 5

并不是要求从 MAC 地址生成链路本地地址;它从来都不是一个要求。您可以在许多设备上手动分配链路本地地址。

您在 Windows 中看到的是使用隐私扩展和随机寻址。引入了隐私扩展和随机地址生成,而不是分配 SLAAC 接口 ID 的原始方式。这是 Windows 的默认设置,但可以禁用它。

请参阅RFC 4862,IPv6 无状态地址自动配置RFC 4941 ,IPv6 中无状态地址自动配置的隐私扩展