“localhost”和“127.0.0.1”有什么区别?

7

有一个nginx服务器监听8080端口,并通过本地主机和127.0.0.1进行telnet。如果连接成功,则一个连接成功,否则一个连接失败。

[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个回答

8

127.0.0.1 是本地机器的 IPv4 地址。

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


应该使用[]-->[::1]来包含::1。 - HannanKan

0

看起来 localhost 绑定了 ipv6,而你没有监听 ::1 ipv6 IP。


0

主机名可以解析为IPv4和IPv6地址。"localhost"解析为IPv4(127.0.0.1)和IPv6 [::1]。

对于这种用例,localhost找到IPv6地址(从尝试::1...),这导致连接失败,因为您的服务正在侦听IPv4。

我认为Windows的首选项是尽可能使用IPv6,这就是为什么localhost默认使用IPv6分辨率的原因。如果关闭IPv6,则会转到IPv4地址。

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


0

Localhost是IP地址127.0.0.1的命名地址。由于无法记住IP地址,因此计算机使用域名系统(DNS)来将命名转换为IP地址以及反向转换。

用于解释域名系统的常用类比是,它在互联网上充当电话簿,将人类友好的计算机主机名转换为IP地址。例如,域名www.example.com将被转换为地址93.184.216.119(IPv4)和2606:2800:220:6d:26bf:1447:1097:aa7(IPv6)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接