Por que existe uma diferença entre ping “localhost” e ping “endereço IP local”?

Por que existe uma diferença entre ping “localhost” e ping “endereço IP local”?

Usar cmde pingno Windows me deu os seguintes resultados:

  • Executando ping em "localhost":

Insira a descrição da imagem aqui

  • Ping "192.168.0.10" (endereço IP local):

Insira a descrição da imagem aqui

As duas situações não são exatamente iguais?

Quer dizer, estou executando ping na mesma interface, na mesma máquina e no mesmo endereço. Por que obtenho resultados tão diferentes?

EDIT: Aqui está minha ipconfig /alltela:

Insira a descrição da imagem aqui

Responder1

Você não está executando ping na mesma interface, sem nenhuma interface física você ainda terá um "host local".

Your localhosté usado para se referir ao seu computador a partir de 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 estar se perguntando por que localhostestá resolvendo para ::1, embora tradicionalmente esperaríamos que ele resolvesse para o endereço IPv4 127.0.0.1. Observe que .localhosté tradicionalmente um TLD (vejaRFC 2606) que aponta de volta para o endereço IP de loopback (para IPv4, consulteRFC 3330, especialmente 127.0.0.0/8).

Procurar localhostusando nslookupnos dá:

nslookup localhost

...
Name:    localhost
Addresses:  ::1
          127.0.0.1

Assim, o Windows prefere usar o endereço IP de loopback IPv6 ::1(consulteRFC 2373) pois está listado primeiro.

Ok, então, de onde isso vem, vamos dar uma olhada no arquivo hosts.

type %WINDIR%\System32\Drivers\Etc\Hosts

...
# localhost name resolution is handled within DNS itself.
#       127.0.0.1       localhost
#       ::1             localhost
...

Hmm, temos que dar uma olhada nas configurações de DNS do Windows.

Este artigo da base de conhecimentonos fala 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:

    • Digite 0para ativar todos os componentes IPv6. (Configuração padrão do Windows)
    • Digite 0xffffffffpara desabilitar todos os componentes IPv6, exceto a interface de loopback IPv6. Esse valor também configura o Windows para preferir usar o Protocolo de Internet versão 4 (IPv4) em vez de IPv6, modificando as entradas na tabela de políticas de prefixo. Para obter mais informações, consulte Seleção de endereço de origem e destino.
    • Digite 0x20para preferir IPv4 a IPv6 modificando as entradas na tabela de políticas de prefixo.
    • Digite 0x10para desativar o IPv6 em todas as interfaces que não sejam de túnel (nas interfaces LAN e de protocolo ponto a ponto [PPP]).
    • Digite 0x01para desativar o IPv6 em todas as interfaces de túnel. Isso inclui Protocolo de endereçamento automático de túnel intra-site (ISATAP), 6to4 e Teredo.
    • Digite 0x11para desabilitar todas as interfaces IPv6, exceto a interface de loopback IPv6.
  4. Reinicie o computador para que esta configuração tenha efeito.

O que é esta tabela de política de prefixo?

netsh interface ipv6 show prefixpolicies(ou prefixpolicyem 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  3ffe::/16
         1     10  ::/96

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

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

Observação:Não há razão para substituir esse comportamento, a menos que você esteja enfrentando problemas de compatibilidade. Alterar essa configuração em nosso Windows Server danificou nosso servidor de e-mail, por isso deve ser tratado com cuidado...

Responder2

Ointerface de loopbackexiste independentemente da(s) sua(s) interface(s) Ethernet.

Mesmo sem a complicaçãoIPv6você teria dois endereços distintos.

LoopbackIPv4endereço: 127.0.0.1
Endereço IPv4 da sua interface Ethernet: 192.168.0.10

A interface de loopback pode estar em uma camada de software diferente, mais remota do hardware real. Duvido que dependa de alguma forma do seu driver de interface Ethernet específico, por exemplo.

Responder3

Localhost e seu endereço IP não são a mesma coisa.

O localhost é um endereço IP exclusivo de software especial, que está vinculado ao seu sistema. Localhost, ou 127.0.0.1, é um endereço de loopback. Ele sempre aponta para o seu sistema e só pode ser acessado no seu computador. Esse roteamento ocorre no nível do sistema operacional e definitivamente nunca sai da NIC... Portanto, não há chance de atingir a rede....

Fazer ping no seu próprio endereço IP é semelhante, mas potencialmente envolve toda a pilha de rede, pois precisa detectar que é o seu endereço IP eencaminhe-o corretamente...

O efeito deve ser o mesmo, mas pode haver diferenças.

Por exemplo, desconecte o cabo de rede. Faça ping em seu endereço IP estático. Você pode não obter rota para o host ou outros erros. Agora execute ping em localhost ou 127.0.0.1 e funcionará.

Responder4

Parece que o alias "Localhost" está resolvendo o loopback IPv6 e quando você usa explicitamente um endereço IPv4, obviamente isso não acontece.

informação relacionada