Différence entre localhost et l'adresse IP


16

Si vous liez un socket en Python à localhost, 8200, cela est accessible via http: // localhost: 8200 / . mais pas http: // xxxx: 8200 /

Si vous liez un socket en Python à xxxx, 8200, machinename, 8200, cela est accessible via http: // xxxx: 8200 / et http: // machinename: 8200 / , mais pas http: // localhost: 8200 /

Je pensais que localhost signifiait «cette machine», et que son utilisation «rebouclerait» à l'adresse IP de la machine, mais il semble que ce soit des ips différents.

127.0.0.1 est-il toujours une adresse IP différente de l'adresse IP des machines?

mise à jour:

Je comprends que les chiffres réels sont différents, mais que fait le bouclage?

Par exemple, wikepedia dit que «pointer un navigateur Web vers les URL http://127.0.0.1/ ou http: // localhost / accédera au propre site Web de cet ordinateur»

mais ce site Web sera également accessible sur xxxx, et sera vraisemblablement mis en place avec une seule prise sur xxxx. Alors, comment fonctionnent les deux références?

conclusion:

Je pense que je comprends enfin que 127.0.0.1 et xxxx fonctionnent comme ça

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

et pas

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

ou

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

Merci à tous pour l'aide


1
vous avez écrit "est 127.0.0.1 toujours une adresse IP différente de l'adresse IP de la machine". Les nombres entre les points sont différents, c'est-à-dire une adresse IP différente. Quelle question étrange vous posez. Si par adresse IP de la machine, vous voulez dire autre chose que 127.0.0.1 alors oui, ce serait une adresse IP différente. Et si ce que vous appelez l'adresse IP de votre machine est 192.168.0.1 (ou une autre plage locale standard), vous n'avez pas à avoir peur de le dire. Vous pouvez l'écrire au lieu de xxxx. Cette adresse 192 n'existera pas de toute façon sur Internet.
barlop

Les références pour les deux fonctionnent en raison de la configuration du serveur Web. Vous pouvez dire au serveur de se lier à toutes les adresses ou d'écouter uniquement certaines. Étant donné que le bouclage et l'IP réelle sont des adresses distinctes, la configuration détermine sur quelle IP écouter. Étant donné que localhost n'est qu'une entrée d'hôtes pour 127.0.0.1, cela ne fonctionnera que lorsque le serveur Web sera lié à 127.0.0.1.
peelman

Réponses:


17

Pour répondre à ta question.

127.0.0.1 n'est pas seulement une adresse IP différente de l'adresse IP de la machine, c'est aussi une interface différente. 127.0.0.1 ne devrait pas être vu sur le réseau local. Il s'agit d'une adresse IP interne spéciale pour l'adaptateur de bouclage.

xxxx sera votre carte Ethernet.

par la façon dont «localhost» est simplement une entrée dans votre fichier d'hôtes qui pointe vers 127.0.0.1

Si vous liez un socket à 127.0.0.1:8200, seuls les clients s'exécutant localement pourront y accéder et uniquement avec http://127.0.0.1:8200 ou http: // localhost: 8200 (ou une entrée de fichier dns ou hosts qui pointe vers 127.0.0.1).

Un socket lié à xxxx: 8200 sera uniquement disponible via http: // xxxx: 8200 ou une entrée de fichier dns ou hosts qui pointe vers cela.

La liaison d'un socket à 127.0.0.1 ne le rend pas automatiquement disponible sur l'interface Ethernet également.

C'est pourquoi vous ne pouvez pas vous connecter à xxxx: 8200

Vous pouvez lier le port 8200 à toutes les interfaces disponibles (0.0.0.0), alors cela devrait fonctionner.


Alors, que fait le bit «loopback»? À quoi est-il renvoyé? Je pensais que c'était un moyen de référencer l'adresse IP de la machine, quelle qu'elle soit 'ie 127.0.0.1 => xxxx
David

1
L'interface de bouclage est une interface virtuelle. Il est souvent utilisé pour permettre aux programmes de se parler sur la même machine. Ce n'est pas un moyen de référencer l'adresse IP de la machine. 127.0.0.1 EST l'adresse IP de l'adaptateur virtuel de bouclage.
Matt H

1
L'autre chose à propos de l'adaptateur de bouclage est que, parce qu'il est virtuel, il ne transmet aucun paquet à la carte réseau.
Matt H

1
littéralement gaspillé 4 heures sans comprendre ce concept ... apparemment, certains serveurs Web se lient automatiquement à xxxx et 127.0.0.1 pour vous, ce qui suscite la confusion. Grands gars de questions et réponses. Thx =)
jrhee17

3

Par exemple, wikepedia dit que «pointer un navigateur Web vers les URL http://127.0.0.1/ ou http: // localhost / accédera au propre site Web de cet ordinateur»

Légèrement inexact. Il peut le faire. De même, il peut ne pas afficher de site Web et il est même possible d'afficher un site Web interne différent de celui que vous obtenez lorsque vous utilisez votre adresse xxxx.

127.0.0.1 pointe vers votre propre machine, mais cela ne signifie pas qu'elle se comportera de la même manière lorsqu'elle atteindra votre machine

Si vous voulez une analogie non technique, vous pouvez les considérer comme des portes différentes dans votre maison.

Ils pointent tous les deux vers la même maison mais ce n'est pas la même chose. Il est possible pour chaque porte de vous emmener dans la même pièce ou ils pourraient vous emmener dans une pièce différente. Il est également possible de verrouiller une porte et non l'autre.

Lorsque vous configurez un site Web, vous spécifiez les adresses auxquelles se lier et, bien souvent, la réponse est toutes les adresses. (Cela équivaut à ce que toutes les portes vous emmènent dans la même pièce)

Vous pouvez également spécifier le site Web à lier à une seule adresse. (Cela revient à verrouiller toutes les portes sauf une.)

Si vous avez deux (ou plus) sites Web, vous pouvez les lier à des adresses distinctes. (Cela équivaut à avoir chaque porte allant dans des pièces séparées).

Un exemple du fonctionnement des deux références, IIS est installé sur mon ordinateur Windows 7, lorsque je vais dans le Gestionnaire IIS et que je fais un clic droit sur le site Web par défaut, cela me donne une option de menu «Modifier les liaisons». La sélection qui fait apparaître une liste de liaisons. Je n'en ai qu'une, mais pour l'adresse IP, elle a *, ce qui signifie que IIS écoute toutes mes adresses IP.


Grande analogie! Merci beaucoup ! Je viens de faire un essai. J'ai réussi à me lier 127.0.0.1:5000à un site Web et 192.168.1.104:5000à un autre site. La clé est que cela address:portsignifie une autre pièce (service) dans la maison (l'ordinateur).
Rick

1

Chaque adresse IP du système est indépendante et peut être liée par des sockets séparément, à l'exception de l'adresse spéciale 0.0.0.0 qui indique au système d'exploitation de lier le socket à toutes les interfaces.


1
Mais 127.0.0.1 est également une adresse spéciale, comme choix le plus courant pour l'interface de bouclage. À quoi cette adresse renvoie-t-elle?
David

Cela ne le rend pas "spécial", cela en fait juste "une adresse sur l'interface de bouclage" (à moins que vous ne disiez "chaque adresse est spéciale à sa manière", mais n'y allons pas). C'est l'interface qui fait le bouclage, pas l'adresse.
Ignacio Vazquez-Abrams
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.