Qual é a diferença entre 127.0.0.1 e 0.0.0.0?


235

Entendo que 127.0.0.1 aponta para localhost, e também 0.0.0.0 (me corrija se estiver errado). Então, qual é a diferença entre 127.0.0.1 e 0.0.0.0?


1
Você pode estar interessado nesta discussão do rastreador de erros do Chrome sobre como lidar 0.0.0.0com a entrada de endereço.
Jeremy Banks

6
Na maioria das configurações do servidor, 0.0.0.0 significa ouvir em TODOS os endereços! Isso tornará seu servidor disponível na internet. Se você fizer isso para algum servidor local sem segurança (ele está apenas ouvindo no localhost, certo?), Isso é ruim. Não faça isso!
Josef

56
Responda sua pergunta literalmente, a diferença é 2130706433.
Shaz

2
@ Mas, oh, você é uma das pessoas que configuram um sistema totalmente inseguro, porque o firewall irá corrigir tudo isso? Normalmente, esses sistemas podem ser encontrados com shodan.io : 3 O próximo nível dessa mentalidade é "podemos totalmente usar uma instalação WordPress de 5 anos, obtivemos um WAF". Eu não recomendo que ninguém siga esse caminho, nunca!
218 Josef Josef

2
@Shaz eu gostaria de upvote seu comentário mas como é atualmente em 42 eu não posso trazer-me a fazê-lo ...
Jenny D

Respostas:


221

Qual é a diferença entre 127.0.0.1 e 0.0.0.0?

  • 127.0.0.1 é o endereço de loopback (também conhecido como localhost).

  • 0.0.0.0 é um meta-endereço não roteável usado para designar um destino inválido, desconhecido ou não aplicável (um espaço reservado para nenhum endereço específico).

    No contexto de uma entrada de rota, geralmente significa a rota padrão.

    No contexto de servidores, 0.0.0.0 significa "todos os endereços IPv4 na máquina local". Se um host tiver dois endereços IP, 192.168.1.1 e 10.1.2.1, e um servidor em execução no host escutar em 0.0.0.0, ele poderá ser acessado nesses dois IPs.


O que é o endereço IP 127.0.0.1?

127.0.0.1 é o endereço de protocolo de Internet de loopback (IP) também conhecido como "host local". O endereço é usado para estabelecer uma conexão IP com a mesma máquina ou computador usado pelo usuário final.

A mesma convenção é definida para os computadores que oferecem suporte ao endereçamento IPv6 usando a conotação de :: 1. Estabelecer uma conexão usando o endereço 127.0.0.1 é a prática mais comum; no entanto, usando qualquer endereço IP no intervalo de 127 .. . * funcionará da mesma maneira ou similar. A construção de loopback fornece a um computador ou dispositivo capaz de conectar em rede a capacidade de validar ou estabelecer a pilha IP na máquina.

Fonte: 127.0.0.1 - Quais são seus usos e por que é importante?


Endereços Especiais

O número de rede classe A 127 é atribuído à função "loopback", isto é, um datagrama enviado por um protocolo de nível superior a um endereço de rede 127 deve retornar dentro do host. Nenhum datagrama "enviado" para um endereço de rede 127 deve aparecer em qualquer rede em qualquer lugar.

Fonte: Números de Rede


Se é uma classe inteira A, qual é o sentido de outros valores arbitrários para os últimos três octetos?

O objetivo do intervalo de loopback é testar a implementação do protocolo TCP / IP em um host. Como as camadas inferiores estão em curto-circuito, o envio para um endereço de loopback permite que as camadas superiores (IP e superior) sejam efetivamente testadas sem a chance de problemas nas camadas inferiores se manifestarem. 127.0.0.1 é o endereço mais comumente usado para fins de teste.

Fonte: IP Reservado, Loopback e Endereços Privados

Para mais informações, consulte https://askubuntu.com question O que é o dispositivo de loopback e como o uso? e por que o endereço IP de loopback é de 127.0.0.1 a 127.255.255.254? .


O que é o endereço IP 0.0.0.0?

"0.0.0.0" é uma sintaxe de endereço válida. Portanto, ele deve ser analisado como válido sempre que um endereço IP na notação decimal com pontos tradicionais for esperado. Depois de analisado e convertido em forma numérica viável, seu valor determina o que acontece a seguir.

O valor todo zero tem um significado especial. Portanto, é "válido", mas tem um significado que pode não ser apropriado (e, portanto, tratado como não válido) para circunstâncias particulares. É basicamente o espaço reservado para "nenhum endereço específico". Para coisas como ligação de endereço de conexões de rede, o resultado pode ser atribuir um endereço de interface apropriado à conexão. Se você o estiver usando para configurar uma interface, ele poderá remover um endereço da interface. Depende do contexto de uso para determinar o que "nenhum endereço específico" realmente faz.

No contexto de uma entrada de rota, geralmente significa a rota padrão . Isso acontece como resultado da máscara de endereço, que seleciona os bits a serem comparados. Uma máscara de "0.0.0.0" não seleciona bits, portanto a comparação sempre será bem-sucedida. Portanto, quando essa rota é configurada, sempre há um local para pacotes (se configurados com um destino válido).

Em alguns casos, apenas "0" também funcionará e terá o mesmo efeito. Mas isso não é garantido. O formulário "0.0.0.0" é a maneira padrão de dizer "nenhum endereço específico" (no IPv6 que é ":: 0" ou apenas "::").

Fonte: Qual é o significado do endereço IP 0.0.0.0


No Protocolo da Internet versão 4, o endereço 0.0.0.0 é um meta-endereço não roteável usado para designar um destino inválido, desconhecido ou não aplicável. Para atribuir um significado especial a um dado inválido é uma aplicação de sinalização em banda.

No contexto de servidores, 0.0.0.0 significa "todos os endereços IPv4 na máquina local". Se um host tiver dois endereços IP, 192.168.1.1 e 10.1.2.1, e um servidor em execução no host escutar em 0.0.0.0, ele poderá ser acessado nesses dois IPs.

No contexto do roteamento, 0.0.0.0 geralmente significa a rota padrão, ou seja, a rota que leva ao "restante da" Internet em vez de em algum lugar da rede local.

Os usos incluem:

  • O endereço que um host reivindica como próprio quando ainda não recebeu um endereço. Como ao enviar o pacote DHCPDISCOVER inicial ao usar o DHCP.
  • O endereço que um host atribui a si mesmo quando a solicitação de endereço via DHCP falhar, desde que a pilha de IPs do host suporte isso. Esse uso foi substituído pelo mecanismo APIPA nos sistemas operacionais modernos.
  • Uma maneira de especificar "qualquer host IPv4". É usado dessa maneira ao especificar uma rota padrão.
  • Uma maneira de especificar explicitamente que o destino está indisponível. 1 1
  • Uma maneira de especificar "qualquer endereço IPv4". É usado dessa maneira ao configurar servidores (ou seja, ao ligar soquetes de escuta). Isso é conhecido pelos programadores TCP como INADDR_ANY. (bind (2) vincula-se a endereços, não a interfaces.)

No IPv6, o endereço com todos os zeros é escrito como "::".

Fonte: 0.0.0.0


Descoberta / Solicitação DHCP

Quando um cliente é inicializado pela primeira vez, diz-se que está no estado Inicializando e transmite uma mensagem DHCPDISCOVER em sua sub-rede física local pela porta 67 do UDP (User Datagram Protocol) (servidor BootP). Como o cliente não tem como saber a sub-rede à qual pertence, o DHCPDISCOVER é um broadcast de todas as sub-redes (endereço IP de destino 255.255.255.255), com um endereço IP de origem 0.0.0.0. O endereço IP de origem é 0.0.0.0, pois o cliente não possui um endereço IP configurado.Se um servidor DHCP existir nesta sub-rede local e estiver configurado e funcionando corretamente, o servidor DHCP ouvirá a transmissão e responderá com uma mensagem DHCPOFFER. Se um servidor DHCP não existir na sub-rede local, deverá haver um agente de retransmissão DHCP / BootP nessa sub-rede local para encaminhar a mensagem DHCPDISCOVER para uma sub-rede que contenha um servidor DHCP.

Esse agente de retransmissão pode ser um host dedicado (por exemplo, Microsoft Windows Server) ou roteador (por exemplo, um roteador Cisco configurado com instruções auxiliares de IP no nível da interface).

...

Depois que o cliente recebe um DHCPOFFER, ele responde com uma mensagem DHCPREQUEST, indicando sua intenção de aceitar os parâmetros no DHCPOFFER, e passa para o estado Solicitando. O cliente pode receber várias mensagens DHCPOFFER, uma de cada servidor DHCP que recebeu a mensagem DHCPDISCOVER original. O cliente escolhe um DHCPOFFER e responde apenas ao servidor DHCP, recusando implicitamente todas as outras mensagens DHCPOFFER. O cliente identifica o servidor selecionado preenchendo o campo de opção Identificador do servidor com o endereço IP do servidor DHCP. O DHCPREQUEST também é uma transmissão, portanto, todos os servidores DHCP que enviaram um DHCPOFFER verão o DHCPREQUEST e cada um saberá se seu DHCPOFFER foi aceito ou recusado. Quaisquer opções de configuração adicionais exigidas pelo cliente serão incluídas no campo de opções da mensagem DHCPREQUEST.Mesmo que o cliente tenha recebido um endereço IP, ele enviará a mensagem DHCPREQUEST com um endereço IP de origem 0.0.0.0. No momento, o cliente ainda não recebeu a verificação de que está claro o uso do endereço IP.

...

Conversa cliente-servidor para cliente que obtém o endereço DHCP em que o cliente e o servidor DHCP residem na mesma sub-rede

Digite a descrição da imagem aqui

Fonte: Noções básicas e solução de problemas do DHCP no Catalyst Switch ou nas redes empresariais


Rota Padrão

Este documento explica como configurar uma rota padrão ou gateway de último recurso. Estes comandos IP são usados:

  • gateway padrão IP

  • rede padrão IP

  • e rota ip 0.0.0.0 0.0.0.0

rota ip 0.0.0.0 0.0.0.0

Criar uma rota estática para a rede 0.0.0.0 0.0.0.0 é outra maneira de definir o gateway de último recurso em um roteador. Como no comando ip default-network, o uso da rota estática para 0.0.0.0 não depende de nenhum protocolo de roteamento. No entanto, o roteamento IP deve estar ativado no roteador.

Nota: O IGRP não entende uma rota para 0.0.0.0. Portanto, ele não pode propagar rotas padrão criadas usando o comando ip route 0.0.0.0 0.0.0.0. Use o comando ip default-network para que o IGRP propague uma rota padrão.

Fonte: Configurando um Gateway de Último Recurso Usando Comandos IP


3
No contexto de servidores, 0.0.0.0 significa "todos os endereços IPv4 na máquina local". Se um host tiver dois endereços IP, 192.168.1.1 e 10.1.2.1, e um servidor em execução no host ouvir em 0.0.0.0, ele poderá ser acessado nesses dois IPs. - que fez isso por mim
Rafael Eyng

112

Eles não são os mesmos.

127.0.0.1 faz parte da rede 127/8 que está reservada e aponta para o mesmo computador.

0.0.0.0 é um endereço IP especial que significa coisas diferentes, dependendo do contexto.

No Internet Protocol Versão 4, o endereço 0.0.0.0 é um meta-endereço não roteável usado para designar um destino inválido, desconhecido ou não aplicável. Para atribuir um significado especial a um dado inválido é uma aplicação de sinalização em banda.

Você pode ter confundido 0.0.0.0 com 127.0.0.1 quando olha para netstat e vê o endereço local escutando como 0.0.0.0, mas é uma maneira diferente de usar 0.0.0.0.

No contexto de servidores, 0.0.0.0 significa "todos os endereços IPv4 na máquina local". Se um host tiver dois endereços IP, 192.168.1.1 e 10.1.2.1, e um servidor em execução no host escutar em 0.0.0.0, ele poderá ser acessado nesses dois IPs.

No contexto do roteamento, 0.0.0.0 geralmente significa a rota padrão, ou seja, a rota que leva ao "restante da" Internet em vez de em algum lugar da rede local.

https://en.wikipedia.org/wiki/0.0.0.0


0.0.0.0às vezes também pode indicar uma transmissão, significando para todos os computadores na rede.
James Mertz

8
@KronoS Pensei transmissões são coisas como 255.255.255.255(ou mais realisticamente algo como 192.168.1.255para uma rede local)
Nick T

1
@NickT Ah, você está correto :A special definition exists for the IP broadcast address 255.255.255.255. It is the broadcast address of the zero network or 0.0.0.0, which in Internet Protocol standards stands for this network, i.e. the local network. Transmission to this address is limited by definition, in that it is never forwarded by the routers connecting the local network to other networks.
James Mertz

@KronoS Você está confundindo o endereço de broadcast com loopback. O loopback é 0.0.0.0 que, conforme descrito acima, escuta todos os endereços locais. A transmissão (de uma maneira simples) é a 255 das redes a "transmitir" para todos os endereços nessa rede.
Desorder

Isso está incompleto - muitos sistemas operacionais permitem conectar ao 0.0.0.0, que se comporta como um endereço de loopback.
grawity

16

127.0.0.1 é um dos endereços do computador local, mas qualquer endereço 127.xyz também é outro endereço do computador (chamado "endereço de loopback"), exceto 127.0.0.0 (sub-rede de loopback) e 127.255.255.255 (endereço de broadcast para o sub-rede de loopback).

127.xyz significa "aqui".

0.0.0.0 é totalmente diferente: 0.0.0.0 não é o endereço de nada , é o curinga, como *no shell.

Você não pode enviar dados para 0.0.0.0 ou abrir ativamente uma conexão TCP para 0.0.0.0 porque não há nada lá; 0.0.0.0 nem é um endereço inacessível ou não roteável, não faz sentido em um contexto em que um endereço é esperado .

Você pode usar o joker 0.0.0.0 em contextos em que um endereço pode ser opcionalmente fornecido , para dizer que não me importo .

Por exemplo, quando você abre ativamente uma conexão TCP com algum servidor TCP (um servidor TCP é criado por um TCP aberto passivo), é necessário especificar o endereço do servidor TCP (IP e número da porta) e, opcionalmente, pode escolher um Endereço local. (Como o soquete não é um soquete do servidor, ninguém pode abrir uma conexão e o endereço do seu lado da conexão geralmente não é muito importante.)

A bindchamada do sistema é usada para escolher o endereço local de um soquete TCP. Os dados transmitidos bindsão realmente um conjunto de restrições: restrição no endereço IP, restrição na porta TCP. A notação de texto usual é IP: port. 0.0.0.0TED significa que qualquer IP e qualquer porta são aceitáveis, é a restrição nula. 0.0.0.0:20 significa que a porta local deve ser 20, qualquer IP é aceitável (0.0.0.0:20 é usado pela conformidade dos servidores FTP para conexão de dados no modo ativo).

O subsistema TCP / IP escolherá o endereço do seu lado da conexão TCP, se você não escolher um, usando a tabela de roteamento, com base no endereço de destino: o endereço do soquete TCP local será o endereço local associado à rota correspondente para o endereço de destino.

Eu mencionei anteriormente o shell "meta-caractere" *, mas o poder de combinar meta-caracteres com caracteres como *foo*(qualquer nome de arquivo que contenha "foo") não existe com restrições de endereço IP, é tudo ou nada: um único endereço IP é considerado aceitável ou todos os endereços são. A lógica não determina que deve ser assim. Você pode estender a interface com uma linguagem de restrição mais rica.

Precisão:

A frase 127.xyz significa "aqui" não implica que todos esses endereços sejam iguais. Eles representam "locais" diferentes (endereços de soquete), dentro do "computador" local, na pilha IP local, na verdade.

Observação: um computador com virtualização (emulação, virtualização de hardware, paravirtualização, o que você puder imaginar ...) possui várias pilhas de IP independentes.


Quando digitei um endereço aleatório começando com 127 (por exemplo, 127.16.23.42) no meu navegador, ele não se conectou ao host local.
precisa saber é o seguinte

@whoKnows Claro. localhost é 127.0.0.1, não 127.16.23.42.
precisa

Eu vejo. Então 127.0.0.1 significa localhost, mas 127.xyz poderia significar o computador local, se ele fosse configurado dessa maneira?
precisa saber é o seguinte

2
@whoKnows No: 127.xyz pertence a este computador para qualquer xy z. "localhost" é apenas um nome para 127.0.0.1, então esqueça "localhost". Use o sinalizador -nou -dde netstate programas relacionados para mostrar endereços numéricos, não nomes. 127.0.0.1 não é o mesmo endereço IP que 127.16.23.42. Portanto, 127.0.0.1:80 e 127.16.23.42:80 representam endereços de terminal TCP distintos, um servidor da Web em um endereço não pode ser encontrado no outro endereço.
curiousguy

6

Normalmente, você usa o endereço de ligação 0.0.0.0 para permitir conexões de redes e fontes externas. Muitos servidores como o MySQL normalmente se ligam ao 127.0.0.1, permitindo apenas conexões de loopback, exigindo que o administrador o altere para 0.0.0.0 para habilitar a conectividade externa.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.