Utiliser cmd
et ping
sous Windows m'a donné les résultats suivants:
- Ping "localhost":
- Pinging "192.168.0.10" (adresse IP locale):
Les deux situations ne sont-elles pas exactement les mêmes?
Je veux dire, je cingle la même interface, la même machine et la même adresse. Pourquoi ai-je des résultats si différents?
EDIT: Voici mon ipconfig /all
écran:
windows
ip-address
ping
localhost
Diogo
la source
la source
Réponses:
Vous ne lancez pas la même interface , sans aucune interface physique, vous avez toujours un "hôte local".
Votre
localhost
est utilisé pour faire référence à votre ordinateur à partir de son IP "interne", et non à partir de toute adresse IP "externe" de votre ordinateur. Ainsi, les paquets ping ne passent par aucune interface réseau physique; uniquement via une interface virtuelle de bouclage qui envoie directement les paquets d'un port à l'autre sans aucun saut physique.Vous pouvez toujours vous demander pourquoi
localhost
résoudre::1
, alors qu'habituellement, nous nous attendions à ce que ce soit une adresse IPv4127.0.0.1
. Notez qu'il.localhost
s'agit généralement d'un TLD (voir RFC 2606 ) qui pointe vers l'adresse IP de bouclage (pour IPv4, voir RFC 3330 , en particulier 127.0.0.0/8).Levant les yeux
localhost
utilisantnslookup
nous donne:Ainsi, Windows préfère utiliser l'adresse IP de bouclage IPv6
::1
(voir RFC 2373 ), car elle est répertoriée en premier.D'accord, d'où vient-il, examinons le fichier hosts.
Hmm, nous devons examiner les paramètres DNS de Windows.
Cet article de la Base de connaissances décrit un paramètre qui affecte ce que Windows préfère, souligné en gras:
Quelle est cette table de politique de préfixe?
Cette table détermine quels préfixes ont la priorité sur les autres préfixes lors des résolutions DNS.
Alors, en utilisant cette base de connaissances, nous pourrions ajouter ici des entrées indiquant que la priorité IPv4 est supérieure à IPv6.
Remarque: Il n'y a aucune raison de remplacer ce comportement, sauf si vous rencontrez des problèmes de compatibilité. La modification de ce paramètre sur notre serveur Windows a brisé notre serveur de messagerie, il doit donc être manipulé avec précaution ...
la source
The ".localhost" TLD has traditionally been statically defined in host DNS implementations as having an A record pointing to the loop back IP address and is reserved for such use.
Notez l'utilisation deTLD
et la note qui est traditionnellement définie . En fait, desping localhost.
travaux qui confirment que cela est au moins vrai dans le contexte de cette question. Votre dernière phrase est pas ce que le RFC a dit, s'il vous plaît citation si elle ne « l' empêcher de devenir un TLD » parce que par ce qu'il dit , il est traditionnellement un TLD. Sinon, ils ne feraient pas référence àthe .localhost TLD
localhost
peut être un TLD si un serveur DNS réel répond, mais généralement localhost est généralement défini comme un nom d'hôte dans / etc / hosts, dans lequel les noms d'hôte sont recherchés avant toute tentative de résolution via DNS. En tant que tel,dig localhost
il ne retourne généralement pas un enregistrement "A" pour 127.0.0.1, ni un enregistrement AAAA pour:: 1. Cela signifie que la RFC se trompe lorsqu'elle dittraditionally been statically defined in host DNS implementations
, mais qu'elle est plutôt renvoyée par le service de recherche de noms du système, qui n'utilise pas toujours le DNS.nslookup
renvoie des enregistrements. Alors, YMMV ...dig
déclarations enregistrements A, AAAA et NS pourlocalhost
, y compris une notice d'autorité pour:localhost. IN NS localhost.
L’ interface de bouclage existe indépendamment de votre ou vos interfaces Ethernet.
Même sans la complication d' IPv6, vous auriez deux adresses distinctes.
Adresse IPv4 de bouclage : 127.0.0.1
votre interface Ethernet: 192.168.0.10
L’interface de bouclage pourrait bien se trouver dans une couche logicielle différente, plus éloignée du matériel réel. Je doute que cela dépend par exemple de votre pilote d’interface Ethernet spécifique.
la source
Localhost et votre adresse IP ne sont pas la même chose.
Le localhost est une adresse IP uniquement logicielle spéciale, liée à votre système. Localhost, ou 127.0.0.1, est une adresse de bouclage. Il pointe toujours vers votre système et n’est accessible que depuis votre ordinateur. Ce routage se produit au niveau du système d'exploitation et ne quitte définitivement jamais la carte réseau ... Il n'y a donc aucune chance pour qu'il atteigne le réseau ....
Faire un ping avec votre propre adresse IP est similaire, mais implique potentiellement l’ensemble de la pile réseau, car il doit détecter qu’il s’agit bien de votre adresse IP et l’ acheminer correctement ...
L'effet devrait être le même, mais il peut y avoir des différences.
Par exemple, débranchez votre câble réseau. Cinglez votre adresse IP statique. Vous pouvez obtenir aucune route à héberger, ou d'autres erreurs. Ping maintenant localhost ou 127.0.0.1, et cela fonctionnera.
la source
Je réalise à partir des captures d'écran que cette question ne concerne pas Linux, mais elle constitue peut-être un "cas d'école" utile.
Sur cet OS, si vous envoyez une requête ping à l’une de vos adresses d’adaptateur local, elle est traduite dans le périphérique de bouclage (cas particulier). Cela signifie que les paquets vont en réalité au périphérique de bouclage (ce qui a toutes les implications que vous pourriez penser: par exemple, du point de vue du pare-feu, ces paquets arrivent sur l'interface de bouclage et respecteront les règles de cette interface).
Le périphérique auquel l'adresse IP est attribuée ne verra jamais les paquets. (C’est bien parce que cela ne ferait pas le bon choix avec ces paquets: il voudrait faire sortir les ventouses.)
Cependant, si l'interface qui contient cette adresse IP devait tomber en panne, vous avez perdu cette connexion. Le mappage en boucle cessera de fonctionner.
En d’autres termes, c’est une conception viable de considérer ces adresses locales comme des alias du périphérique de bouclage.
Références de code:
http://lxr.linux.no/#linux+v3.3.2/net/ipv4/route.c#L2623
Regardez la fonction
ip_route_output_slow
. Ceci appellefib_lookup
, et si cette fonction retourne le codeRTN_LOCAL
,dev_out
est réécrit en boucle:http://lxr.linux.no/#linux+v3.3.2/net/ipv4/route.c#L2769
la source
Il semble que l'alias "Localhost" résolve le bouclage IPv6 et que vous utilisez explicitement une adresse IPv4, ce n'est évidemment pas le cas.
la source
@ebwhite a raison sur quoi.
Maintenant, la raison pour laquelle vous avez peut-être configuré Teredo (je ne saurais le dire à partir de votre capture d'écran, le transférer dans un fichier texte et coller l'ensemble de la sortie est préférable) - le comportement de localhost en tant qu'IPv6 est conforme aux systèmes de mon Réseau IPv4 uniquement avec teredo installé, mais les systèmes qui en sont dépourvus se comportent comme vous le souhaitez
127.0.0.1
lorsque vous envoyez une commande pinglocalhost
. J'ai testé cela avec Windows XP et j'ai besoin de voir ce que mes systèmes Windows 7 font et de mettre à jour la question.En général, les systèmes par défaut pour IPv6 si IPv6 est disponible donc, votre système fonctionne comme il se doit par la conception .
la source