Diferença entre o host local e o endereço IP


16

Se vincular um soquete no Python ao localhost, 8200, isso poderá ser acessado via http: // localhost: 8200 / . mas não http: // xxxx: 8200 /

Se vincular um soquete no Python a xxxx, 8200, machinename, 8200, isso poderá ser acessado via http: // xxxx: 8200 / e http: // machinename: 8200 / , mas não http: // localhost: 8200 /

Eu pensei que localhost significava 'esta máquina', e que usá-lo seria 'voltar' para o endereço IP da máquina, mas parece ser ips diferente.

127.0.0.1 é sempre um endereço IP diferente do endereço IP da máquina?

atualizar:

Entendo que os números reais são diferentes, mas o que o loopback faz?

Por exemplo wikepedia diz que
'apontar um navegador para os URLs http://127.0.0.1/ ou http: // localhost / acessará o próprio site desse computador'

mas esse site também estará acessível em xxxx e, presumivelmente, será configurado com um soquete em xxxx. Então, como funcionam as duas referências?

conclusão:

Acho que finalmente entendi que 127.0.0.1 e xxxx funcionam assim

--127.0.0.1 ==\
               >- Computer
--x.x.x.x   ==/

e não

--127.0.0.1 ==\
--------------- x.x.x.x >- Computer

ou

--x.x.x.x ==\
--------------- 127.0.0.1 >- Computer

Obrigado a todos pela ajuda


11
você escreveu "é 127.0.0.1 sempre um endereço IP diferente do endereço IP da máquina". Os números entre os pontos são diferentes, ou seja, um endereço IP diferente. Que pergunta estranha você faz. Se pelo endereço IP da máquina, você quer dizer algo diferente de 127.0.0.1, então sim, seria um endereço IP diferente. E se o que você chama de endereço IP da sua máquina é 192.168.0.1 (ou algum outro intervalo local padrão), não precisa ter medo de dizer isso. Você pode escrevê-lo em vez de xxxx. Esse endereço 192 não existirá na internet.
Barlop #

As referências para os dois funcionam devido à forma como o servidor da web está configurado. Você pode dizer ao servidor para vincular a todos os endereços ou apenas ouvir em endereços específicos. Como o Loopback e o IP real são endereços distintos, a configuração está determinando em qual IP escutar. Como localhost é apenas uma entrada de hosts para 127.0.0.1, ele só funcionará quando o servidor da Web estiver vinculado a 127.0.0.1.
7288 peelman

Respostas:


17

Para responder sua pergunta.

127.0.0.1 não é apenas um endereço IP diferente do endereço IP da máquina, é também uma interface diferente. 127.0.0.1 não deve ser visto na rede local. É um endereço IP interno especial para o adaptador de loopback.

xxxx será sua placa ethernet.

A propósito, 'localhost' é simplesmente uma entrada no arquivo hosts que aponta para 127.0.0.1

Se você vincular um soquete a 127.0.0.1:8200, somente os clientes em execução local poderão acessá-lo e apenas com http://127.0.0.1:8200 ou http: // localhost: 8200 (ou uma entrada de arquivo dns ou hosts que aponta para 127.0.0.1).

Um soquete vinculado a xxxx: 8200 estará disponível apenas através de http: // xxxx: 8200 ou em uma entrada de arquivo dns ou hosts que aponte para isso.

A ligação de um soquete ao 127.0.0.1 não o torna automaticamente disponível também na interface Ethernet.

É por isso que você não pode se conectar ao xxxx: 8200

Você pode ligar a porta 8200 a todas as interfaces disponíveis (0.0.0.0), pois ela deve funcionar.


Então, o que o bit 'loopback' faz? O que ele faz loopback? Eu pensei que era uma maneira de referenciar o endereço IP da máquina, o que quer que fosse 'ie 127.0.0.1 => xxxx
David

11
A interface de loopback é uma interface virtual. É frequentemente usado para permitir que os programas se comuniquem na mesma máquina. Não é uma maneira de fazer referência ao endereço IP da máquina. 127.0.0.1 É o endereço IP do adaptador virtual de loopback.
Matt H

11
A outra coisa sobre o adaptador de loopback é que, por ser virtual, ele realmente não passa nenhum pacote para a placa de rede.
Matt H

11
literalmente desperdiçou 4 horas sem entender esse conceito ... aparentemente alguns servidores da Web se ligam automaticamente a xxxx e 127.0.0.1 para você, o que gera confusão. Ótima pergunta e resposta pessoal. Thx =)
jrhee17

3

Por exemplo, a wikepedia diz que 'apontar um navegador para os URLs http://127.0.0.1/ ou http: // localhost / acessará o próprio site desse computador'

Ligeiramente impreciso. ele pode fazê-lo. Igualmente bem, ele pode não exibir nenhum site e é possível exibir um site interno diferente do que você obtém ao usar seu endereço xxxx.

127.0.0.1 aponta para sua própria máquina, mas isso não significa que ele se comportará da mesma maneira quando chegar à sua máquina

Se você quer uma analogia não técnica, pode considerá-las portas diferentes da sua casa.

Os dois estão apontando para a mesma casa, mas não são a mesma coisa. É possível que cada porta o leve para a mesma sala ou eles podem levá-lo para uma sala diferente. Também é possível trancar uma porta e não a outra.

Ao configurar um site, você especifica quais endereços vincular e, com frequência, a resposta é todos os endereços. (Isso é equivalente a ter todas as portas levando você para o quarto)

Você também pode especificar o site para vincular a apenas um endereço. (Isso é equivalente a trancar todas as portas, exceto uma.)

Se você tiver dois (ou mais) sites, poderá vinculá-los a endereços separados. (Isso é equivalente a ter cada porta entrando em salas separadas).

Um exemplo de como ambas as referências funcionam, meu computador com Windows 7 tem o IIS instalado. Quando entro no Gerenciador do IIS e clico com o botão direito do mouse no Site Padrão, ele fornece a opção de menu 'Editar Ligações'. Seleção que traz uma lista de ligações. Eu tenho apenas um, mas para o endereço IP, ele possui *, o que significa que o IIS escuta em todos os meus endereços IP.


Ótima analogia! Muito obrigado! Acabei de fazer um julgamento. Liguei-me com sucesso 127.0.0.1:5000a um site e 192.168.1.104:5000a outro site. A chave é que isso address:portsignifica uma sala diferente (serviço) na casa (o computador).
Rick

1

Cada endereço IP no sistema é independente e pode ser vinculado por soquetes separadamente, com exceção do endereço especial 0.0.0.0, que indica ao sistema operacional para vincular o soquete a todas as interfaces.


11
Mas 127.0.0.1 também é um endereço especial, como a escolha mais comum para a interface de loopback. A que esse endereço se volta?
David

Isso não o torna "especial", apenas o torna "um endereço na interface de loopback" (a menos que você diga "todo endereço é especial à sua maneira", mas não vamos lá). É a interface que faz o loop, não o endereço.
Ignacio Vazquez-Abrams
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.