La respuesta de Lee B es correcta, pero aquí hay algunos RFC relevantes en caso de que esté interesado.
0.0.0.0:
De RFC1122 , Sección 3.1.2.3:
Ahora resumimos los casos especiales importantes para las direcciones IP de Clase A, B y C, utilizando la siguiente notación para una dirección IP:
{ <Network-number>, <Host-number> }
or
{ <Network-number>, <Subnet-number>, <Host-number> }
...
(a) { 0, 0 }
This host on this network. MUST NOT be sent, except as
a source address as part of an initialization procedure
by which the host learns its own IP address.
Solo eso, "este host en esta red" ... como dice la respuesta de Lee B, esto se traduce en todas las direcciones IP disponibles en su host. Alojar un servicio en 0.0.0.0 alojará automáticamente ese servicio en cada interfaz direccionable.
127.0.0.1:
De RFC5735 :
127.0.0.0/8: este bloque se asigna para su uso como dirección de bucle invertido de host de Internet. Un datagrama enviado por un protocolo de nivel superior a una dirección en cualquier lugar dentro de este bloque se repite dentro del host. Esto normalmente se implementa utilizando solo 127.0.0.1/32 para loopback. Como se describe en [RFC1122], Sección 3.2.1.3, las direcciones dentro del bloque 127.0.0.0/8 completo no aparecen legítimamente en ninguna red en ninguna parte.
La diferencia entre 0.0.0.0 y la dirección de bucle invertido 127.0.0.1 es que la dirección de bucle invertido está diseñada para permitir una interfaz IP completamente funcional dentro del propio host, independientemente de cómo se vea el resto de la configuración de la red. Cualquier tráfico enviado al dispositivo de bucle invertido se recibe inmediatamente en él. No es tanto que la red de bucle invertido "se refiera" a su propio host ... es más como si tuviera un mini segmento de red en su host al que se pueden abrir y conectar dispositivos, procesos y sockets.