Eu sei que 127.0.0.1 ~ 127.255.255.254 são os endereços IP de auto-retorno 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:
ip
ip-address
netstat
Jichao
fonte
fonte
::1
como endereço de loopback.Respostas:
A única coisa é que você não está dizendo "todos os endereços devem ter acesso" - isso é feito no (s) firewall (s) e / ou no software do servidor e / ou em outras camadas de segurança, como tcpwrappers.
0.0.0.0, nesse contexto, significa "todos os endereços IP na máquina local" (de fato provavelmente "todos os endereços IPv4 na máquina local"). Portanto, se a máquina do servidor da web tiver dois endereços IP, 192.168.1.1 e 10.1.2.1, e você permitir que um daemon do servidor da web, como o apache, escute no 0.0.0.0, ele poderá ser acessado nos dois endereços IP. Mas apenas para o que pode entrar em contato com esses endereços IP e as portas 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 das rotas na rede local etc.).
fonte
0.0.0.0
significa a rota padrão única se for acompanhada por prefixo/0
(ou máscara de rede0.0.0.0
)Quando um serviço está escutando em 0.0.0.0, isso significa que ele está escutando em todas as interfaces de rede configuradas. Ao escutar em 127.0.0.1, o serviço está vinculado apenas à interface de loopback (disponível apenas na máquina local)
fonte
O endereço IP
0.0.0.0
pode ter significados muito diferentes, dependendo de onde é usado.0.
).netstat
comando (que é o que você solicitou), significa que um determinado soquete está escutando todos os endereços IP disponíveis que o computador possui; quando um computador possui 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 nessa porta e nesse 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
).fonte
ping 0.0.0.0
em um sistema Windows resulta em uma mensagem de erro.curl 0.0.0.0
produzconnection refused
no Arch Linux.ping 0.0.0.0
, por outro lado, parece ser um alias para oping 127.0.0.1
qual funciona bem.connection refused
pode ser porque o curl, por padrão, tenta se conectar à porta 80 / tcp. Tente encontrar as portas abertas comnmap -sV localhost
e, em seguida, para, por exemplo, se 631 / tcp:curl 0.0.0.0:631
.A resposta de Lee B está certa, mas aqui estão algumas RFCs relevantes, caso você esteja interessado.
0.0.0.0:
Do RFC1122 , Seção 3.1.2.3:
Apenas isso, "este host nesta rede" ... como a resposta de Lee B afirma que isso se traduz em todos os endereços IP disponíveis no seu host. A hospedagem de um serviço no 0.0.0.0 hospedará esse serviço automaticamente em todas as interfaces endereçáveis.
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 foi projetado para permitir uma interface IP totalmente funcional no 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 "se refira" ao seu próprio host ... é mais como se você tivesse um mini segmento de rede em seu host que dispositivos, processos e soquetes possam abrir e conectar.
fonte
Em termos simples: ouvir em 0.0.0.0 significa ouvir em qualquer lugar que tenha acesso à rede neste computador, por exemplo, neste mesmo computador, na rede local ou na Internet, enquanto ouvir em 127.0.0.1 significa ouvir apenas nesse mesmo computador
fonte