微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

0.0.0.0、127.0.0.1 和 localhost 有什么区别?

如何解决0.0.0.0、127.0.0.1 和 localhost 有什么区别?

127.0.0.1通常是分配给“环回”或仅限本地接口的 IP 地址。这是一个“假”网络适配器,只能在同一主机内通信。当您希望支持网络的应用程序仅为同一主机上的客户端提供服务时,通常会使用它。正在侦听127.0.0.1连接的进程将只接收该套接字上的本地连接。

“localhost”通常是127.0.0.1IP 地址的主机名。它通常设置在/etc/hosts(或 Windows 等效名称“hosts”下某处%WINDIR%)。您可以像使用任何其他主机名一样使用它 - 尝试“ping localhost”以查看它如何解析为127.0.0.1.

0.0.0.0有几个不同的含义,但在这种情况下,当服务器被告知要监听时,0.0.0.0这意味着“监听每个可用的网络接口”。从服务器进程的角度来看,带有 IP 地址的环回适配器127.0.0.1看起来就像机器上的任何其他网络适配器一样,因此被告知要监听的服务器0.0.0.0也将接受该接口上的连接。

希望这能回答您问题的 IP 方面。我不熟悉 Jekyll 或 Vagrant,但我猜你的端口转发8080 => 4000以某种方式绑定到特定的网络适配器,所以当你本地连接到时它不在路径中127.0.0.1

解决方法

我在我的 Mac 上使用Jekylland 。Vagrant我发现Jekyll server它将绑定到0.0.0.0:4000而不是127.0.0.1:4000. 默认gem server情况下也会绑定到这个地址。我仍然可以通过http://localhost:port. 但是对于Jekyll似乎默认设置(例如
0.0.0.0:4000)需要 Internet 访问。Jekyll server没有互联网我无法运行。
这是一个小错误吗?

我也用Vagrant. 我在 Vagrantfile 中设置了端口转发(8080 =>
4000),因为我安装JekyllVagrant虚拟机中并在 Macintosh
下测试它。如果我使用默认设置(0.0.0.0:4000),它可以工作。我可以从我的 safari
访问它http://localhost:8080。但如果没有互联网,我无法绑定到 0.0.0.0:4000。我使用jekyll server -H 127.0.0.1绑定服务来127.0.0.1:4000代替,然后我无法通过http://localhost:8080.

谁能 解释 0.0.0.0、127.0.0.1 和 localhost 之间的区别 ?谁能 解释为什么差异会导致这个问题

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。