Estamos atendendo uma porta no host local e queremos verificar outro processo se a porta estiver disponível. Devido a um erro no nosso código, ele está realmente tentando se conectar ao IP 0.0.0.0:<port>
e, por algum motivo, é bem-sucedido - como o strace prova:
[...]
connect(3, {sa_family=AF_INET, sin_port=htons(10002), sin_addr=inet_addr("0.0.0.0")}, 16) = 0
[...]
O que isso significa? Por que isso funciona?
networking
tcp
strace
erikbwork
fonte
fonte
Respostas:
0.0.0.0 como endereço de destino refere-se de várias maneiras a um host não roteável ou a "este host" . Na prática, conectar-se ao 0.0.0.0 é equivalente a conectar-se ao host local. (A rigor, não é válido como endereço de destino, apenas como endereço de origem, mas a prática não corresponde à teoria.)
Ao vincular, "este host" se expande para "qualquer endereço nesse host" - portanto, os aplicativos geralmente aceitam conexões vinculando-se a 0.0.0.0, o que significa que receberão pacotes endereçados a qualquer endereço IPv4 no sistema.
fonte