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
Respostas:
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.
fonte
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.
fonte
127.0.0.1:5000
a um site e192.168.1.104:5000
a outro site. A chave é que issoaddress:port
significa uma sala diferente (serviço) na casa (o computador).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.
fonte