Pagina inicial » como » Qual é a diferença entre o Locahost e o endereço IP local?

    Qual é a diferença entre o Locahost e o endereço IP local?


    Se você está fazendo muitos ajustes na rede, configurando aplicativos baseados em LAN e ferramentas de servidor, ou apenas curioso, você provavelmente notou que há uma diferença entre o localhost e o endereço IP local. Leia para aprender as diferenças.

    A sessão de perguntas e respostas de hoje nos é oferecida por cortesia do SuperUser - uma subdivisão do Stack Exchange, um agrupamento de sites de perguntas e respostas conduzido pela comunidade..

    A questão

    Leitor de SuperUsuários O Diogo quer saber porque o comando ping trata o localhost e o endereço IP local de forma diferente quando, na superfície, parecem ser a mesma coisa:

    Usando cmd e ping no Windows me deu os seguintes resultados:

    Pingando “localhost”:

    Ping “192.168.0.10” (endereço IP local):

    Ambas as situações não são exatamente as mesmas?

    Quer dizer, estou pingando a mesma interface, a mesma máquina e o mesmo endereço. Por que obtenho resultados tão diferentes?

    Obviamente, há uma diferença de algum tipo, mas o que exatamente está acontecendo quando você alterna entre os dois?

    A resposta

    O colaborador do SuperUser, Tom Wijsman, oferece a seguinte percepção das sutis diferenças entre os dois:

    Você não está pingando a mesma interface, sem interfaces físicas você ainda tem um "host local".

    Seu localhost é usado para se referir ao seu computador a partir do seu IP "interno", e não de qualquer IP "externo" do seu computador. Assim, os pacotes de ping não passam por nenhuma interface de rede física; somente através de uma interface de loop back virtual que envia diretamente os pacotes de porta a porta sem nenhum salto físico.

    Você ainda pode se perguntar por que localhost está resolvendo :: 1, enquanto tradicionalmente esperávamos resolver para o endereço IPv4 127.0.0.1. Observe que .localhost é tradicionalmente um TLD (consulte RFC 2606) que aponta para o endereço IP de retorno (para IPv4, consulte RFC 3330, especialmente 127.0.0.0/8).

    Olhando pra cima localhost usando nslookup nos dá:

    nslookup localhost

    … Nome: localhost Endereços: :: 1 127.0.0.1 

    Assim, o Windows prefere usar o endereço IP de loop back IPv6 :: 1 (veja RFC 2373) como está listado primeiro.

    Ok, então, de onde vem, vamos olhar para o arquivo hosts.

    tipo% WINDIR% \ System32 \ Drivers \ Etc \ Hosts

    … # Resolução de nome localhost é tratada no próprio DNS. # 127.0.0.1 localhost # :: 1 localhost… 

    Hmm, temos que olhar para as configurações de DNS do Windows.

    Este artigo da KB nos informa sobre uma configuração que afeta o que o Windows prefere, enfatizada em negrito:

    1. No Editor do Registro, localize e clique na seguinte subchave do Registro:
      HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ Tcpip6 \ Parameters 
    2. Clique duas vezes em DisabledComponents para modificar a entrada DisabledComponents.Nota: Se a entrada DisabledComponents não estiver disponível, você deverá criá-la. Para fazer isso, siga estas etapas:
      1. No menu Editar, aponte para Novo e clique em Valor DWORD (32 bits)..
      2. Digite DisabledComponents e pressione ENTER.
      3. Clique duas vezes em DisabledComponents..
    3. Digite qualquer um dos seguintes valores no campo Dados do valor: para configurar o protocolo IPv6 para o estado desejado e clique em OK:
      • Tipo 0 para habilitar todos os componentes IPv6. (Configuração padrão do Windows)
      • Tipo 0xffffffff para desabilitar todos os componentes IPv6, exceto a interface de loopback IPv6. Esse valor também configura o Windows para preferir usar o Protocolo da Internet versão 4 (IPv4) sobre o IPv6, modificando as entradas na tabela de diretivas de prefixo. Para obter mais informações, consulte Seleção de endereço de origem e destino.
      • Tipo 0x20 preferir o IPv4 ao IPv6 modificando entradas na tabela de diretivas de prefixo.
      • Tipo 0x10 para desabilitar o IPv6 em todas as interfaces do nontunnel (nas interfaces LAN e PPP [Point-to-Point Protocol]).
      • Tipo 0x01 para desabilitar o IPv6 em todas as interfaces de túnel. Estes incluem o protocolo ISATAP (Intrast-Site Automatic Tunnel Addressing Protocol), 6to4 e Teredo..
      • Tipo 0x11 Desabilitar todas as interfaces IPv6, exceto a interface de loopback IPv6.
    4. Reinicie o computador para que esta configuração entre em vigor.

    O que é essa tabela de diretivas de prefixo?

    netsh interface ipv6 show prefixpolicies (ou prefixpolicy em versões anteriores)

    Precedence Label Prefix ---------- ----- -------------------------------- 50 0 :: 1/128 45 13 fc00 :: / 7 40 1 :: / 0 10 4 :: ffff: 0: 0/96 7 14 2002 :: / 16 5 5 2001 :: / 32 1 11 fec0 :: / 10 1 12 3fre :: / 16 1 10 :: / 96 

    Esta tabela decide quais prefixos têm precedência sobre outros prefixos durante as resoluções de DNS.

    Ah, então usando essa KB nós poderíamos adicionar entradas aqui que denotam que o IPv4 tem precedência mais alta que o IPv6.

    Nota: Não há razão para substituir esse comportamento, a menos que você esteja tendo problemas de compatibilidade. Mudar esta configuração no nosso Windows Server quebrou o nosso servidor de e-mail, por isso deve ser manuseado com cuidado…

    Não há nada que gostemos mais do que uma resposta completa e informativa com os documentos de suporte vinculados para poupar. Claramente, o localhost e o endereço IP local são entidades distintas, servem a propósitos diferentes e agora todos sabemos por que.


    Tem algo a acrescentar à explicação? Soe fora nos comentários. Quer ler mais respostas de outros usuários do Stack Exchange com experiência em tecnologia? Confira o tópico de discussão completo aqui.