
Usar cmd
e ping
no Windows me deu os seguintes resultados:
- Executando ping em "localhost":
- Ping "192.168.0.10" (endereço IP local):
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 /all
tela:
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 localhost
está 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 localhost
usando nslookup
nos 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:
No Editor do Registro, localize e clique na seguinte subchave do registro:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters
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:
No menu Editar, aponte para Novo e clique em Valor DWORD (32 bits).
Digite DisabledComponents e pressione ENTER.
Clique duas vezes em DisabledComponents.
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
0
para ativar todos os componentes IPv6. (Configuração padrão do Windows)- Digite
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 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
0x20
para preferir IPv4 a IPv6 modificando as entradas na tabela de políticas de prefixo.- Digite
0x10
para 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
0x01
para 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
0x11
para desabilitar todas as interfaces IPv6, exceto a interface de loopback IPv6.Reinicie o computador para que esta configuração tenha efeito.
O que é esta tabela de política de prefixo?
netsh interface ipv6 show prefixpolicies
(ouprefixpolicy
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 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.