¿Cuál es la diferencia entre 0.0.0.0, 127.0.0.1 y localhost?

Resuelto Ciel asked hace 10 años • 3 respuestas

Estoy usando Jekylly Vagranten mi mac. Descubrí que Jekyll serverse unirá a 0.0.0.0:4000en lugar de 127.0.0.1:4000. También gem serverse vinculará a esta dirección de forma predeterminada. Todavía puedo visitarlo a través de http://localhost:port. Pero para Jekyll, parece que la configuración predeterminada (por ejemplo, 0.0.0.0:4000) requiere acceso a Internet. No puedo correr Jekyll serversin Internet. ¿Es un pequeño error?

Yo también uso Vagrant. Configuré el reenvío de puertos (8080 => 4000) en Vagrantfile, ya que lo instalo Jekyllen Vagrantuna máquina virtual y lo pruebo en Macintosh. Si uso la configuración predeterminada (0.0.0.0:4000), funciona. Puedo visitarlo desde mi safari con http://localhost:8080. Pero si no hay Internet, no puedo vincularme a 0.0.0.0:4000. En su lugar, suelo jekyll server -H 127.0.0.1vincular el servicio 127.0.0.1:4000, luego no puedo visitarlo a través de http://localhost:8080.

¿Alguien puede explicar la diferencia entre 0.0.0.0, 127.0.0.1 y localhost ? ¿ Y alguien puede explicar por qué la diferencia causará este problema ?

Ciel avatar Dec 26 '13 10:12 Ciel
Aceptado

127.0.0.1Normalmente es la dirección IP asignada a la interfaz "loopback" o solo local. Este es un adaptador de red "falso" que sólo puede comunicarse dentro del mismo host. A menudo se usa cuando desea que una aplicación con capacidad de red solo atienda a clientes en el mismo host. Un proceso que esté escuchando 127.0.0.1conexiones solo recibirá conexiones locales en ese socket.

"localhost" normalmente es el nombre de host de la 127.0.0.1dirección IP. Por lo general, se configura en /etc/hosts(o el equivalente de Windows denominado "hosts", generalmente en C:\Windows\System32\Drivers\etc\hosts). Puedes usarlo como cualquier otro nombre de host; intenta ping localhostver cómo se resuelve en 127.0.0.1.

0.0.0.0tiene un par de significados diferentes, pero en este contexto, cuando a un servidor se le dice que escuche, 0.0.0.0eso significa "escuchar en todas las interfaces de red disponibles". El adaptador de bucle invertido con dirección IP 127.0.0.1desde la perspectiva del proceso del servidor se parece a cualquier otro adaptador de red en la máquina, por lo que un servidor al que se le dice que escuche 0.0.0.0también aceptará conexiones en esa interfaz.

Con suerte, eso responde al lado de propiedad intelectual de su pregunta. No estoy familiarizado con Jekyll o Vagrant, pero supongo que el reenvío de puertos 8080 => 4000está vinculado de alguna manera a un adaptador de red en particular, por lo que no está en la ruta cuando se conecta localmente a127.0.0.1

Captain Pedantic avatar Dec 26 '2013 03:12 Captain Pedantic

En la versión actual de Jekyll, el valor predeterminado es http://127.0.0.1:4000/ .
Esto es bueno si está conectado a una red pero no quiere que nadie más acceda a su aplicación.

Sin embargo, puede suceder que quieras ver cómo se ejecuta tu aplicación en un móvil o desde algún otro portátil/ordenador.

En ese caso, puedes usar

jekyll serve --host 0.0.0.0

Esto vincula su aplicación al host y el siguiente uso lo sigue para conectarse desde algún otro host.

http://host's IP adress/4000 
Sanyam Jain avatar Nov 12 '2015 07:11 Sanyam Jain

Explicaré la diferencia entre 127.0.0.1 y 0.0.0.0 con un ejemplo:

Imagine que ejecuta cualquier servidor web (por ejemplo, Nginx) en una máquina remota para que cualquiera en Internet pueda acceder a él.

Si su servidor web Nginx escucha 127.0.0.1:80, nadie podrá acceder a él excepto usted que haya iniciado sesión en este servidor.

En caso de que el servidor web escuche 0.0.0.0:80, cualquier persona en Internet podrá conectarse a su servidor escribiendo en el navegador la dirección IP de su servidor.

Tenga en cuenta que en lugar del puerto 80 podría haber cualquier puerto que se escuche. Tomé 80 para este ejemplo porque es un puerto predeterminado para servidores web y el navegador no obliga al usuario a escribirlo después de ingresar la dirección IP.

sprutex avatar Jun 08 '2022 07:06 sprutex