Was ist der Unterschied zwischen 127.0.0.1 und 0.0.0.0?

234

Ich verstehe, dass 127.0.0.1 auf verweist localhost, und auch 0.0.0.0 (korrigieren Sie mich, wenn ich falsch liege). Was ist der Unterschied zwischen 127.0.0.1 und 0.0.0.0?

Sagnik Sarkar
quelle
1
Möglicherweise interessiert Sie diese Chrome-Bug-Tracker-Diskussion darüber, wie Sie mit der 0.0.0.0Adresseingabe umgehen .
Jeremy Banks
6
In den meisten Serverkonfigurationen bedeutet 0.0.0.0, dass Sie ALLE Adressen abhören müssen! Dadurch wird Ihr Server im Internet verfügbar. Wenn Sie das für einen lokalen Server ohne Sicherheit tun (es lauscht nur auf localhost, richtig?), Ist das schlecht. Mach das nicht!
Josef
56
Beantworten Sie Ihre Frage buchstäblich, der Unterschied ist 2130706433.
Shaz
2
@Mast oh, du gehörst zu den Leuten, die ein völlig unsicheres System einrichten, weil die Firewall alles reparieren wird? Normalerweise können diese Systeme dann mit shodan.io gefunden werden : 3 Die nächste Stufe dieser Denkweise ist "Wir können eine 5 Jahre alte WordPress-Installation verwenden, wir haben eine WAF". Ich kann niemandem empfehlen, jemals diesen Weg zu gehen!
Josef
2
@Shaz Ich würde Ihren Kommentar gerne positiv bewerten, aber da er derzeit bei 42 ist, kann ich mich nicht dazu durchringen ...
Jenny D

Antworten:

221

Was ist der Unterschied zwischen 127.0.0.1 und 0.0.0.0?

  • 127.0.0.1 ist die Loopback-Adresse (auch als localhost bezeichnet).

  • 0.0.0.0 ist eine nicht routbare Meta-Adresse, mit der ein ungültiges, unbekanntes oder nicht zutreffendes Ziel angegeben wird (ein nicht bestimmter Adressplatzhalter).

    Im Kontext eines Routeneintrags ist dies normalerweise die Standardroute.

    Im Kontext von Servern bedeutet 0.0.0.0 "alle IPv4-Adressen auf dem lokalen Computer". Wenn ein Host zwei IP-Adressen hat, 192.168.1.1 und 10.1.2.1, und ein Server, der auf dem Host ausgeführt wird, 0.0.0.0 überwacht, ist er unter diesen beiden IP-Adressen erreichbar.


Was ist die IP-Adresse 127.0.0.1?

127.0.0.1 ist die IP-Adresse (Loopback Internet Protocol), die auch als „localhost“ bezeichnet wird. Die Adresse wird verwendet, um eine IP-Verbindung zu demselben Computer oder Computer herzustellen, der vom Endbenutzer verwendet wird.

Dieselbe Konvention ist für Computer definiert, die IPv6-Adressierung mit der Konnotation :: 1 unterstützen. Das Herstellen einer Verbindung unter Verwendung der Adresse 127.0.0.1 ist die häufigste Praxis. jedoch unter Verwendung eines beliebigen IP - Adresse im Bereich von 127 . . * funktioniert auf die gleiche oder ähnliche Weise. Das Loopback-Konstrukt bietet einem Computer oder Gerät, das in der Lage ist, die Fähigkeit zur Validierung oder Einrichtung des IP-Stacks auf dem Computer zu vernetzen.

Quelle: 127.0.0.1 - Wozu dient es und warum ist es wichtig?


Besondere Adressen

Der Klasse-A-Netzwerknummer 127 wird die "Loopback" -Funktion zugewiesen, dh ein Datagramm, das von einem Protokoll höherer Ebene an eine Netzwerkadresse 127 gesendet wird, sollte innerhalb des Hosts zurückgeschleift werden. Kein Datagramm, das an eine Netzwerkadresse 127 "gesendet" wurde, sollte jemals in einem Netzwerk irgendwo auftauchen.

Quelle: Netzwerknummern


Wenn es sich um eine ganze Klasse A handelt, wozu dienen dann andere willkürliche Werte für die letzten drei Oktette?

Der Zweck des Loopback-Bereichs ist das Testen der TCP / IP-Protokollimplementierung auf einem Host. Da die unteren Schichten kurzgeschlossen sind, können beim Senden an eine Loopback-Adresse die höheren Schichten (IP und höher) effektiv getestet werden, ohne dass sich Probleme an den unteren Schichten bemerkbar machen. 127.0.0.1 ist die Adresse, die am häufigsten zu Testzwecken verwendet wird.

Quelle: IP Reserved, Loopback und Private Adressen

Weitere Informationen finden Sie unter https://askubuntu.com. Frage: Was ist das Loopback-Gerät und wie verwende ich es? und warum ist Loopback-IP-Adresse von 127.0.0.1 bis 127.255.255.254? .


Was ist die IP-Adresse 0.0.0.0?

"0.0.0.0" ist eine gültige Adressensyntax. Daher sollte es immer dann als gültig gelten, wenn eine IP-Adresse in traditioneller Dezimalpunktschreibweise erwartet wird. Sobald es analysiert und in eine verarbeitbare numerische Form umgewandelt wurde, bestimmt sein Wert, was als nächstes geschieht.

Der Nullwert hat eine besondere Bedeutung. Es ist also "gültig", hat aber eine Bedeutung, die für bestimmte Umstände möglicherweise nicht geeignet ist (und daher als ungültig behandelt wird). Dies ist im Grunde der Platzhalter "Keine bestimmte Adresse". Bei Dingen wie der Adressbindung von Netzwerkverbindungen kann das Ergebnis darin bestehen, der Verbindung eine geeignete Schnittstellenadresse zuzuweisen. Wenn Sie damit eine Schnittstelle konfigurieren, kann stattdessen eine Adresse von der Schnittstelle entfernt werden. Es hängt vom Verwendungskontext ab, zu bestimmen, was "keine bestimmte Adresse" wirklich tut.

Im Kontext eines Routeneintrags ist dies normalerweise die Standardroute . Das passiert als Ergebnis mehr von der Adressmaske, die die zu vergleichenden Bits auswählt. Eine Maske von "0.0.0.0" wählt keine Bits aus, sodass der Vergleich immer erfolgreich ist. Wenn also eine solche Route konfiguriert ist, gibt es immer einen Ort, an den Pakete gesendet werden können (sofern ein gültiges Ziel konfiguriert wurde).

In einigen Fällen funktioniert auch nur "0" und hat den gleichen Effekt. Dies ist jedoch nicht garantiert. Das Formular "0.0.0.0" ist die Standardmethode, um "keine bestimmte Adresse" auszudrücken (in IPv6 ":: 0" oder nur "::").

Quelle: Was bedeutet die IP-Adresse 0.0.0.0?


In Internet Protocol Version 4 ist die Adresse 0.0.0.0 eine nicht routbare Meta-Adresse, mit der ein ungültiges, unbekanntes oder nicht zutreffendes Ziel angegeben wird. Einem ansonsten ungültigen Datenelement eine besondere Bedeutung zu verleihen, ist eine Anwendung der In-Band-Signalisierung.

Im Kontext von Servern bedeutet 0.0.0.0 "alle IPv4-Adressen auf dem lokalen Computer". Wenn ein Host zwei IP-Adressen hat, 192.168.1.1 und 10.1.2.1, und ein Server, der auf dem Host ausgeführt wird, 0.0.0.0 überwacht, ist er unter diesen beiden IP-Adressen erreichbar.

Im Kontext des Routings bedeutet 0.0.0.0 normalerweise die Standardroute, dh die Route, die zum "Rest" des Internets führt, anstatt irgendwo im lokalen Netzwerk.

Verwendungen umfassen:

  • Die Adresse, die ein Host für sich beansprucht, wenn ihm noch keine Adresse zugewiesen wurde. Zum Beispiel beim Senden des ersten DHCPDISCOVER-Pakets bei Verwendung von DHCP.
  • Die Adresse, die sich ein Host selbst zuweist, wenn die Adressanforderung über DHCP fehlgeschlagen ist, sofern der IP-Stack des Hosts dies unterstützt. Diese Verwendung wurde in modernen Betriebssystemen durch den APIPA-Mechanismus ersetzt.
  • Eine Möglichkeit, "einen beliebigen IPv4-Host überhaupt" anzugeben. Es wird auf diese Weise verwendet, wenn eine Standardroute angegeben wird.
  • Eine Möglichkeit, explizit anzugeben, dass das Ziel nicht verfügbar ist. 1
  • Eine Möglichkeit, "eine beliebige IPv4-Adresse überhaupt" anzugeben. Es wird auf diese Weise bei der Konfiguration von Servern verwendet (dh beim Binden von Listening-Sockets). Dies ist TCP-Programmierern als INADDR_ANY bekannt. (bind (2) bindet an Adressen, nicht an Schnittstellen.)

In IPv6 wird die Ganz-Null-Adresse als "::" geschrieben.

Quelle: 0.0.0.0


DHCP-Ermittlung / -Anforderung

Wenn ein Client zum ersten Mal gestartet wird, befindet er sich im Initialisierungsstatus und überträgt eine DHCPDISCOVER-Nachricht in seinem lokalen physischen Subnetz über UDP-Port 67 (User Datagram Protocol) (BootP-Server). Da der Client nicht weiß, zu welchem ​​Subnetz er gehört, handelt es sich bei DHCPDISCOVER um einen Broadcast für alle Subnetze (Ziel-IP-Adresse 255.255.255.255) mit einer Quell-IP-Adresse von 0.0.0.0. Die Quell-IP-Adresse ist 0.0.0.0, da der Client keine konfigurierte IP-Adresse hat.Wenn in diesem lokalen Subnetz ein DHCP-Server vorhanden ist, der konfiguriert ist und ordnungsgemäß funktioniert, hört der DHCP-Server die Übertragung und antwortet mit einer DHCPOFFER-Nachricht. Wenn im lokalen Subnetz kein DHCP-Server vorhanden ist, muss sich in diesem lokalen Subnetz ein DHCP / BootP-Relay-Agent befinden, um die DHCPDISCOVER-Nachricht an ein Subnetz weiterzuleiten, das einen DHCP-Server enthält.

Dieser Relay-Agent kann entweder ein dedizierter Host (z. B. Microsoft Windows Server) oder ein Router (z. B. ein Cisco-Router, der mit IP-Hilfsanweisungen auf Schnittstellenebene konfiguriert ist) sein.

...

Nachdem der Client ein DHCPOFFER empfangen hat, antwortet er mit einer DHCPREQUEST-Nachricht, die angibt, dass die Parameter im DHCPOFFER akzeptiert werden sollen, und wechselt in den Status Requesting. Der Client empfängt möglicherweise mehrere DHCPOFFER-Nachrichten, eine von jedem DHCP-Server, der die ursprüngliche DHCPDISCOVER-Nachricht empfangen hat. Der Client wählt ein DHCPOFFER aus und antwortet nur auf diesen DHCP-Server. Alle anderen DHCPOFFER-Nachrichten werden implizit abgelehnt. Der Client identifiziert den ausgewählten Server, indem er das Optionsfeld Server-ID mit der IP-Adresse des DHCP-Servers ausfüllt. Die DHCPREQUEST ist auch eine Rundsendung, sodass alle DHCP-Server, die ein DHCPOFFER gesendet haben, die DHCPREQUEST sehen und jeder weiß, ob sein DHCPOFFER akzeptiert oder abgelehnt wurde. Alle zusätzlichen Konfigurationsoptionen, die der Client benötigt, werden in das Optionsfeld der DHCPREQUEST-Nachricht aufgenommen.Obwohl dem Client eine IP-Adresse angeboten wurde, sendet er die DHCPREQUEST-Nachricht mit einer Quell-IP-Adresse von 0.0.0.0. Zu diesem Zeitpunkt hat der Client noch keine Bestätigung erhalten, dass die Verwendung der IP-Adresse eindeutig ist.

...

Client-Server-Konversation für Client Beziehen der DHCP-Adresse, wenn sich Client und DHCP-Server im selben Subnetz befinden

Geben Sie hier eine Bildbeschreibung ein

Quelle: Grundlegendes zu und Fehlerbehebung bei DHCP in Catalyst Switch- oder Unternehmensnetzwerken


Standardroute

In diesem Dokument wird erläutert, wie Sie eine Standardroute oder ein Gateway der letzten Instanz konfigurieren. Diese IP-Befehle werden verwendet:

  • ip default-gateway

  • ip default-network

  • und ip route 0.0.0.0 0.0.0.0

ip route 0.0.0.0 0.0.0.0

Das Erstellen einer statischen Route zum Netzwerk 0.0.0.0 0.0.0.0 ist eine weitere Möglichkeit, das Gateway der letzten Instanz auf einem Router festzulegen. Wie beim Befehl ip default-network ist die Verwendung der statischen Route zu 0.0.0.0 nicht von Routing-Protokollen abhängig. Das IP-Routing muss jedoch auf dem Router aktiviert sein.

Hinweis: IGRP versteht keine Route zu 0.0.0.0. Daher können Standardrouten, die mit dem Befehl ip route 0.0.0.0 0.0.0.0 erstellt wurden, nicht weitergegeben werden. Verwenden Sie den Befehl ip default-network, damit IGRP eine Standardroute weitergibt.

Quelle: Konfigurieren eines Gateway of Last Resort mithilfe von IP-Befehlen

DavidPostill
quelle
3
Im Kontext von Servern bedeutet 0.0.0.0 "alle IPv4-Adressen auf dem lokalen Computer". Wenn ein Host zwei IP-Adressen hat, 192.168.1.1 und 10.1.2.1, und ein Server, der auf dem Host ausgeführt wird, 0.0.0.0 überwacht, ist er unter beiden IP-Adressen erreichbar. - das hat es für mich getan
Rafael Eyng
112

Sie sind nicht gleich.

127.0.0.1 ist Teil des 127/8-Netzwerks, das reserviert ist und auf denselben Computer verweist.

0.0.0.0 ist eine spezielle IP-Adresse, die je nach Kontext unterschiedliche Bedeutungen hat.

In Internet Protocol Version 4 ist die Adresse 0.0.0.0 eine nicht routbare Meta-Adresse, mit der ein ungültiges, unbekanntes oder nicht zutreffendes Ziel angegeben wird. Einem ansonsten ungültigen Datenelement eine besondere Bedeutung zu verleihen, ist eine Anwendung der In-Band-Signalisierung.

Möglicherweise haben Sie 0.0.0.0 mit 127.0.0.1 verwechselt, wenn Sie sich netstat ansehen und die lokale Adresse als 0.0.0.0 abhören. Dies ist jedoch eine andere Art, wie 0.0.0.0 verwendet wird.

Im Kontext von Servern bedeutet 0.0.0.0 "alle IPv4-Adressen auf dem lokalen Computer". Wenn ein Host zwei IP-Adressen hat, 192.168.1.1 und 10.1.2.1, und ein Server, der auf dem Host ausgeführt wird, 0.0.0.0 überwacht, ist er unter diesen beiden IP-Adressen erreichbar.

Im Kontext des Routings bedeutet 0.0.0.0 normalerweise die Standardroute, dh die Route, die zum "Rest" des Internets führt, anstatt irgendwo im lokalen Netzwerk.

https://en.wikipedia.org/wiki/0.0.0.0

Cristian Dobre
quelle
0.0.0.0kann auch manchmal auf eine Übertragung hinweisen, was für alle Computer im Netzwerk bedeutet.
James Mertz
8
@ Kronos Ich dachte, Sendungen sind Dinge wie 255.255.255.255(oder realistischer etwas wie 192.168.1.255für ein lokales Netzwerk)
Nick T
1
@ NickT Ah, Sie sind richtig :A special definition exists for the IP broadcast address 255.255.255.255. It is the broadcast address of the zero network or 0.0.0.0, which in Internet Protocol standards stands for this network, i.e. the local network. Transmission to this address is limited by definition, in that it is never forwarded by the routers connecting the local network to other networks.
James Mertz
@KronoS Sie verwechseln die Broadcast-Adresse mit dem Loopback. Der Loopback ist 0.0.0.0, der wie oben beschrieben alle lokalen Adressen abhört. Die Rundsendung ist (auf einfache Weise) die 255 der Netzwerke, die an alle Adressen in diesem Netzwerk "rundgesendet" werden sollen.
Desorder
Dies ist unvollständig. Bei vielen Betriebssystemen können Sie eine Verbindung zu 0.0.0.0 herstellen, das sich dann wie eine Loopback-Adresse verhält.
Grawity
16

127.0.0.1 ist eine der Adressen des lokalen Computers, aber jede Adresse 127.xyz ist auch eine andere Adresse des Computers (als "Loopback-Adresse" bezeichnet), mit Ausnahme von 127.0.0.0 (Loopback-Subnetz) und 127.255.255.255 (Broadcast-Adresse für das Loopback-Subnetz).

127.xyz bedeutet "hier".

0.0.0.0 ist völlig anders: 0.0.0.0 ist nicht die Adresse von irgendetwas , es ist der Joker, wie *in der Shell.

Sie können keine Daten an 0.0.0.0 senden oder eine TCP-Verbindung zu 0.0.0.0 aktiv öffnen, da dort nichts vorhanden ist. 0.0.0.0 ist nicht einmal eine nicht erreichbare oder nicht routbare Adresse, sondern in einem Kontext, in dem eine Adresse erwartet wird, bedeutungslos .

Sie können den Joker 0.0.0.0 in Kontexten verwenden, in denen optional eine Adresse angegeben werden kann , was bedeutet, dass es mir egal ist .

Wenn Sie beispielsweise eine TCP-Verbindung zu einem TCP-Server aktiv öffnen (ein TCP-Server wird durch ein passives TCP-Öffnen erstellt), müssen Sie die Adresse des TCP-Servers (IP- und Portnummer) angeben und können optional eine auswählen Lokale Adresse. (Da es sich bei Ihrem Socket nicht um einen Server-Socket handelt, kann niemand eine Verbindung zu ihm herstellen, und die Adresse auf Ihrer Seite der Verbindung ist normalerweise nicht sehr wichtig.)

Mit dem bindSystemaufruf wird die lokale Adresse eines TCP-Sockets ausgewählt. Die Daten, die an übergeben werden, bindsind eine Reihe von Einschränkungen: Einschränkung der IP-Adresse, Einschränkung des TCP-Ports. Die übliche Textnotation lautet IP: port. 0.0.0.0:0 bedeutet, dass jede IP und jeder Port akzeptabel ist, es ist die Nullbedingung. 0.0.0.0:20 bedeutet, dass der lokale Port 20 sein muss, jede IP ist akzeptabel (0.0.0.0:20 wird von konformen FTP-Servern für die Datenverbindung im aktiven Modus verwendet).

Das TCP / IP-Subsystem wählt die Adresse für Ihre Seite der TCP-Verbindung aus, wenn Sie anhand der Routing-Tabelle keine auswählen: Die lokale TCP-Socket-Adresse ist die lokale Adresse, die der entsprechenden Route zugeordnet ist an die Zieladresse.

Ich habe zuvor die Shell "Meta-Zeichen" erwähnt *, aber die Möglichkeit, Meta-Zeichen mit Zeichen wie *foo*(einem beliebigen Dateinamen, der "foo" enthält) zu kombinieren, gibt es nicht mit IP-Adressbeschränkungen, es ist alles oder nichts: entweder eine einzelne IP-Adresse gilt als akzeptabel oder alle Adressen sind. Logik schreibt nicht vor, dass es so sein muss. Sie können die Benutzeroberfläche mit einer umfangreicheren Einschränkungssprache erweitern.

Präzision:

Der Satz 127.xyz bedeutet "hier" bedeutet nicht, dass alle diese Adressen gleich sind. Sie repräsentieren verschiedene "Orte" (Socket-Adressen) innerhalb des lokalen "Computers", tatsächlich innerhalb des lokalen IP-Stacks.

Anmerkung: Ein Computer mit Virtualisierung (Emulation, Hardware-Virtualisierung, Paravirtualisierung, was auch immer Sie sich vorstellen können ...) verfügt über mehrere unabhängige IP-Stapel.

neugierig
quelle
Wenn ich eine zufällige Adresse beginnend mit 127 (z. B. 127.16.23.42) in meinen Browser eingab, stellte er keine Verbindung zu localhost her.
whoKnows
@whoKnows Natürlich. localhost ist 127.0.0.1, nicht 127.16.23.42.
neugierig
Aha. 127.0.0.1 bedeutet also localhost, aber 127.xyz könnte den lokalen Computer bedeuten, wenn es so eingerichtet wäre?
whoKnows
2
@whoKnows No: 127.xyz gehört zu diesem Computer für alle xy z. "localhost" ist nur ein Name für 127.0.0.1, vergessen Sie also "localhost". Verwenden Sie die Markierung -noder -dvon netstatund verwandte Programme, um numerische Adressen und keine Namen anzuzeigen. 127.0.0.1 ist nicht die gleiche IP-Adresse wie 127.16.23.42. 127.0.0.1:80 und 127.16.23.42:80 stellen also unterschiedliche TCP-Endpunktadressen dar. Ein Webserver an der einen Adresse kann an der anderen Adresse nicht gefunden werden.
neugierig
6

Normalerweise verwenden Sie die Bindeadresse 0.0.0.0, um Verbindungen von außerhalb von Netzwerken und Quellen zuzulassen. Viele Server wie MySQL binden normalerweise an 127.0.0.1 und lassen nur Loopback-Verbindungen zu. Der Administrator muss dies in 0.0.0.0 ändern, um die externe Konnektivität zu ermöglichen.

Marek Bejda
quelle