Questão Qual a diferença entre 127.0.0.1 e 0.0.0.0?


Eu entendo que 127.0.0.1 aponta para localhost, e 0.0.0.0 (me corrija se eu estiver errado). Então, qual a diferença entre 127.0.0.1 e 0.0.0.0?


162


origem


Você pode estar interessado esta discussão do rastreador de bugs do Chrome sobre como lidar 0.0.0.0 na entrada de endereço. - user7301
Na maioria das configurações do servidor, 0.0.0.0 significa, escute em TODOS os endereços! Isso fará com que seu servidor esteja disponível na internet. Se você fizer isso para algum servidor local sem qualquer segurança (é só ouvir em localhost, certo?) Isso é ruim. Não faça isso! - Josef
Responda sua pergunta literalmente, a diferença é 2130706433. - Shaz
@Mast oh, você é uma das pessoas que configurou um sistema totalmente inseguro, porque o firewall consertará tudo? Normalmente, esses sistemas podem ser encontrados com shodan.io : 3 O próximo nível dessa mentalidade é "nós podemos usar totalmente uma instalação do WordPress de 5 anos, temos um WAF". Eu não recomendo ninguém indo por esse caminho, nunca! - Josef
@ Shaz Eu gostaria de fazer um upvote do seu comentário, mas como é atualmente aos 42 anos eu não consigo fazer isso ... - Jenny D


Respostas:


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 particular).

    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 atender em 0.0.0.0, ele poderá ser acessado em ambos os IPs.


Qual é o endereço IP 127.0.0.1?

127.0.0.1 é o endereço de protocolo de Internet de loopback (IP) também chamado de “localhost”. O endereço é usado para estabelecer um endereço IP.   conexão com a mesma máquina ou computador que está sendo usado pelo usuário final.

A mesma convenção é definida para computadores que suportam IPv6   endereçamento usando a conotação de :: 1. Estabelecendo uma conexão   usar o endereço 127.0.0.1 é a prática mais comum; Contudo,   usando qualquer endereço IP no intervalo de 127... * funcionará no   mesma maneira ou semelhante. A construção de loopback fornece um computador ou   dispositivo capaz de colocar em rede a capacidade de validar ou   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 da classe A 127 é atribuído ao "loopback"            função, isto é, um datagrama enviado por um protocolo de nível superior            para um endereço de rede 127 deve fazer um loop de volta dentro do host. Não            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 ponto 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 acima) sejam efetivamente testadas sem a possibilidade 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, veja https://askubuntu.com questão O que é o dispositivo de loopback e como eu o uso? e por que o endereço IP de loopback é de 127.0.0.1 a 127.255.255.254?.


Qual é o endereço IP 0.0.0.0?

"0.0.0.0" é uma sintaxe de endereço válida. Por isso, deve analisar como válido   sempre que um endereço IP na notação tradicional com pontos decimais   esperado. Depois de analisado e convertido para um formato numérico viável,   seu valor determina o que acontece a seguir.

O valor all-zero tem um significado especial.Então é "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 "não   endereço particular "placeholder. Para coisas como endereço de ligação de   conexões de rede, o resultado pode ser atribuir um   endereço da interface para a conexão. Se você estiver usando para configurar   uma interface, pode remover um endereço da interface. isto   depende do contexto de uso para determinar o que "nenhum   endereço "realmente faz.

No contexto de uma entrada de rota, geralmente significa a rota padrão.   Isso acontece como resultado mais da máscara de endereço, que seleciona o   bits para comparar. Uma máscara de "0.0.0.0" não seleciona nenhum bit, então a comparação   sempre terá sucesso. Então, quando tal rota é configurada, há   sempre em algum lugar para ir pacotes (se configurado com um válido   destino).

Em alguns casos, apenas "0" também funcionará e terá o mesmo efeito. Mas   isso não é garantido. A forma "0.0.0.0" é a maneira padrão de dizer   "nenhum endereço particular" (em IPv6 que é ":: 0" ou apenas "::").

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


Na versão 4 do Internet Protocol, o endereço 0.0.0.0 é um   meta-endereço não roteável usado para designar um inválido, desconhecido ou não   alvo aplicável. Para dar um significado especial a um inválido   Um pedaço de dados é uma aplicação da 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 atender em 0.0.0.0, ele poderá ser acessado em ambos os 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 na rede local.

Os usos incluem:

  • O endereço que um host reivindica como próprio quando ainda não foi atribuído um endereço. Tal como ao enviar o DHCPDISCOVER inicial   pacote ao usar o DHCP.
  • O endereço que um host atribui a si próprio quando a solicitação de endereço via DHCP falhou, desde que a pilha IP do host ofereça suporte a isso. Esse uso foi substituído pelo mecanismo APIPA em operações modernas   sistemas.
  • Uma maneira de especificar "qualquer host IPv4". É usado desta maneira ao especificar uma rota padrão.
  • Uma maneira de especificar explicitamente que o destino não está disponível.1
  • Uma maneira de especificar "qualquer endereço IPv4". É usado dessa maneira ao configurar servidores (ou seja, ao ligar sockets de escuta).   Isso é conhecido pelos programadores TCP como INADDR_ANY. (bind (2) liga-se a   endereços, não interfaces.)

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

Fonte: 0.0.0.0


Descoberta / solicitação de DHCP

Quando um cliente inicia pela primeira vez, é dito que ele está no   Inicializando o estado e transmite uma mensagem DHCPDISCOVER em seu   sub-rede física sobre a porta 67 do UDP (User Datagram Protocol)   servidor). Como o cliente não tem como saber a sub-rede à qual ele   pertence, o DHCPDISCOVER é uma transmissão de todas as sub-redes (IP de destino   endereço de 255.255.255.255), com um endereço IP de origem de 0.0.0.0. o   endereço IP de origem é 0.0.0.0, uma vez que o cliente não possui   endereço IP configurado.Se existir um servidor DHCP nesta sub-rede local   e está configurado e funcionando corretamente, o servidor DHCP ouvirá   a transmissão e responda com uma mensagem DHCPOFFER. Se um servidor DHCP   não existe na sub-rede local, deve haver um relé DHCP / BootP   Agente nesta sub-rede local para encaminhar a mensagem DHCPDISCOVER para um   sub-rede que contém 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 IP de nível de 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 move para o estado de solicitação. 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 a esse 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. Qualquer opção de configuração adicional que o cliente requeira será incluída 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 de 0.0.0.0. No momento, o cliente ainda não recebeu a confirmação de que é claro usar o endereço IP.

...

Conversa entre cliente e servidor para cliente Obtendo endereço DHCP em que cliente e servidor DHCP residem na mesma sub-rede

Enter image description here

Fonte: Entendendo e solucionando problemas de DHCP no Catalyst Switch ou Enterprise Networks


Rota Padrão

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

  • ip default-gateway

  • ip default-network

  • e ip route 0.0.0.0 0.0.0.0

ip route 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   defina o gateway do último recurso em um roteador. Como com o ip   comando default-network, usando a rota estática para 0.0.0.0 não é   depende de qualquer protocolo de roteamento. No entanto, o roteamento IP deve ser   ativado no roteador.

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

Fonte: Configurando um gateway do último recurso usando comandos de IP


166





Eles não são os mesmos.

127.0.0.1 faz parte da rede 127/8 que é 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 Version 4, o endereço 0.0.0.0 é um   meta-endereço não roteável usado para designar um endereço inválido, desconhecido ou   alvo não aplicável. Para dar um significado especial a um caso contrário   Um dado inválido é uma aplicação da sinalização em banda.

Você pode ter se enganado 0.0.0.0 para 127.0.0.1 quando você olha para o netstat e vê o endereço local escutando como 0.0.0.0, mas esta é uma maneira diferente pela qual 0.0.0.0 é usado.

No contexto de servidores, 0.0.0.0 significa "todos os endereços IPv4 no   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 escuta em 0.0.0.0, ele poderá ser acessado em ambos os IPs.

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

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


101



0.0.0.0 também pode, às vezes, indicar uma transmissão, ou seja, para todos os computadores da rede. - KronoS
@ CronoS Eu pensei que as transmissões são coisas como 255.255.255.255 (ou mais realisticamente algo como 192.168.1.255 para uma rede local) - Nick T
@NickT Ah você é corrigir: 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. - KronoS
@KronoS Você está confundindo o addr 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 forma simples) é a 255 das redes para "transmitir" para todos os endereços nessa rede. - Desorder
Isso é incompleto - muitos sistemas operacionais realmente permitem conectar a 0.0.0.0, que então se comporta como um endereço de loopback. - grawity


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 loopback sub-rede).

127.x.y.z significa "aqui".

0.0.0.0 é totalmente diferente: 0.0.0.0 não é o endereço de nada, é o coringa, como * com casca

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 não é nem mesmo 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 onde um endereço pode ser opcionalmente fornecido, significar Eu não me importo.

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

o bind chamada de sistema é usada para escolher o endereço local de um soquete TCP. Os dados passados ​​para bind é 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.0:0 significa que qualquer IP de qualquer porta é aceitável, é 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 por servidores FTP em conformidade para conexão de dados no modo ativo).

O subsistema TCP / IP escolherá o endereço para o seu lado da conexão TCP se você não escolher uma, 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 ao endereço de destino.

Eu mencionei anteriormente o shell "meta-character" *, mas o poder de combinar meta-personagens com personagens como *foo* (qualquer nome de arquivo contendo "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. Lógica faz não dita que deve ser assim. Você poderia estender a interface com uma linguagem de restrição mais rica.

Precisão:

A sentença 127.x.y.z significa "aqui" não implica que todos esses endereços sejam os mesmos. Eles representam diferentes "localizações" (endereços de soquete), dentro do "computador" local, dentro da pilha de IP local, na verdade.

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


13



Quando eu 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. - whoKnows
@whoKnows Claro. localhost é 127.0.0.1, não 127.16.23.42. - curiousguy
Entendo. Então 127.0.0.1 significa localhost, mas 127.x.y.z poderia significa o computador local, se foi configurado dessa maneira? - whoKnows
@whoKnows No: 127.x.y.z pertence a este computador para qualquer x y z. "localhost" é apenas um nome para 127.0.0.1, então esqueça "localhost". Use o -n ou -d bandeira de netstat e 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 no endereço único não pode ser encontrado no outro endereço. - curiousguy


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


4