
Die Verwendung von cmd
und ping
unter Windows lieferte mir folgende Ergebnisse:
- Pingen von „localhost“:
- Pingen von „192.168.0.10“ (lokale IP-Adresse):
Sind beide Situationen nicht genau gleich?
Ich meine, ich pinge dieselbe Schnittstelle, dieselbe Maschine und dieselbe Adresse an. Warum erhalte ich so unterschiedliche Ergebnisse?
BEARBEITEN: Hier ist mein ipconfig /all
Bildschirm:
Antwort1
Sie pingen nicht dieselbe Schnittstelle, ohne physische Schnittstellen haben Sie immer noch einen „lokalen Host“.
Ihr localhost
wird verwendet, um von seiner „internen“ IP-Adresse auf Ihren Computer zuzugreifen, nicht von einer „externen“ IP-Adresse Ihres Computers. Die Ping-Pakete passieren also keine physische Netzwerkschnittstelle, sondern nur eine virtuelle Loopback-Schnittstelle, die die Pakete ohne physische Hops direkt von Port zu Port sendet.
Sie fragen sich vielleicht immer noch, warum localhost
sich in auflöst ::1
, obwohl wir normalerweise erwarten würden, dass es sich in die IPv4-Adresse auflöst 127.0.0.1
. Beachten Sie, dass es .localhost
sich traditionell um eine TLD handelt (sieheRFC 2606), die auf die Loopback-IP-Adresse zurückverweist (für IPv4 sieheRFC 3330, insbesondere 127.0.0.0/8).
Die Suche localhost
mit nslookup
ergibt:
nslookup localhost
...
Name: localhost
Addresses: ::1
127.0.0.1
Daher bevorzugt Windows die Verwendung der IPv6-Loopback-IP-Adresse ::1
(sieheRFC 2373), da es zuerst aufgeführt ist.
Okay, also, woher kommt es? Schauen wir uns die Hosts-Datei an.
type %WINDIR%\System32\Drivers\Etc\Hosts
...
# 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.
Dieser KB-Artikelinformiert uns über eine Einstellung, die sich auf die Präferenzen von Windows auswirkt (fett hervorgehoben):
Suchen Sie im Registrierungs-Editor den folgenden Registrierungsunterschlüssel und klicken Sie darauf:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters
Doppelklicken Sie auf DisabledComponents, um den Eintrag DisabledComponents zu ändern.
Hinweis: Wenn der Eintrag DisabledComponents nicht verfügbar ist, müssen Sie ihn erstellen. Gehen Sie hierzu folgendermaßen vor:
Zeigen Sie im Menü „Bearbeiten“ auf „Neu“, und klicken Sie dann auf „DWORD-Wert (32 Bit)“.
Geben Sie DisabledComponents ein, und drücken Sie dann die EINGABETASTE.
Doppelklicken Sie auf DisabledComponents.
Geben Sie einen der folgenden Werte in das Feld „Wertdaten:“ ein, um das IPv6-Protokoll in den gewünschten Zustand zu konfigurieren, und klicken Sie dann auf „OK“:
- Geben Sie ein
0
, um alle IPv6-Komponenten zu aktivieren. (Windows-Standardeinstellung)- Geben Sie diesen Wert ein
0xffffffff
, um alle IPv6-Komponenten außer der IPv6-Loopback-Schnittstelle zu deaktivieren. Dieser Wert konfiguriert Windows außerdem so, dass es Internet Protocol Version 4 (IPv4) gegenüber IPv6 bevorzugt, indem Einträge in der Präfixrichtlinientabelle geändert werden. Weitere Informationen finden Sie unter Auswahl von Quell- und Zieladressen.- Geben Sie an
0x20
, dass IPv4 gegenüber IPv6 bevorzugt werden soll, indem Sie die Einträge in der Präfixrichtlinientabelle ändern.- Geben Sie diesen Wert ein
0x10
, um IPv6 auf allen Nicht-Tunnelschnittstellen (sowohl auf LAN- als auch auf Point-to-Point Protocol [PPP]-Schnittstellen) zu deaktivieren.- Geben Sie diesen Wert ein
0x01
, um IPv6 auf allen Tunnelschnittstellen zu deaktivieren. Dazu gehören Intra-Site Automatic Tunnel Addressing Protocol (ISATAP), 6to4 und Teredo.- Geben Sie ein
0x11
, um alle IPv6-Schnittstellen außer der IPv6-Loopback-Schnittstelle zu deaktivieren.Starten Sie den Computer neu, damit diese Einstellung wirksam wird.
Was ist diese Präfixrichtlinientabelle?
netsh interface ipv6 show prefixpolicies
(oderprefixpolicy
auf 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 entscheidet, welche Präfixe bei DNS-Auflösungen Vorrang vor anderen Präfixen erhalten.
Ah, also mithilfe dieses KB könnten wir hier Einträge hinzufügen, die darauf hinweisen, dass IPv4 eine höhere Priorität als IPv6 hat.
Notiz:Es gibt keinen Grund, dieses Verhalten zu überschreiben, es sei denn, Sie haben Kompatibilitätsprobleme. Das Ändern dieser Einstellung auf unserem Windows-Server hat unseren Mailserver beschädigt, daher sollte dies mit Vorsicht gehandhabt werden ...
Antwort2
DerLoopback-Schnittstelleexistiert unabhängig von Ihrer/n Ethernet-Schnittstelle(n).
Auch ohne die Komplikation vonIPv6Sie hätten zwei unterschiedliche Adressen.
SchleifeIPv4Adresse: 127.0.0.1
Die IPv4-Adresse Ihrer Ethernet-Schnittstelle: 192.168.0.10
Die Loopback-Schnittstelle könnte sich durchaus in einer anderen Softwareschicht befinden, weiter von der tatsächlichen Hardware entfernt. Ich bezweifle, dass es beispielsweise in irgendeiner Weise von Ihrem spezifischen Ethernet-Schnittstellentreiber abhängt.
Antwort3
Localhost und Ihre IP-Adresse sind nicht dasselbe.
Der Localhost ist eine spezielle, nur für Software verfügbare IP-Adresse, die mit Ihrem System verknüpft ist. Localhost oder 127.0.0.1 ist eine Loopback-Adresse. Sie zeigt immer auf Ihr System und ist nur von Ihrem Computer aus zugänglich. Dieses Routing erfolgt auf Betriebssystemebene und verlässt definitiv nie die Netzwerkkarte. Es besteht also keine Chance, dass es das Netzwerk erreicht.
Das Pingen Ihrer eigenen IP-Adresse ist ähnlich, betrifft aber möglicherweise den gesamten Netzwerk-Stack, da erkannt werden muss, dass es sich um Ihre IP-Adresse handelt, undLeiten Sie es richtig...
Die Wirkung sollte die gleiche sein, es können jedoch Unterschiede bestehen.
Ziehen Sie beispielsweise Ihr Netzwerkkabel ab. Pingen Sie Ihre statische IP-Adresse. Möglicherweise erhalten Sie keine Route zum Host oder andere Fehler. Pingen Sie nun localhost oder 127.0.0.1 an, und es wird funktionieren.
Antwort4
Es sieht so aus, als würde der Alias „Localhost“ in den IPv6-Loopback aufgelöst, was bei der expliziten Verwendung einer IPv4-Adresse offensichtlich nicht der Fall ist.