0.0.0.0,127.0.0.1和localhost有什么区别?

 sdfaghasfdg4 发布于 2023-02-08 10:22

我使用JekyllVagrant我的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),因为我JekyllVagrant虚拟机中安装并在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 个回答
  • 在当前版本的Jekyll中,默认为http://127.0.0.1:4000/.
    如果您连接到网络但不希望其他任何人访问您的应用程序,这很好.

    但是,您可能希望了解应用程序在移动设备或其他笔记本电脑/计算机上的运行方式.

    在这种情况下,您可以使用

    jekyll serve --host 0.0.0.0
    

    这会将您的应用程序绑定到主机并在下一次使用后从其他主机连接到它

    http://host's IP adress/4000 
    

    2023-02-08 10:24 回答
  • 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,意味着"监听每个可用的网络接口".127.0.0.1从服务器进程的角度看,具有IP地址的环回适配器看起来就像机器上的任何其他网络适配器一样,因此被告知要监听的服务器0.0.0.0也将接受该接口上的连接.

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

    2023-02-08 10:27 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有