为什么 ::1 不匹配 127.0.0.1?

Why doesn't ::1 match 127.0.0.1?

IPv6格式的环回IP地址为: 0000:0000: 0000:0000: 0000:0000: 0000:0001

缩短为: 0:0: 0:0: 0:0: 0:1

然后缩短为(保留最后 2 个字,即 4 个字节,以匹配 IPv4): :0:1(但我还是不明白为什么1前面是双冒号而不是单冒号,可能是暗示这里有4个字节)

并简化为: ::1

将::1展开为IPv4格式,即: 0.0.0.1

但这和127.0.0.1不一样,127这个数字在哪里?

首先,:0:1 不是有效的 IPv6 地址。我会解释原因:

IPv6 地址是 128 位地址,写成八个十六进制部分,用冒号分隔。因为这写起来可能非常乏味,而且因为许多 IPv6 地址(如 0:0:0:0:0:0:0:1)包含许多零部分,所以允许用两个冒号替换一个零序列。完整地址仍然相同。 ::0:0:0:etc.

更容易写

IPv4 和 IPv6 是两种不同的协议。您不能将 IPv4 环回地址 127.0.0.1 与 IPv6 环回地址 ::1 进行比较。它们完全无关。他们两个恰好以相同的数字结尾。