ping我自己的电脑时出现奇怪的IP地址

TGn*_*nat 6 windows-vista ping

当我 ping 我在家庭网络上使用的计算机时,我得到的响应看起来很奇怪:

Reply from fe80::8150:b519:d5da:8a00%9: time<1ms
Run Code Online (Sandbox Code Playgroud)

然而,我在我的家庭网络上 ping 另一台计算机,我得到了一个正常的 IP 地址。

ipconfig 的结果如下所示:

Link-local IPv6 Address . . . . . : fe80::8150:b519:d5da:8a00%9
IPv4 Address. . . . . . . . . . . : 10.10.10.104
Run Code Online (Sandbox Code Playgroud)

有没有办法让ping结果显示为IPv4?IPv6 结果看起来正常吗?

A D*_*arf 17

当 IPv6 处于活动状态时,ping 和其他一些命令可能默认为 IPv6。要强制 ping 使用 ipv4 添加 -4 作为参数:

ping localhost -4
Run Code Online (Sandbox Code Playgroud)

顺便说一句,您还可以使用 -6 强制 IPv6

ping localhost -6
Run Code Online (Sandbox Code Playgroud)


qua*_*ote 6

由于其他人已经解决了这个问题的“让我回到 IPv4”部分,我将解决另一个问题。我不能说我在野外见过很多 ipv6 地址,所以“看起来很正常”?呃……让我们谷歌一下,好吗?

这是关于“普通”IPv6 地址的一个很好的链接:

IPv6 地址由八个十六进制组组成。每个十六进制组由冒号 (:) 分隔,由一个 16 位十六进制值组成。以下是 IPv6 格式的示例:

xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx
Run Code Online (Sandbox Code Playgroud)

..从IPv6 地址看起来像什么?

冒号分隔 16 位字段。可以在每个字段中省略前导零,如上所示,其中字段 :0003: 写为 :3:。此外,可以在地址中使用一次双冒号 (::) 来替换多个零字段。例如:

fe80:0:0:0:200:f8ff:fe21:67cf
Run Code Online (Sandbox Code Playgroud)

可以写

fe80::200:f8ff:fe21:67cf
Run Code Online (Sandbox Code Playgroud)

所以你的例子是这样的:

fe80::8150:b519:d5da:8a00%9
Run Code Online (Sandbox Code Playgroud)

根据 A Dwarf 的说法,%9 是一个“区域索引”,“一种帮助跨链路本地地址传输数据包的标识符(当主机有多个接口时)”。因此,它识别接收此数据包的接口 (NIC),但实际上不是 IPv6 地址的一部分。

"::" 的意思是:0:, 或:0:0:, 或者更多的零。我们不知道有多少。如果我们丢弃 %9,那么我们将看到:

fe80::8150:b519:d5da:8a00
Run Code Online (Sandbox Code Playgroud)

由于我们知道有 8 组 4 个十六进制数字,而我们只看到上面的 5 组,我们知道“::”需要填充三组。所以实际地址是:

fe80:0000:0000:0000:8150:b519:d5da:8a00
Run Code Online (Sandbox Code Playgroud)