Frage Was ist der Unterschied zwischen 127.0.0.1 und 0.0.0.0?


Ich verstehe, dass 127.0.0.1 zeigt auf localhostund auch 0.0.0.0 (korrigiere mich, wenn ich falsch liege). Also, was ist der Unterschied zwischen 127.0.0.1 und 0.0.0.0?


162
2017-08-02 13:17


Ursprung


Das könnte Sie interessieren diese Chrome-Bug-Tracker-Diskussion wie man damit umgeht 0.0.0.0 bei Adresseingabe. - user7301
In den meisten Serverkonfigurationen bedeutet 0.0.0.0, ALLE Adressen abhören! Dadurch wird Ihr Server im Internet verfügbar. Wenn du das für irgendeinen lokalen Server ohne irgendeine Sicherheit tust (es hört nur auf localhost, richtig?), Das ist schlecht. Tu das nicht! - Josef
Beantworten Sie Ihre Frage wörtlich, der Unterschied ist 2130706433. - Shaz
@Mast oh, du bist einer der Leute, die ein total unsiches System aufgebaut haben, weil die Firewall alles reparieren wird? In der Regel können diese Systeme dann mit gefunden werden shodan.io : 3 Die nächste Stufe dieser Einstellung ist "Wir können eine 5 Jahre alte WordPress-Installation verwenden, wir haben eine WAF". Ich empfehle niemandem, diesen Weg zu gehen, jemals! - Josef
@Shaz Ich würde gerne deinen Kommentar auffrischen, aber da es momentan 42 ist, kann ich mich nicht dazu bringen es zu tun ... - Jenny D


Antworten:


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 bekannt).

  • 0.0.0.0 ist eine nicht routingfähige Meta-Adresse, die verwendet wird, um ein ungültiges, unbekanntes oder nicht anwendbares Ziel (einen bestimmten Adressplatzhalter) anzugeben.

    Im Kontext eines Routeneintrags bedeutet dies normalerweise die Standardroute.

    Im Zusammenhang mit 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 auf dem Host laufender Server auf 0.0.0.0 hört, ist er auf beiden IPs erreichbar.


Was ist die IP-Adresse 127.0.0.1?

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

Die gleiche Konvention ist für Computer definiert, die IPv6 unterstützen   Adressierung mit der Konnotation von :: 1. Verbindung herstellen   die Verwendung der Adresse 127.0.0.1 ist die gängigste Praxis; jedoch,   Verwenden Sie eine beliebige IP-Adresse im Bereich von 127... * funktioniert in der   gleiche oder ähnliche Art und Weise. Das Loopback-Konstrukt gibt einen Computer oder   Gerät, das in der Lage ist, die Fähigkeit zur Validierung oder Einrichtung zu vernetzen   der IP-Stapel auf der Maschine.

Quelle: 127.0.0.1 - Was sind seine Gründe und warum ist es wichtig?


Spezielle Adressen

Der Klasse A Netzwerknummer 127 ist der "Loopback" zugewiesen            Funktion, dh ein Datagramm, das von einem Protokoll höherer Ebene gesendet wird            zu einer Adresse des Netzes 127 sollte zurück in den Wirt schlaufen. Nein            Datagramm "gesendet" zu einem Netzwerk 127 Adresse sollte jemals auf erscheinen            Irgendein Netzwerk überall.

Quelle: Netzwerknummern


Wenn es eine ganze Klasse A ist, was ist der Punkt anderer willkürlicher Werte für die letzten drei Oktette?

Der Zweck des Loopback-Bereichs besteht im Testen der TCP / IP-Protokollimplementierung auf einem Host. Da die unteren Schichten kurzgeschlossen sind, ermöglicht das Senden an eine Loopback-Adresse, dass die höheren Schichten (IP und höher) effektiv getestet werden, ohne dass sich die Probleme in den unteren Schichten bemerkbar machen. 127.0.0.1 ist die Adresse, die am häufigsten für Testzwecke verwendet wird.

Quelle: IP Reserviert, Loopback und Private Adressen

Für weitere Informationen siehe https://askubuntu.com Frage Was ist das Loopback-Gerät und wie benutze ich es? und Warum ist die 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. Also sollte es als gültig analysieren   wo immer eine IP-Adresse in traditioneller Punkt-Dezimal-Notation ist   erwartet. Sobald geparst und konvertiert in bearbeitbare numerische Form, dann   Sein Wert bestimmt, was als nächstes passiert.

Der Alles-Null-Wert hat eine besondere Bedeutung.Es ist also "gültig", aber   hat eine Bedeutung, die möglicherweise nicht angemessen ist (und somit als nicht behandelt wird)   gültig) für besondere Umstände. Es ist im Grunde das "Nein   bestimmte Adresse "Platzhalter. Für Dinge wie Adressbindung von   Netzwerkverbindungen kann das Ergebnis sein, ein entsprechendes zuzuweisen   Schnittstellenadresse zur Verbindung. Wenn Sie es zum Konfigurieren verwenden   Eine Schnittstelle kann stattdessen eine Adresse von der Schnittstelle entfernen. Es   hängt von dem Kontext der Verwendung ab, um zu bestimmen, was "nicht speziell ist   Adresse "tut es wirklich.

Im Kontext eines Routeneintrags bedeutet dies normalerweise die Standardroute.   Das passiert als Folge mehr von der Adressmaske, die das auswählt   Bits zum Vergleichen. Eine Maske von "0.0.0.0" wählt keine Bits aus, also der Vergleich   wird immer gelingen. Wenn also eine solche Route konfiguriert ist, gibt es   immer irgendwo für Pakete zu gehen (wenn mit einem gültigen konfiguriert   Ziel).

In einigen Fällen funktioniert auch nur "0" und hat den gleichen Effekt. Aber   Dies ist nicht garantiert. Das Formular "0.0.0.0" ist die Standardformel   "keine bestimmte Adresse" (in IPv6 ist das ":: 0" oder nur "::").

Quelle: Was bedeutet die IP-Adresse 0.0.0.0?


In der Internetprotokollversion 4 lautet die Adresse 0.0.0.0 a   Nicht routingfähige Meta-Adresse zur Bezeichnung eines ungültigen, unbekannten oder nicht   anwendbares Ziel. Um einem ansonsten ungültigen eine besondere Bedeutung zu geben   Datenstück ist eine Anwendung von In-Band-Signalisierung.

Im Zusammenhang mit 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 auf dem Host laufender Server auf 0.0.0.0 hört, ist er auf beiden IPs erreichbar.

Im Zusammenhang mit dem Routing bedeutet 0.0.0.0 üblicherweise die Standardroute, d. H. Die Route, die zu "dem Rest" des Internets statt irgendwo im lokalen Netzwerk führt.

Verwendet werden:

  • Die Adresse, die ein Host als seine eigene beansprucht, wenn ihm noch keine Adresse zugewiesen wurde. Wie beim Senden des ersten DHCPDISCOVER   Paket bei Verwendung von DHCP.
  • Die Adresse, die ein Host sich selbst zuweist, wenn eine Adressanfrage über DHCP fehlgeschlagen ist, sofern der IP-Stack des Hosts dies unterstützt. Diese Verwendung wurde im modernen Betrieb durch den APIPA-Mechanismus ersetzt   Systeme.
  • Eine Möglichkeit, "einen beliebigen IPv4-Host" 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, "irgendeine IPv4-Adresse überhaupt anzugeben". Es wird auf diese Weise beim Konfigurieren von Servern verwendet (d. H. Beim Binden von Listening-Sockets).   Dies ist TCP-Programmierern als INADDR_ANY bekannt. (Bindung (2) bindet an   Adressen, keine Schnittstellen.)

In IPv6 wird die Nur-Nullen-Adresse als "::" geschrieben.

Quelle: 0.0.0.0


DHCP-Erkennung / Anfrage

Wenn ein Client zum ersten Mal hochfährt, wird gesagt, dass er in der   Initialisierungsstatus und sendet eine DHCPDISCOVER-Nachricht auf seinem lokalen Server   physisches Subnetz über den UDP-Port 67 (BootP   Server). Da der Client keine Möglichkeit hat, das Subnetz zu kennen, zu dem er gehört   gehört, ist der DHCPDISCOVER ein alle Subnetze Broadcast (Ziel IP   Adresse von 255.255.255.255) mit einer Quell-IP-Adresse von 0.0.0.0. Das   Quell-IP-Adresse ist 0.0.0.0, da der Client keine a   konfigurierte IP-AdresseWenn in diesem lokalen Subnetz ein DHCP-Server vorhanden ist   und ist konfiguriert und funktioniert ordnungsgemäß, der DHCP-Server wird hören   die Sendung und antworten mit einer DHCPOFFER-Nachricht. Wenn ein DHCP-Server   existiert nicht im lokalen Subnetz, es muss ein DHCP / BootP Relay vorhanden sein   Agent in diesem lokalen Subnetz, um die DHCPDISCOVER-Nachricht an a weiterzuleiten   Subnetz, das einen DHCP-Server enthält.

Dieser Relay-Agent kann entweder ein dedizierter Host sein (z. B.   Microsoft Windows Server) oder Router (z. B. ein Cisco-Router)   konfiguriert mit IP-Helfer-Anweisungen auf Interface-Ebene).

...

Nachdem der Client ein DHCPOFFER empfangen hat, antwortet er mit einer DHCPREQUEST-Nachricht, die angibt, dass er die Parameter im DHCPOFFER akzeptieren soll, und wechselt in den Anforderungsstatus. Der Client kann mehrere DHCPOFFER-Nachrichten empfangen, eine von jedem DHCP-Server, der die ursprüngliche DHCPDISCOVER-Nachricht empfangen hat. Der Client wählt einen DHCPOFFER aus und antwortet nur diesem DHCP-Server, wobei er alle anderen DHCPOFFER-Meldungen implizit ablehnt. Der Client identifiziert den ausgewählten Server, indem er das Optionsfeld Server Identifier mit der IP-Adresse des DHCP-Servers füllt. DHCPREQUEST ist auch eine Broadcast-Nachricht, dh alle DHCP-Server, die eine DHCPOFFER-Nachricht gesendet haben, sehen DHCPREQUEST, und jeder weiß, ob seine DHCPOFFER-Nachricht 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, wird die DHCPREQUEST-Nachricht mit einer Quell-IP-Adresse von 0.0.0.0 gesendet. Zu diesem Zeitpunkt hat der Client noch keine Bestätigung erhalten, dass die Verwendung der IP-Adresse eindeutig ist.

...

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

Enter image description here

Quelle: Verstehen und Beheben von DHCP in Catalyst Switch- oder Unternehmensnetzwerken


Standardroute

In diesem Dokument wird erläutert, wie eine Standardroute oder ein Gateway von konfiguriert wird   letzter Ausweg. Diese IP-Befehle werden verwendet:

  • IP-Standard-Gateway

  • IP-Standard-Netzwerk

  • 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 zu Netzwerk 0.0.0.0 0.0.0.0 ist eine andere Möglichkeit   Stellen Sie das Gateway der letzten Instanz auf einem Router ein. Wie bei der IP   Standard-Netzwerk-Befehl, nicht mit der statischen Route zu 0.0.0.0   abhängig von Routing-Protokollen. Allerdings muss IP Routing sein   auf dem Router aktiviert.

Hinweis: IGRP versteht keine Route zu 0.0.0.0. Deshalb, es   Standardrouten, die mit der IP-Route 0.0.0.0 erstellt wurden, können nicht verbreitet werden   0.0.0.0 Befehl. Verwenden Sie den Befehl ip default-network, damit IGRP eine Standardroute propagiert.

Quelle: Konfigurieren eines Gateways der letzten Verwendung mit IP-Befehlen


166
2017-08-02 18:33





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 Dinge bedeutet.

In der Internetprotokollversion 4 lautet die Adresse 0.0.0.0 a   nicht routingfähige Meta-Adresse zur Bezeichnung eines ungültigen, unbekannten oder   nicht zutreffendes Ziel Um einem Anderen eine besondere Bedeutung zu geben   Ungültiges Datenstück ist eine Anwendung von In-Band-Signalisierung.

Möglicherweise haben Sie 0.0.0.0 für 127.0.0.1 verwechselt, wenn Sie sich netstat ansehen und die lokale Adresse als 0.0.0.0 betrachten, aber dies ist eine andere Art, 0.0.0.0 zu verwenden.

Im Zusammenhang mit Servern bedeutet 0.0.0.0 "alle IPv4-Adressen auf der   local machine ". Wenn ein Host zwei IP-Adressen hat, 192.168.1.1 und   10.1.2.1, und ein Server, der auf dem Host läuft, hört auf 0.0.0.0, ist auf diesen beiden IPs erreichbar.

Im Zusammenhang mit dem Routing bedeutet 0.0.0.0 normalerweise die Standardroute,   d.h. die Route, die zu "dem Rest" des Internets führt, statt   irgendwo im lokalen Netzwerk.

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


101
2017-08-02 13:55



0.0.0.0 kann manchmal auch eine Übertragung anzeigen, dh für alle Computer im Netzwerk. - KronoS
@KronoS Ich dachte, Sendungen sind Dinge wie 255.255.255.255 (oder realistischer etwas wie 192.168.1.255 für ein lokales Netzwerk) - Nick T
@NickT Ach du bist es 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. - KronoS
@KronoS Du verwirrst die Broadcast-Adresse mit Loopback. Der Loopback ist 0.0.0.0, der wie oben beschrieben alle lokalen Adressen abhört. Die Übertragung (auf einfache Weise) ist die 255 der Netzwerke, die an alle Adressen in diesem Netzwerk "gesendet" werden sollen. - Desorder
Dies ist unvollständig - viele Betriebssysteme lassen Sie tatsächlich verbunden mit 0.0.0.0, die sich dann wie eine Loopback-Adresse verhält. - grawity


127.0.0.1 eine der Adressen des lokalen Computers, aber jede Adresse 127.xyz ist auch eine andere Adresse des Computers ("Loopback-Adresse" genannt), außer 127.0.0.0 (Loopback-Subnetz) und 127.255.255.255 (Broadcast-Adresse für das Loopback) Teilnetz).

127.x.y.z bedeutet "hier".

0.0.0.0 ist völlig anders: 0.0.0.0 ist nicht die Adresse von irgendetwases ist der Joker, als * in der Schale.

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 unerreichbare oder nicht routingfähige Adresse, Es ist bedeutungslos in einem Kontext, in dem eine Adresse erwartet wird.

Sie können den Joker 0.0.0.0 in Kontexten verwenden, in denen eine Adresse optional zur Verfügung gestellt werden kann, meinen Es ist mir egal.

Wenn Sie beispielsweise eine TCP-Verbindung zu einem TCP-Server aktiv öffnen (ein TCP-Server wird durch ein passives TCP geöffnet), müssen Sie die Adresse des TCP-Servers (IP- und Portnummer) angeben, und Sie können optional Wählen Sie eine lokale Adresse. (Da Ihr Socket kein Server-Socket ist, kann niemand eine Verbindung zu ihm herstellen und die Adresse auf Ihrer Seite der Verbindung ist normalerweise nicht sehr wichtig.)

Das bind Systemaufruf wird verwendet, um die lokale Adresse eines TCP-Sockets auszuwählen. Die Daten wurden an bind ist wirklich eine Reihe von Einschränkungen: Einschränkung der IP-Adresse, Einschränkung auf TCP-Port. Die übliche Textnotation ist IP: Port. 0.0.0.0:0 bedeutet, dass ein beliebiges IP-Port akzeptabel ist, es ist die Null-Einschränkung. 0.0.0.0:20 bedeutet, dass der lokale Port 20 sein muss, eine beliebige IP ist akzeptabel (0.0.0.0:20 wird von 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 keine auswählen, verwenden Sie die Routing-Tabelle basierend auf der Zieladresse: Die lokale TCP-Socket-Adresse ist die lokale Adresse, die der Route zugeordnet ist, die der Zieladresse entspricht.

Ich habe zuvor die Shell "Meta-Charakter" erwähnt *, aber die Macht der Kombination von Meta-Zeichen mit Zeichen wie *foo* (Jeder Dateiname, der "foo" enthält), existiert nicht mit Beschränkungen der IP-Adresse, es ist alles oder nichts: entweder wird eine einzige IP-Adresse als akzeptabel angesehen oder alle Adressen sind. Logik tut es nicht diktiert, dass es so sein muss. Sie könnten die Schnittstelle mit einer umfangreicheren Constraint-Sprache erweitern.

Präzision:

Der Satz 127.x.y.z bedeutet "hier" bedeutet nicht, dass alle diese Adressen gleich sind. Sie repräsentieren verschiedene "Standorte" (Socket-Adressen) innerhalb des lokalen "Computers" innerhalb des lokalen IP-Stacks.

Anmerkung: Ein Computer mit Virtualisierung (Emulation, Hardware-Virtualisierung, Paravirtualisierung, was immer Sie sich vorstellen können) hat mehrere unabhängige IP-Stacks.


13
2017-08-03 16:38



Als ich in meinem Browser eine zufällige Adresse eingab, die mit 127 begann (z. B. 127.16.23.42), wurde keine Verbindung zu localhost hergestellt. - whoKnows
@whoKnows Natürlich. localhost ist 127.0.0.1, nicht 127.16.23.42. - curiousguy
Aha. Also bedeutet 127.0.0.1 localhost, aber 127.x.y.z könnte meinen lokalen Computer, wenn es so eingerichtet ist? - whoKnows
@whoKnows Nein: 127.x.y.z gehört zu diesem Computer für jedes x y z. "localhost" ist nur ein Name für 127.0.0.1, also vergiss "localhost". Benutze die -n oder -d Flagge von netstat und verwandte Programme, um numerische Adressen, nicht Namen anzuzeigen. 127.0.0.1 ist nicht die gleiche IP-Adresse wie 127.16.23.42. So stellen 127.0.0.1:80 und 127.16.23.42:80 unterschiedliche TCP-Endpunktadressen dar, ein Webserver an der einen Adresse kann nicht an der anderen Adresse gefunden werden. - curiousguy


Normalerweise verwenden Sie die Bind-Adresse 0.0.0.0, um Verbindungen von externen Netzwerken und Quellen zuzulassen. Viele Server wie MySQL binden in der Regel an 127.0.0.1, so dass nur Loopback-Verbindungen möglich sind. Der Administrator muss ihn daher auf 0.0.0.0 setzen, um externe Konnektivität zu ermöglichen.


4
2017-08-03 05:55