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'是啥?的主要内容,如果未能解决你的问题,请参考以下文章