IP地址'::1'是啥?

Posted

技术标签:

【中文标题】IP地址\'::1\'是啥?【英文标题】:What is IP address '::1'?IP地址'::1'是什么? 【发布时间】:2011-06-04 10:17:20 【问题描述】:

我在没有网络连接的本地机器上玩套接字。见下文:

IPAddress address = IPAddress.Any; // doesn't work
IPAddress address = IPAddress.Parse("::1"); // works

那么::1 IP 地址到底是什么?它是默认的可用 IP 地址还是环回地址?在具有专用 IP 地址和网络连接的机器上,上述代码(工作行)会发生什么?

编辑:

确切的代码用于将特定的 IP 地址绑定到套接字。这里是:

ServicePoint sp = ServicePointManager.FindServicePoint(uri);
sp.BindIPEndPointDelegate = new BindIPEndPoint(Bind);
// here's the bind delegate:
private IPEndPoint Bind(ServicePoint sp, IPEndPoint ep, int retryCount)

   return new IPEndPoint(IPAddress.Parse("::1"), 0);

【问题讨论】:

IPAddress.Any::0,您应该使用IPAddress.Loopback 进行本地(环回)连接。 我认为这应该在 SuperUser.com 上发布 我假设IPAddress.Pars 的部分实际上是IPAddress.Parse,对吗? Reverse question. 【参考方案1】:

::1 是 IPv6 中的环回地址。将其视为127.0.0.1 的 IPv6 版本。

见http://en.wikipedia.org/wiki/Localhost

【讨论】:

在上面的例子中 IPAddress.Parse("127.0.0.1") 在我的机器上不起作用。 @Xaqron - 这听起来更像是一个超级用户的问题,因为这可能意味着您的 IPv4 TCP/IP 堆栈出现了问题。 Xaqron,也许防火墙阻止了 v4 而不是 v6 流量? 我使用Windows Server 2008 Enterprise Edition 64-bit,没有安装第三方防火墙。我想知道为什么当::1 可用时我不能将127.0.0.1 绑定到我的套接字。 @Xaqron,您能否向我们展示您尝试使用的代码?您说“有效”和“无效”,但这对我们没有帮助。【参考方案2】:

只是为了添加更多信息,在 IPv6 中,环回地址表示为 127 个零,后跟一个 1,即(0000...127 次..1)。 它的表示应该是这样的 -> 0000:0000:0000:0000:0000:0000:0000:0001 但我们对此有一些简短的表示。如果单个块中全是零,则可以将其替换为单个 0。因此它变为 -> 0:0:0:0:0:0:0:0001。 再次,我们可以看到我们有零的运行,它们可以被消除,我们得到 -> ::0001 -> ::1 .

【讨论】:

(要清楚,这里的“127 个零”是二进制的,不是十六进制的)【参考方案3】:

简单的答案是: ::1是IPV6环回地址0:0:0:0:0:0:0:1的压缩格式。相当于IPV4地址127.0. 0.1

【讨论】:

以上是关于IP地址'::1'是啥?的主要内容,如果未能解决你的问题,请参考以下文章

标准的ip地址分为哪几类,他们的用途是啥?

ip地址0段是啥意思啊

ip地址0段是啥意思啊

ip地址全部未分配是啥意思

TP-Link路由器查看IP地址的方法是啥

IP地址的作用是啥?IPV4地址可以分为几类?