Eu sei que 127.0.0.1 ~ 127.255.255.254 são os endereços IP de loopback para a maioria dos sistemas operacionais modernos, e esses endereços IP podem ser usados para se referir ao nosso próprio computador.
Mas o que é 0.0.0.0? Parece que também se refere ao computador local, então qual é a diferença ?
E, você poderia explicar as seguintes conexões IP para mim:
A única coisa é que você não está dizendo "todos os endereços devem ter acesso" - isso é feito em seu(s) firewall(s) e/ou no software do servidor e/ou em outras camadas de segurança, como tcpwrappers.
0.0.0.0, neste contexto, significa "todos os endereços IP na máquina local" (na verdade, provavelmente, "todos os endereços IPv4 na máquina local"). Portanto, se sua máquina de servidor web tiver dois endereços IP, 192.168.1.1 e 10.1.2.1, e você permitir que um daemon de servidor web como o apache escute em 0.0.0.0, ele estará acessível em ambos os endereços IP. Mas apenas para o que pode entrar em contato com esses endereços IP e a(s) porta(s) da web.
Observe que, em um contexto diferente (roteamento), 0.0.0.0 geralmente significa a rota padrão (a rota para "o resto" da Internet, além de rotas em sua rede local etc.).
Quando um serviço está escutando em 0.0.0.0 isso significa que o serviço está escutando em todas as interfaces de rede configuradas, quando escutando em 127.0.0.1 o serviço está vinculado apenas à interface de loopback (disponível apenas na máquina local)
O endereço IP
0.0.0.0
pode ter significados muito diferentes, dependendo de onde é usado.0.
).netstat
comando (que é o que você pediu), significa que um determinado soquete está escutando todos os endereços IP disponíveis que o computador possui; quando um computador tem mais de um endereço IP, um soquete pode ser vinculado apenas a um endereço e par de portas específicos, ou a uma porta e todos os endereços; se você vir um endereço IP lá, significa que o soquete está escutando apenas naquela porta e naquele endereço específico; se você vir0.0.0.0
, significa que está escutando nessa porta em todos os endereços da máquina, incluindo o de loopback (127.0.0.1
).A resposta de Lee B está certa, mas aqui estão algumas RFCs relevantes, caso você esteja interessado.
0.0.0.0:
De RFC1122 , Seção 3.1.2.3:
Apenas isso, "este host nesta rede" ... como a resposta de Lee B afirma, isso se traduz em todos os endereços IP disponíveis em seu host. Hospedar um serviço em 0.0.0.0 hospedará automaticamente esse serviço em cada interface endereçável.
127.0.0.1:
De RFC5735 :
A diferença entre 0.0.0.0 e o endereço de loopback 127.0.0.1 é que o endereço de loopback é projetado para permitir uma interface IP totalmente funcional dentro do próprio host, independentemente da aparência do restante da configuração de rede, se houver. Qualquer tráfego enviado ao dispositivo de loopback é recebido imediatamente nele. Não é tanto que a rede de loopback "refere-se" ao seu próprio host... é mais como se você tivesse um mini segmento de rede em seu host que dispositivos, processos e soquetes podem abrir e se conectar.
Em termos simples: Ouvir em 0.0.0.0 significa ouvir de qualquer lugar que tenha acesso à rede a este computador, por exemplo, deste mesmo computador, da rede local ou da Internet, enquanto ouvir em 127.0.0.1 significa apenas ouvir deste mesmo computador