0.0.0.0,127.0.0.1和localhost有什么区别?我使用Jekyll和Vagrant我的Mac上。我发现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),因为我Jekyll在Vagrant虚拟机中安装并在Macintosh下测试它。如果我使用默认设置(0.0.0.0:4000),它可以工作。我可以从我的野生动物园参观它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之间的区别?任何人都可以解释为什么差异会导致这个问题?
2 回答
临摹微笑
TA贡献1982条经验 获得超2个赞
127.0.0.1
通常是分配给“环回”或仅本地接口的IP地址。这是一个“假的”网络适配器,只能在同一主机内通信。当您希望具有网络功能的应用程序仅为同一主机上的客户端提供服务时,通常会使用它。正在侦听127.0.0.1
连接的进程将仅接收该套接字上的本地连接。
“localhost”通常是127.0.0.1
IP地址的主机名。它通常设置在/etc/hosts
(或Windows下等同于名称为“hosts”的地方%WINDIR%
)。您可以像使用任何其他主机名一样使用它 - 尝试“ping localhost”以查看它如何解析127.0.0.1
。
0.0.0.0
有一些不同的含义,但在这种情况下,当服务器被告知要监听时0.0.0.0
,意味着“监听每个可用的网络接口”。127.0.0.1
从服务器进程的角度看,具有IP地址的环回适配器看起来就像机器上的任何其他网络适配器一样,因此被告知要监听的服务器0.0.0.0
也将接受该接口上的连接。
希望能回答你问题的知识产权方面。我不熟悉Jekyll或Vagrant,但我猜你的端口转发8080 => 4000
以某种方式绑定到特定的网络适配器,所以它在本地连接时不在路径中127.0.0.1
添加回答
举报
0/150
提交
取消