'localhost'和'127.0.0.1'之间有什么区别?

时间:2013-05-05 09:05:15

标签: localhost

有一个nginx服务器侦听8080端口,telnet使用localhost和127.0.0.1。一个连接,一个连接失败否则。

[test@localhost sbin]$ telnet localhost 8080          
Trying ::1...
telnet: connect to address ::1: Connection refused

[test@localhost sbin]$ telnet 127.0.0.1 8080
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.

' localhost'之间的区别是什么?和' 127.0.0.1'?为什么localhost连接失败?谢谢!

4 个答案:

答案 0 :(得分:8)

127.0.0.1是本地计算机的IPv4地址。

localhost是一个名称,可以查找本地计算机的地址。在您的情况下,它首先找到IPv6地址(:: 1)并尝试连接到该地址。如果您的服务仅侦听IPv4,则无法连接。

答案 1 :(得分:0)

似乎localhost绑定到ipv6并且你没有监听:: 1 ipv6 IP。

答案 2 :(得分:0)

Localhost是ip地址127.0.0.1的命名地址 不可能记住ip地址,这就是为什么计算机使用dns意味着域名系统(DNS)。它将命名转换为ip地址以及反向。 通常用于解释域名系统的类比是,它通过将人性化的计算机主机名转换为IP地址,作为互联网的电话簿。例如,域名www.example.com转换为地址93.184.216.119(IPv4)和2606:2800:220:6d:26bf:1447:1097:aa7(IPv6)。

答案 3 :(得分:0)

主机名可以同时解析为IPv4和IPv6地址。 "localhost" resolves to IPv4 (127.0.0.1) and IPv6 [::1].

在此用例中,本地主机找到IPv6地址(from Trying ::1...),由于您的服务将其列出到IPv4,导致连接失败

我认为Windows首选在可能的地方使用IPv6,这就是为什么localhost默认为IPv6分辨率的原因。如果您关闭了IPv6,它将转到IPv4地址。

除此之外,原因是许多ISP都不向客户提供IPv6地址(许多路由器/调制解调器无法处理它们),并且如果您想要访问IPv6地址,则需要链中的所有设备都使用IPv6使用IPv6的服务器。