127.0.0.2 IP地址是什么?


39

我正在hiredis中运行示例,该示例使用“ 127.0.0.2”作为redis服务器IP,并且运行正常。实际上,redis服务器在同一台机器上运行。我知道“ 127.0.0.1”是“ lo”的IP地址,但是“ 127.0.0.2”又如何呢?与“ 127.0.0.1”相同吗?

Answers:


37

是:

IPv4网络标准将整个127.0.0.0/8地址块保留用于回送。这意味着发送到那些16,777,214个地址(127.0.0.1至127.255.255.254)之一的任何数据包都将被送回。IPv6只有一个地址:: 1。

为此,各种Internet工程任务组(IETF)标准都以CIDR标记保留了IPv4地址块127.0.0.0/8,并保留了IPv6地址:: 1。最常用的IPv4地址是127.0.0.1。通常,这些回送地址映射到主机名,本地主机或回送。

或来自RFC本身:

127.0.0.0/8-分配了该块作为Internet主机回送地址。由更高级别的协议发送到该块内任意位置的地址的数据报应在主机内部循环。通常,仅使用127.0.0.1/32进行环回即可实现此功能,但是此块内的任何地址都不得出现在任何网络上的任何地方[RFC1700,第5页]。

为了娱乐,请尝试ping:

$ ping 127.127.127.127
PING 127.127.127.127 (127.127.127.127) 56(84) bytes of data.
64 bytes from 127.127.127.127: icmp_req=1 ttl=64 time=0.110 ms
64 bytes from 127.127.127.127: icmp_req=2 ttl=64 time=0.065 ms
^C
--- 127.127.127.127 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 999ms
rtt min/avg/max/mdev = 0.065/0.087/0.110/0.024 ms

此后Wikipedia页面已更改,现在显示“尽管已将127.0.0.1到127.255.255.254范围内的任何地址都映射到了该地址”,从而使该答案的主旨与Wikipedia直接冲突。
SilverSkin 2012年

6
@SilverSkin您介意解释您的意思吗?答案和现在的维基百科之间的唯一区别是,它们(正确)排除了网络/广播地址127.0.0.0和127.255.255.255。要点仍然相同-127.xxx == 127.0.0.1(除了127.0.0.0和127.255.255.255,在任何/ 8网络上都应如此)。
icyrock.com 2012年

1
那么,绑定到127.0.0.1与绑定到127.0.0.124之间没有区别吗?那么,如果hires只是相同的地址,为什么还要打扰127.0.0.2?如果确实向127.0.0.0发送消息,还会发生什么?
CMCDragonkai 2014年

7
需要说明的是,在OS X中它并不相同,只有127.0.0.1路由到环回。看这里
李文冰2014年

6
@CMCDragonkai 127.0.0.1和127.0.0.124可能在同一接口上,但它们不是相同的地址。如果有人想使用在公共端口上设置服务而不干扰可能正在监听127.0.0.1的其他服务的其他服务,则可能会使用像127.0.0.2这样的不常见ip
Keith Reynolds

6
  • “所有127.x.x.x地址都仅限于本地计算机吗?”是
  • “是否所有127.x.x.x地址都绑定到lo接口”是
  • 127.x.x.x地址是否通过网络路由?”否

127.0.0.0/8-分配了该块作为Internet主机回送地址。由高层协议发送到
该块内任意位置的地址的数据报将在主机内部循环。这
是只使用127.0.0.1/32回送通常实现的。如
[RFC1122]第3.2.1.3节中所述,整个127.0.0.0/8块内的地址不会合法出现在任何地方的任何网络上。— RFC5735

  • “是127.0.0.2一样127.0.0.1?” NO

虽然127.0.0.1127.255.255.254是绑定到接口的所有本地地址lo。它们不一样。您可以使用每个地址将不同的服务绑定到同一端口。例如,端口80上有1600万个Web服务器,只能从本地计算机访问(如果没有用完内存或其他资源,请首先访问)

我刚刚设置了绑定到的docker服务127.0.0.2:80。然后,我为添加了别名/etc/hosts。现在我可以通过http://myserver,但不能通过http://127.0.0.1或连接到它http://localhost。但是,仅此机器可用。实际上,仅在lo接口上。

然后,我设置了另一个要绑定的docker服务127.0.0.3:80,并在localhost:80和上分别设置了python服务和127.0.0.4:80


这可能不适用于所有操作系统。我正在使用Debian(9)Gnu / Linux,Linux内核4.9.0-3-amd64。某些操作系统可能会将所有地址127.0.0.1→ 视为127.255.255.254相同。有些可能只适用于127.0.0.1

也可以看看



我花了大约一个小时的时间进行研究,但终于了解了您要传达的内容。我已经在接受的答案中更新了Wikipedia文章中的报价。由于引用的陈述多年来发生了变化,因此我引用了另一条陈述,以恢复答案中包含的原始信息。
拉姆猎犬,

1

尚不全面的一般答案(已经有一个答案)。我的答案是一个127.0.0.2用来解决问题的示例。

提取:

当与服务器的连接被拒绝时,OP尝试测试某些软件。这是通过临时iptables规则在服务器上完成的,该规则拒绝来自客户端IP的所有流量。客户端立即可以“看到”连接被拒绝。

当此人将服务器软件与客户端移至同一台计算机并尝试使用环回接口时,就会出现问题。该规则被设置为阻止通信,127.0.0.1但是拒绝连接的信息也经历了相同的规则,并且从未到达挂起的客户端软件(大概到超时为止)。

该解决方案是使用127.0.0.2的服务器地址,并设置一个规则,废品连接它。有关拒绝的信息已到达127.0.0.1并能够传递给客户端软件。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.