也许这是一个愚蠢的问题,但有时我看到 IPv6::
表示本地主机,有时我看到::1
。有时,使用其中一个或另一个似乎是某些东西正常工作和某些东西不正常工作之间的区别。
::
和之间有什么区别::1
?如果一台机器有多个网络接口,是否会出现任何差异?
答案1
::1
是真正的“本地主机”或“环回”地址,相当于127.0.0.1
IPv4 中的地址。
::
是“未指定”或“空”地址,相当于0.0.0.0
IPv4 中的地址。其主要目的是指全部将套接字绑定到本地地址时可能的本地地址 - 这样做是对面的使用环回地址。
“未指定”地址并不意味着“本地主机”——据我所知,连接到未指定的地址不是一个有效的操作,无论是对于[::]
还是0.0.0.0
。(但是,有些操作系统仍然接受它 - 例如,在 Linux 源代码中,有一种特殊情况,它将与 0.0.0.0 的连接处理为与 127.0.0.1 的连接,并带有注释“为了与 BSD 兼容”,并且它对 [::] 也有类似的处理,只是为了与 IPv4 保持一致。)