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


Entiendo que 127.0.0.1 apunta a localhost, y también lo hace 0.0.0.0 (corrígeme si estoy equivocado). Entonces, ¿cuál es la diferencia entre 127.0.0.1 y 0.0.0.0?


162


origen


Usted puede estar interesado en esta discusión del rastreador de errores de Chrome acerca de cómo manejar 0.0.0.0 en la entrada de dirección. - user7301
En la mayoría de las configuraciones de servidor significa 0.0.0.0, ¡escucha en TODAS las direcciones! Esto hará que su servidor esté disponible en internet. Si haces eso para un servidor local sin ningún tipo de seguridad (solo está escuchando en el host local, ¿verdad?) Eso es malo. ¡No hagas eso! - Josef
Responda su pregunta literalmente, la diferencia es 2130706433. - Shaz
@Mast oh, eres una de las personas que configuran un sistema totalmente inseguro, porque el firewall lo arreglará todo. Por lo general, este sistema se puede encontrar con shodan.io : 3 El siguiente nivel de este modo de pensar es "podemos usar totalmente una instalación de WordPress de 5 años, tenemos un WAF". No recomiendo a nadie que vaya por este camino, nunca! - Josef
@Shaz Me gustaría votar su comentario pero como está actualmente en 42 no puedo obligarme a hacerlo ... - Jenny D


Respuestas:


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

  • 127.0.0.1 es la dirección de bucle invertido (también conocida como localhost).

  • 0.0.0.0 es una meta dirección no enrutable utilizada para designar un objetivo no válido, desconocido o no aplicable (un marcador de posición de dirección no particular).

    En el contexto de una entrada de ruta, generalmente significa la ruta predeterminada.

    En el contexto de los servidores, 0.0.0.0 significa "todas las direcciones IPv4 en la máquina local". Si un host tiene dos direcciones IP, 192.168.1.1 y 10.1.2.1, y un servidor que se ejecuta en el host escucha en 0.0.0.0, será accesible en ambas direcciones IP.


¿Cuál es la dirección IP 127.0.0.1?

127.0.0.1 es la dirección del protocolo de Internet de bucle (IP) también conocida como "localhost". La dirección se usa para establecer una IP   conexión a la misma máquina o computadora utilizada por el usuario final.

La misma convención se define para las computadoras que admiten IPv6   direccionamiento utilizando la connotación de :: 1. Estableciendo una conexión   usar la dirección 127.0.0.1 es la práctica más común; sin embargo,   usando cualquier dirección IP en el rango de 127... * funcionará en el   mismo o similar manera. La construcción loopback da una computadora o   dispositivo capaz de conectar en red la capacidad de validar o establecer   la pila de IP en la máquina.

Fuente: 127.0.0.1 - ¿Cuáles son sus usos y por qué es importante?


Direcciones especiales

El número 127 de la red de clase A tiene asignado el "loopback"            función, es decir, un datagrama enviado por un protocolo de nivel superior            a una dirección de red 127 debería reiniciarse dentro del host. No            datagrama "enviado" a una dirección de red 127 debería aparecer en            cualquier red en cualquier lugar.

Fuente: Números de red


Si se trata de una clase completa A, ¿cuál es el sentido de otros valores arbitrarios para los últimos tres octetos?

El propósito del rango de bucle invertido es probar la implementación del protocolo TCP / IP en un host. Como las capas inferiores están en cortocircuito, el envío a una dirección de bucle permite que las capas superiores (IP y superiores) sean probadas de manera efectiva sin la posibilidad de que se manifiesten problemas en las capas inferiores. 127.0.0.1 es la dirección más comúnmente utilizada para fines de prueba.

Fuente: IP Reservado, Loopback y Direcciones Privadas

Para más información, ver https://askubuntu.com pregunta ¿Qué es el dispositivo de retroalimentación y cómo lo uso? y ¿Por qué es la dirección IP de bucle desde 127.0.0.1 a 127.255.255.254?.


¿Cuál es la dirección IP 0.0.0.0?

"0.0.0.0" es una sintaxis de dirección válida. Por lo tanto, debe analizarse como válido   siempre que una dirección IP en notación decimal con puntos tradicional sea   esperado. Una vez analizado, y convertido a forma numérica funcional, entonces   su valor determina lo que sucede a continuación.

El valor de cero tiene un significado especial.Entonces es "válido", pero   tiene un significado que puede no ser apropiado (y por lo tanto tratado como no   válido) para circunstancias particulares. Básicamente es el "no"   dirección particular "marcador de posición". Para cosas como el enlace de direcciones de   conexiones de red, el resultado puede ser asignar un   dirección de la interfaz a la conexión. Si lo está usando para configurar   una interfaz, puede eliminar una dirección de la interfaz, en su lugar. Eso   depende del contexto de uso para determinar qué "ningún particular   dirección "realmente hace.

En el contexto de una entrada de ruta, generalmente significa la ruta predeterminada.   Eso sucede como resultado más de la máscara de dirección, que selecciona el   bits para comparar. Una máscara de "0.0.0.0" no selecciona ningún bit, por lo que la comparación   siempre tendrá exito Entonces, cuando tal ruta está configurada, hay   siempre en algún lugar para que los paquetes se lleven (si está configurado con un válido   destino).

En algunos casos, simplemente "0" también funcionará y tendrá el mismo efecto. Pero   esto no está garantizado El formulario "0.0.0.0" es la forma estándar de decir   "sin dirección particular" (en IPv6 que es ":: 0" o simplemente "::").

Fuente: Cuál es el significado de la dirección IP 0.0.0.0


En el Protocolo de Internet versión 4, la dirección 0.0.0.0 es   meta-dirección no enrutable utilizada para designar un inválido, desconocido o no   objetivo aplicable Para darle un significado especial a un inválido que de otro modo sería inválido   una parte de los datos es una aplicación de señalización dentro de banda.

En el contexto de los servidores, 0.0.0.0 significa "todas las direcciones IPv4 en la máquina local". Si un host tiene dos direcciones IP, 192.168.1.1 y 10.1.2.1, y un servidor que se ejecuta en el host escucha en 0.0.0.0, será accesible en ambas direcciones IP.

En el contexto del enrutamiento, 0.0.0.0 normalmente significa la ruta predeterminada, es decir, la ruta que conduce al "resto de" Internet en lugar de a algún lugar de la red local.

Los usos incluyen:

  • La dirección que un host reclama como propia cuando todavía no se le ha asignado una dirección. Como al enviar el DHCPDISCOVER inicial   paquete cuando se usa DHCP.
  • La dirección que un host asigna a sí mismo cuando la solicitud de dirección a través de DHCP ha fallado, siempre que la pila de IP del host sea compatible con esto. Este uso ha sido reemplazado por el mecanismo APIPA en el funcionamiento moderno   sistemas.
  • Una forma de especificar "cualquier host IPv4 en absoluto". Se usa de esta manera cuando se especifica una ruta predeterminada.
  • Una forma de especificar explícitamente que el objetivo no está disponible.1
  • Una forma de especificar "cualquier dirección IPv4". Se utiliza de esta forma cuando se configuran servidores (es decir, cuando se vinculan los zócalos de escucha).   Esto es conocido por los programadores de TCP como INADDR_ANY. (bind (2) se une a   direcciones, no interfaces.)

En IPv6, la dirección de todos los ceros se escribe como "::".

Fuente: 0.0.0.0


Descubrimiento / Solicitud de DHCP

Cuando un cliente se inicia por primera vez, se dice que está en el   Inicializando el estado, y transmite un mensaje DHCPDISCOVER en su local   subred física sobre el puerto 67 del protocolo de datagrama de usuario (UDP) (BootP   servidor). Dado que el cliente no tiene forma de saber la subred a la que pertenece   pertenece, el DHCPDISCOVER es una transmisión de todas las subredes (IP de destino   dirección de 255.255.255.255), con una dirección IP de origen de 0.0.0.0. los   la dirección IP de origen es 0.0.0.0, ya que el cliente no tiene una   dirección IP configuradaSi existe un servidor DHCP en esta subred local   y está configurado y funcionando correctamente, el servidor DHCP escuchará   la transmisión y responder con un mensaje DHCPOFFER. Si un servidor DHCP   no existe en la subred local, debe haber un relevo DHCP / BootP   Agente en esta subred local para reenviar el mensaje DHCPDISCOVER a un   subred que contiene un servidor DHCP.

Este agente de retransmisión puede ser un host dedicado (por ejemplo,   Microsoft Windows Server) o enrutador (por ejemplo, un enrutador Cisco   configurado con declaraciones de ayuda de IP de nivel de interfaz).

...

Después de que el cliente recibe un DHCPOFFER, responde con un mensaje DHCPREQUEST, indicando su intención de aceptar los parámetros en el DHCPOFFER, y pasa al estado Solicitante. El cliente puede recibir múltiples mensajes DHCPOFFER, uno de cada servidor DHCP que recibió el mensaje DHCPDISCOVER original. El cliente elige un DHCPOFFER y responde solo a ese servidor DHCP, rechazando implícitamente todos los demás mensajes DHCPOFFER. El cliente identifica el servidor seleccionado completando el campo de opción Identificador del servidor con la dirección IP del servidor DHCP. El DHCPREQUEST también es una transmisión, por lo que todos los servidores DHCP que enviaron un DHCPOFFER verán el DHCPREQUEST, y cada uno sabrá si su DHCPOFFER fue aceptado o rechazado. Cualquier opción de configuración adicional que requiera el cliente se incluirá en el campo de opciones del mensaje DHCPREQUEST. Aunque al cliente se le ha ofrecido una dirección IP, enviará el mensaje DHCPREQUEST con una dirección IP de origen de 0.0.0.0. En este momento, el cliente aún no ha recibido la verificación de que está claro usar la dirección IP.

...

Conversación cliente-servidor para el cliente Obtención de la dirección DHCP donde el cliente y el servidor DHCP residen en la misma subred

Enter image description here

Fuente: Comprensión y solución de problemas de DHCP en Catalyst Switch o Enterprise Networks


Ruta por defecto

Este documento explica cómo configurar una ruta predeterminada o puerta de enlace de   último recurso. Estos comandos de IP se utilizan:

  • ip default-gateway

  • ip default-network

  • y ruta ip 0.0.0.0 0.0.0.0

ruta ip 0.0.0.0 0.0.0.0

Crear una ruta estática a la red 0.0.0.0 0.0.0.0 es otra forma de   establecer la puerta de acceso de último recurso en un enrutador. Como con el ip   comando default-network, usando la ruta estática a 0.0.0.0 no es   depende de cualquier protocolo de enrutamiento. Sin embargo, el enrutamiento de IP debe ser   habilitado en el enrutador

Nota: IGRP no entiende una ruta a 0.0.0.0. Por lo tanto   no puede propagar las rutas predeterminadas creadas con la ruta ip 0.0.0.0   Comando 0.0.0.0. Use el comando ip default-network para que IGRP propague una ruta predeterminada.

Fuente: Configuración de una puerta de enlace de último recurso mediante comandos de IP


166





Ellos no son los mismos.

127.0.0.1 es parte de la red 127/8 que está reservada y apunta a la misma computadora.

0.0.0.0 es una dirección IP especial que significa cosas diferentes según el contexto.

En el Protocolo de Internet Versión 4, la dirección 0.0.0.0 es una   meta-dirección no enrutable utilizada para designar un inválido, desconocido o   objetivo no aplicable. Para darle un significado especial a lo contrario   un dato inválido es una aplicación de señalización dentro de banda.

Es posible que haya confundido 0.0.0.0 para 127.0.0.1 cuando mira netstat y ve la dirección local escuchando como 0.0.0.0, pero esta es una forma diferente de 0.0.0.0.

En el contexto de los servidores, 0.0.0.0 significa "todas las direcciones IPv4 en el   máquina local ". Si un host tiene dos direcciones IP, 192.168.1.1 y   10.1.2.1, y un servidor que se ejecuta en el host escucha en 0.0.0.0, será accesible en ambas direcciones IP.

En el contexto del enrutamiento, 0.0.0.0 generalmente significa la ruta predeterminada,   es decir, la ruta que conduce al "resto de" Internet en lugar de   en algún lugar de la red local.

https://en.wikipedia.org/wiki/0.0.0.0


101



0.0.0.0 también puede indicar a veces una transmisión, es decir, para todas las computadoras de la red. - KronoS
@KronoS, pensé que las transmisiones son cosas como 255.255.255.255 (o más realista, algo así como 192.168.1.255 para una red local) - Nick T
@NickT Ah eres correcto: A special definition exists for the IP broadcast address 255.255.255.255. It is the broadcast address of the zero network or 0.0.0.0, which in Internet Protocol standards stands for this network, i.e. the local network. Transmission to this address is limited by definition, in that it is never forwarded by the routers connecting the local network to other networks. - KronoS
@KronoS Estás confundiendo el addr de transmisión con loopback. El loopback es 0.0.0.0 que, como se describe arriba, escucha todas las direcciones locales. La transmisión (de una manera simple) es el 255 de las redes para "transmitir" a todas las direcciones en esa red. - Desorder
Esto está incompleto: muchos sistemas operativos realmente te permiten conectar a 0.0.0.0, que luego se comporta como una dirección de bucle invertido. - grawity


127.0.0.1 una de las direcciones de la computadora local, pero cualquier dirección 127.xyz también es otra dirección de la computadora (llamada "dirección de bucle invertido"), excepto 127.0.0.0 (subred loopback) y 127.255.255.255 (dirección de difusión para el bucle invertido) subred).

127.x.y.z significa "aquí".

0.0.0.0 es totalmente diferente: 0.0.0.0 no es la dirección de nada, es el bromista, como * en concha.

No puede enviar datos a 0.0.0.0 o abrir activamente una conexión TCP a 0.0.0.0 porque no hay nada allí; 0.0.0.0 ni siquiera es una dirección inalcanzable o no enrutable, no tiene sentido en un contexto donde se espera una dirección.

Puede usar el comodín 0.0.0.0 en contextos donde una dirección puede ser proporcionada y proporcionada, significar No me importa.

Por ejemplo, cuando abre activamente una conexión TCP a algún servidor TCP (se crea un servidor TCP mediante un TCP pasivo abierto), debe especificar la dirección del servidor TCP (IP y número de puerto), y puede opcionalmente elige una dirección local. (Debido a que su socket no es un servidor, nadie puede abrir una conexión y la dirección de su lado de la conexión generalmente no es muy importante).

los bind la llamada al sistema se utiliza para elegir la dirección local de un socket TCP. Los datos pasaron a bind es realmente un conjunto de restricciones: restricción en la dirección IP, restricción en el puerto TCP. La notación de texto habitual es IP: puerto. 0.0.0.0:0 significa que cualquier IP de cualquier puerto es aceptable, es la restricción nula. 0.0.0.0:20 significa que el puerto local debe ser 20, cualquier IP es aceptable (0.0.0.0:20 es utilizado al conformar servidores FTP para conexión de datos en modo activo).

El subsistema TCP / IP elegirá la dirección para su lado de la conexión TCP si no elige uno, utilizando la tabla de enrutamiento, según la dirección de destino: la dirección del socket TCP local será la dirección local asociada con la ruta correspondiente a la dirección de destino.

Anteriormente mencioné el "meta-personaje" del caparazón *, pero el poder de combinar metacaracteres con personajes como *foo* (cualquier nombre de archivo que contenga "foo") no existe con las restricciones de la dirección IP, es todo o nada: una sola dirección IP se considera aceptable o todas son direcciones. La lógica no no dicta que debe ser de esta manera. Puede ampliar la interfaz con un lenguaje de restricciones más completo.

Precisión:

La frase 127.x.y.z significa "aquí" no implica que todas estas direcciones sean iguales. Representan diferentes "ubicaciones" (direcciones de socket), dentro de la "computadora" local, dentro de la pila de IP local en realidad.

Observación: una computadora con virtualización (emulación, virtualización de hardware, paravirtualización, lo que sea que se te ocurra ...) tiene múltiples pilas IP independientes.


13



Cuando escribí una dirección aleatoria comenzando con 127 (por ejemplo, 127.16.23.42) en mi navegador, no se conectó a localhost. - whoKnows
@whoKnows Por supuesto. localhost es 127.0.0.1, no 127.16.23.42. - curiousguy
Ya veo. Entonces 127.0.0.1 significa localhost, pero 127.x.y.z podría ¿significa la computadora local, si fue configurada de esa manera? - whoKnows
@whoKnows No: 127.x.y.z pertenece a esta computadora para cualquier x y z. "localhost" es solo un nombre para 127.0.0.1, así que olvídate de "localhost". Utilizar el -n o -d Bandera de netstat y programas relacionados para mostrar direcciones numéricas, no nombres. 127.0.0.1 no es la misma dirección IP que 127.16.23.42. Entonces, 127.0.0.1:80 y 127.16.23.42:80 representan direcciones de punto final TCP distintas, no se puede encontrar un servidor web en la dirección única en la otra dirección. - curiousguy


Por lo general, utiliza bind-address 0.0.0.0 para permitir conexiones desde redes y fuentes externas. Muchos servidores, como MySQL, normalmente se enlazan a 127.0.0.1 y solo permiten conexiones de bucle invertido, lo que requiere que el administrador lo cambie a 0.0.0.0 para habilitar la conectividad externa.


4