Servimos un puerto en localhost y queremos verificar otro proceso si el puerto está disponible. Debido a un error en nuestro código, en realidad está intentando conectarse a la IP 0.0.0.0:<port>
y, por alguna razón, tiene éxito, como lo demuestra Strace:
[...]
connect(3, {sa_family=AF_INET, sin_port=htons(10002), sin_addr=inet_addr("0.0.0.0")}, 16) = 0
[...]
Qué significa eso? Por que funciona
networking
tcp
strace
erikbwork
fuente
fuente
Respuestas:
0.0.0.0 como dirección de destino se refiere a un host no enrutable o "este host" . En la práctica, conectarse a 0.0.0.0 es equivalente a conectarse a localhost. (Estrictamente hablando, no es válido como dirección de destino, solo como dirección de origen, pero la práctica no coincide con la teoría).
Cuando se vincula, "este host" se expande a "cualquier dirección en este host", por lo que las aplicaciones comúnmente aceptan conexiones mediante la vinculación a 0.0.0.0, lo que significa que recibirán paquetes dirigidos a cualquier dirección IPv4 en el sistema.
fuente