Wenn Sie häufig im Netzwerk basteln, LAN-basierte Apps und Server-Tools konfigurieren oder einfach nur neugierig sind, haben Sie wahrscheinlich bemerkt, dass es einen Unterschied zwischen dem lokalen Host und der lokalen IP-Adresse gibt. Lesen Sie weiter, um die Unterschiede zu erfahren.

Die heutige Question & Answer-Sitzung wird von SuperUser zur Verfügung gestellt - einer Unterteilung von Stack Exchange, einer Community-basierten Gruppierung von Q & A-Websites.

Die Frage

SuperUser-Leser Diogo möchte wissen, warum der Ping-Befehl den localhost und die lokale IP-Adresse unterschiedlich behandelt, wenn sie äußerlich gleich aussehen:

Using cmd and ping on Windows gave me the following results:

Pinging “localhost”:

Pinging “192.168.0.10” (local IP address):

Aren’t both situations exactly the same?

I mean, I’m pinging the same interface, the same machine and the same address. Why do I get such different results?

Offensichtlich gibt es einen Unterschied, aber was genau passiert, wenn Sie zwischen den beiden wechseln?

Die Antwort

Der Superuser-Mitwirkende Tom Wijsman bietet folgende Einblicke in die subtilen Unterschiede zwischen den beiden:

You are not pinging the same interface, without any physical interfaces you still have a “local host”.

Your localhost wird verwendet, um auf Ihren Computer von seiner „internen“ IP-Adresse zu verweisen, nicht von einer „externen“ IP-Adresse Ihres Computers. Die Ping-Pakete durchlaufen also keine physische Netzwerkschnittstelle. Nur über eine virtuelle Loop-Back-Schnittstelle, die die Pakete direkt von Port zu Port ohne physische Sprünge sendet.

Sie fragen sich vielleicht immer noch warumlocalhost löst sich auf::1Wir erwarten normalerweise, dass die IPv4-Adresse aufgelöst wird127.0.0.1. Beachten Sie, dass.localhost ist traditionell eine TLD (siehe RFC 2606), die zurück auf die IP-Adresse des Loopbacks zeigt (für IPv4 siehe RFC 3330, insbesondere 127.0.0.0/8).

Hoch schauenlocalhost mitnslookup gibt uns:

nslookup localhost

... Name: localhost Addresses: ::1 127.0.0.1

Daher zieht Windows es vor, die IPv6-Loop-IP-Adresse zu verwenden::1 (siehe RFC 2373), da es zuerst aufgeführt wird.

Okay, also woher kommt es? Schauen wir uns die hosts-Datei an.

type %WINDIR%System32DriversEtcHosts

... # localhost name resolution is handled within DNS itself. # 127.0.0.1 localhost # ::1 localhost ...

Hmm, wir müssen uns die DNS-Einstellungen von Windows ansehen.

In diesem KB-Artikel erfahren Sie eine Einstellung, die sich auf die von Windows bevorzugten Einstellungen auswirkt, die fett hervorgehoben sind:

  1. Suchen Sie im Registrierungs-Editor den folgenden Registrierungsunterschlüssel, und klicken Sie darauf: HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesTcpip6Parameters
  2. Doppelklicken Sie auf DisabledComponents, um den Eintrag DisabledComponents zu ändern. Hinweis: Wenn der Eintrag DisabledComponents nicht verfügbar ist, müssen Sie ihn erstellen. Führen Sie dazu die folgenden Schritte aus:
    1. Zeigen Sie im Menü Bearbeiten auf Neu, und klicken Sie dann auf DWORD-Wert (32-Bit).
    2. Typ DisabledComponents, Und die EINGABETASTE dann drückt.
    3. Doppelklicken Sie auf DisabledComponents.
  3. Geben Sie einen der folgenden Werte in das Feld Wert ein:, um das IPv6-Protokoll auf den gewünschten Status zu konfigurieren, und klicken Sie dann auf OK:
    • Art0 um alle IPv6-Komponenten zu aktivieren. (Windows-Standardeinstellung)
    • Art0xffffffff Deaktivieren aller IPv6-Komponenten mit Ausnahme der IPv6-Loopback-Schnittstelle. Mit diesem Wert wird auch Windows so konfiguriert, dass die Verwendung von Internet Protocol Version 4 (IPv4) gegenüber IPv6 bevorzugt wird, indem Einträge in der Präfix-Richtlinientabelle geändert werden. Weitere Informationen finden Sie unter Auswahl der Quell- und Zieladresse.
    • Art0x20 IPv4 gegenüber IPv6 vorziehen, indem Einträge in der Präfix-Richtlinientabelle geändert werden.
    • Art0x10 Deaktivieren von IPv6 für alle Nichttunnel-Schnittstellen (sowohl für LAN- als auch für Punkt-zu-Punkt-Protokoll-Schnittstellen (PPP)).
    • Art0x01 Deaktivieren Sie IPv6 für alle Tunnelschnittstellen. Dazu gehören das ISATAP-Protokoll (ISATAP), 6to4 und Teredo.
    • Art0x11 Deaktivieren aller IPv6-Schnittstellen mit Ausnahme der IPv6-Loopback-Schnittstelle.
  4. Starten Sie den Computer neu, damit diese Einstellung wirksam wird.

Was ist diese Präfix-Richtlinientabelle?

netsh interface ipv6 show prefixpolicies (oderprefixpolicy in früheren Versionen)

Precedence Label Prefix ---------- ----- -------------------------------- 50 0 ::1/128 45 13 fc00::/7 40 1 ::/0 10 4 ::ffff:0:0/96 7 14 2002::/16 5 5 2001::/32 1 11 fec0::/10 1 12 3ffe::/16 1 10 ::/96

Diese Tabelle legt fest, welche Präfixe bei der DNS-Auflösung Vorrang vor anderen Präfixen erhalten.

Mit dieser KB könnten wir hier Einträge hinzufügen, die angeben, dass IPv4 eine höhere Priorität als IPv6 hat.

Hinweis: Es gibt keinen Grund, dieses Verhalten zu überschreiben, es sei denn, Sie haben kompatible Probleme. Wenn Sie diese Einstellung auf unserem Windows Server ändern, ist unser Mail-Server beschädigt worden.

Es gibt nichts, was wir mehr als eine gründliche und informative Antwort mit verknüpften Support-Dokumenten wünschen. Der localhost und die lokale IP-Adresse sind eindeutig unterschiedliche Entitäten und dienen unterschiedlichen Zwecken. Jetzt wissen wir alle, warum.


Haben Sie etwas zur Erklärung hinzuzufügen? Ton aus in den Kommentaren. Möchten Sie mehr Antworten von anderen technisch versierten Stack Exchange-Benutzern lesen? Hier geht es zum vollständigen Diskussionsthread.

Top-Tipps:
Kommentare: