Por que “127.0.0.1 localhost” é necessário no arquivo HOSTS?

2

Desabilitei todas as minhas conexões de rede e excluí o 127.0.0.1 localhost no arquivo HOSTS, mas não encontrei o que havia quebrado por ele. O meu IIS e o MS SQL Server 2008 R2 continuam a resolver localhost bem

Por que o arquivo HOSTS sempre contém 127.0.0.1 localhost ?
O que eu tinha quebrado, excluindo esta entrada?

Estou no Windows XP Pro SP3 escrevendo aqui ainda sem localhost no arquivo HOSTS.
Devo colocar de volta e com que rapidez?

As razões de interesse são muitas vezes - por exemplo:

------ UPDATE05:

Eu não estou mudando a pergunta! Eu adiciono atualizações. Posso pedir para parar de excluí-la e editá-la até que eu escreva que eu peguei com ela? Por exemplo, agora eu escrevi o mesmo comentário em todos os posts que abordam o mesmo ponto.

Esta é a essência da minha pergunta / dúvida - que o DNS não faz nenhum sentido em relação a "localhost" ou "127.0.0.222" ou "(local)" nomes, sinônimos, aliases, links, endereços, IDs , tokens, o que for.

Eles são centenas de sinônimos para a mesma entidade e são internos e o Windows-es sabe disso sem nenhuma resolução, já que não há sentido em resolver entre tantos sinônimos!

Eles estão relacionados a mecanismos internos do computador, enquanto o DNS é externo (entre vários computadores). Como as identificações internas podem depender das externas?

Todos os Windows (incluindo edições domésticas) terão servidor DNS interno para funcionar? e depois replicá-lo quando / se conectado à rede?

Bem, o link dos comentários não apareceu na seção Linked, como me disseram.

Eu bifurquei uma subquestão infantil: link

    

3 respostas

13

O arquivo hosts apenas associa nomes canônicos ou totalmente qualificados a endereços IP.

Por exemplo, eu poderia ter:

127.0.0.1  moes-bar-and-grill

Em seguida, qualquer coisa que se conecte a moes-bar-and-grill estabeleceria uma conexão com o dispositivo de loopback, também conhecido como 127.0.0.1 , comumente resolvido como localhost .

Eu também poderia ter (e isso é bastante comum)

127.0.0.1  annoying-ad-server.com

As aplicações continuam a funcionar porque elas se conectarão ao 127.0.0.1 (que ainda é uma interface configurada / up) se localhost não resolver.

Não tenho certeza porque você gostaria de desabilitar o endereço de loopback, mas simplesmente tirar localhost do seu arquivo host não vai fazer isso.

Editar

Bem software escrito fará mais de uma tentativa de resolver qualquer coisa (resolvendo em um sentido de contornar problemas, sem trocadilhos) antes que ele simplesmente morra e em alguns casos continuará a funcionar mesmo se as coisas não são como esperadas. Isso não significa que o software funcionará como anunciado, significa apenas que foi escrito por um programador muito defensivo.

Muito defensivo nem sempre significa útil quando se trata de dizer ao usuário que problemas sérios existem, por exemplo, localhost não está resolvendo. Eu posso escrever coisas que passam em testes, não importa o que um usuário faça ao seu sistema, mas isso não faz nada para promover a causa de "Isso não vai funcionar!". Há uma grande diferença entre ele roda e funciona e você só vai explorar a diferença entre os dois ao longo do tempo com cada programa que você executa.

Enquanto tudo parece funcionar, agora, acho que você pode estar se preparando para problemas mais tarde.

Aviso: eu escrevo software para viver.

    
por 20.08.2010 / 15:02
3

O arquivo hosts é um mapeamento entre o endereço IP e o nome do host para que, quando você digitar o nome do host, ele seja resolvido para o endereço especificado.

Ao remover a linha, você está parando o Windows "localhost" e mapeando-o para "127.0.0.1".

Posso pensar em duas razões pelas quais você está vendo "trabalhar".

  1. Você não reinicializou a máquina para que o mapeamento ainda esteja na memória.
  2. Os aplicativos em que você tentou fazer o mapeamento para você.

Desde que o número 2 se aplique, você não precisa dele, mas se você usar um aplicativo que não fez o mapeamento para você, ele falhará.

Então, no final, você deve colocar a linha de volta. No entanto, você não precisa fazer isso com urgência.

    
por 20.08.2010 / 14:57
0

Eu acredito que o Windows-es sabe de cor tanto 127.0.0.1 quanto localhost (e mais sinônimos de si mesmos). E a resposta provavelmente é que nem sequer resolve internamente.

Eu verei após a reinicialização se ele perdeu a capacidade de resolver localhost

Mas por que isso aconteceria?
Qual é o sentido disso?

O MS SQL Server resolve (conecta-se através de) não apenas através de localhost name, mas também através de (local) e . (ponto de símbolo único).

Portanto, localhost é apenas conveniência (para escrever letras em vez de dígitos e pontos).
Conversão de localhost para 127.0.0.1 é bobagem
porque eu nunca ouvi falar que os endereços digitais (números) são resolvidos para nomes a serem usados internamente por computadores.

Agora, posso conectar-me ao MSSQLServer local não apenas por 127.0.0.1 (ou localhost ), mas também por qualquer endereço de 127.0.0. * intervalo (por exemplo, verifiquei agora ter conectado ao MSSQLServer local por meio 127.0.0.2)

Embora, se for assim, WTF esta entrada HOSTS?

Obrigado ao Tim Post por me colocar na direção do pensamento correto e me tirar do tumulto.

    
por 20.08.2010 / 19:06