Como o localhost 127.0.0.1 funciona?


17

Encontrei alguns artigos relacionados a isso, mas eles não foram suficientes para mim. Quero saber como localhostfunciona e por que é o mesmo em muitas máquinas diferentes?

Como o localhostbloqueio do acesso ao site é bloqueado quando o usamos no hostarquivo para bloquear o site?


2
Sinto muito, mas você me perdeu completamente na segunda linha da sua pergunta ... o que você quer dizer?
Windos

11
@Windos, Quando você adiciona uma entrada para o arquivo hosts como "127.0.0.1 www.blah.com" ele redireciona o site para localhost (usado para o trabalho com o IE8 qualquer maneira)
TZUP

Respostas:


23

Não falarei sobre o caso Windows aqui, porque é um pouco diferente, mas digamos o seguinte: Em todo sistema operacional * tipo Unix, você tem dois dispositivos de rede:

  • Um dispositivo de loopback
  • Um dispositivo Ethernet

O primeiro é puramente "virtual". É como um plugue Ethernet que você não pode ver. O segundo tem a ver com a conexão Ethernet no seu computador.

insira a descrição da imagem aqui

O que a interface de loopback faz? Todo tráfego que você enviar para loopback voltará.

Como seu dispositivo Ethernet obtém um endereço IP (por exemplo, 192.168.1.20), o dispositivo de loopback também terá um endereço IP, ou seja, 127.0.0.1. Para facilitar, você também pode acessá-lo localhost.

Se você der uma olhada em um /etc/hostsarquivo Unix típico , verá que 127.0.0.1 está mapeado para "localhost". Portanto, sempre que você digitar "localhost", seu computador saberá chamar 127.0.0.1.

E é por isso que você pode "bloquear" aplicativos. Digamos que você não queira que seu computador envie dados para a Microsoft. Então você poderia simplesmente redirecionar todas as solicitações para microsoft.compara 127.0.0.1. Toda tentativa de contato microsoft.comresultaria em falha.

* todo sistema que realmente possui uma porta Ethernet de hardware


Em 'dows', o subsistema DNS resolverá o host local para 127.0.0.1 e o tráfego para 127.0.0.1 nunca vai para uma interface, a pilha de rede faz um loop na parte traseira (na verdade, é exatamente da mesma maneira que o Unix, mas sem a interface virtual como manifestação do processo).
Jcrawfordor

Embora você possa instalar o Microsoft Loopback Adapter, mas não é exatamente a mesma coisa.
slhck

Atualmente, muitos sistemas operacionais suportam 0.0.0.0, então use isso para bloquear sites. Evita o loop ...
Tamara Wijsman

8

Os endereços IP (Internet Protocol) se enquadram em uma das quatro categorias básicas.

  1. Endereços usados ​​para se comunicar com outros computadores ao redor do mundo,
  2. Endereços usados ​​para se comunicar com computadores dentro de uma empresa ou rede específica,
  3. Endereços usados ​​para transmitir informações entre computadores em uma rede,
  4. Endereços usados ​​para permitir que um computador fale consigo mesmo.

Por contrato, 127.0.0.1 é um daqueles endereços que se enquadram na última dessas categorias.

Como seres humanos, não costumamos lembrar muito bem os números de IP, mas não temos problemas em lembrar nomes como superuser.com, www.google.com e outros nomes semelhantes. Quando a internet era pequena (muito pequena), os seres humanos compartilhavam um arquivo "hosts" com outras pessoas na internet, para que não precisassem se lembrar de números. Esse arquivo de hosts continha pares de um endereço IP e um ou mais nomes de host. Quando alguém tentava acessar um host pelo nome, o software do computador sabia o suficiente para procurar no arquivo de hosts. A Internet cresceu tanto desde então que agora usamos um sistema de nomes de domínio (DNS) para resolver nomes de números IP, além de usar o arquivo de hosts de estilo antigo. A maioria dos computadores é configurada para procurar nomes no arquivo hosts primeiro e depois no DNS, se isso falhar.

Agora que você tem o plano de fundo, veja como funciona (geralmente):

Quando você adiciona essa entrada ao arquivo hosts, sempre que o computador tentar acessar o site www.foo.com, ele tentará acessar esse site no endereço IP 127.0.0.1 porque você disse que esse é o endereço da Internet para www. foo.com. Lembre-se de que o 127.0.0.1 permitirá que um computador se comunique sozinho, ao tentar acessar o 127.0.0.1 no seu navegador, tentará entrar em contato com um servidor da web no seu computador. Se você tivesse inserido o 2.3.4.5 em vez do 127.0.0.1, ele tentaria entrar em contato com o computador no endereço 2.3.4.5 ao abrir www.foo.com.

127.0.0.1 localhost
127.0.0.1 www.foo.com
127.0.0.1 foo.com

O lado ruim de usar o arquivo hosts para coisas assim é que, depois de adicionar uma entrada ao arquivo hosts, você assume a responsabilidade de manter essas informações atualizadas. Se você não inserir a entrada no arquivo hosts, seu computador tentará usar o DNS para procurar o endereço IP e, em seguida, use esse endereço IP para entrar em contato com o servidor.

O bom disso é que se você nunca quiser permitir que alguém fale com www.foo.com apenas pelo nome do host no seu computador, adicionar a entrada ao arquivo do seu host pode (palavra-chave - pode) impedir que isso aconteça. Se o objetivo é impedir a chegada a um site específico por qualquer meio (não apenas pelo nome do host), existem outras maneiras melhores e mais confiáveis ​​de impedir que isso aconteça como o uso adequado de um firewall.


Atualmente, muitos sistemas operacionais suportam 0.0.0.0, então use isso para bloquear sites. Evita o loop ...
Tamara Wijsman

7

Localhost ou 127.0.0.1 é simplesmente um 'nome' incorporado para o seu computador local.

Ou seja, 127.0.0.1 é chamado de "loopback", porque é apenas um ponteiro que aponta de volta para sua máquina. É um endereço IP reservado que também pode ser gravado como localhost por definição.

O objetivo é permitir que se fale com o computador enviando um sinal para fora e depois fazendo um loop para que o sinal também seja lido pelo mesmo computador.

Digamos que você esteja executando um servidor em sua máquina - para acessá-lo, você deve enviar uma solicitação ao servidor (envie um pacote para 127.0.0.1) e seu servidor precisará lê-lo (o sistema volta o pacote para sistema local em 127.0.0.1, que é então lido pelo software do servidor).


5

Descobri uma apresentação no Guia TCP / IP que me pareceu muito esclarecedora:

Normalmente, quando um aplicativo TCP / IP deseja enviar informações, essas informações percorrem as camadas do protocolo até o IP, onde estão encapsuladas em um datagrama IP . Esse datagrama passa para a camada de enlace de dados da rede física do dispositivo para transmissão ao próximo salto, a caminho do destino IP.

No entanto, um intervalo especial de endereços é reservado para a funcionalidade de loopback . Esse é o intervalo 127.0.0.0 a 127.255.255.255. Datagramas de IP enviados por um host para um 127. x . x . O endereço de loopback x não é passado para a camada de enlace de dados para transmissão. Em vez disso, eles retornam ao dispositivo de origem no nível IP. Em essência, isso representa um "curto-circuito" da pilha de protocolos normal; os dados são enviados pela implementação do IP da camada três de um dispositivo e, em seguida, recebidos imediatamente por ele.


Além disso, Rutgers tem um curso de rede que inclui esta ilustração de comunicação normal entre hosts,

comunicação normal entre hosts

e este do fluxo de dados de loopback:

                                                    fluxo de dados de loopback


4

Para a segunda parte da sua pergunta, se você colocar o nome do host de um site no arquivo hosts com o endereço 127.0.0.1, significa que quando você digita o endereço no navegador em vez de usar o DNS para encontrar o endereço correto, ele o encontra no arquivo hosts, primeiro o resolve para localhost e, em vez de ir para o endereço do site, começa a conversar com sua máquina, o que faz com que o site falhe ao carregar.


Atualmente, muitos sistemas operacionais suportam 0.0.0.0, então use isso para bloquear sites. Evita o loop ...
Tamara Wijsman
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.