Unterschied zwischen localhost und der IP-Adresse

15

Wenn Sie einen Socket in Python an localhost binden, können Sie auf 8200 über http: // localhost: 8200 / zugreifen . aber nicht http: // xxxx: 8200 /

Wenn Sie einen Socket in Python an xxxx, 8200, machinename, 8200 binden, können Sie auf diesen über http: // xxxx: 8200 / und http: // machinename: 8200 / zugreifen , jedoch nicht über http: // localhost: 8200 /.

Ich dachte, localhost meinte "diese Maschine", und dass die Verwendung dieser "Schleife" zur IP-Adresse der Maschine zurückführen würde, aber es scheint sich um ein anderes IPS zu handeln.

Ist 127.0.0.1 immer eine andere IP-Adresse als die IP-Adresse des Computers?

aktualisieren:

Ich verstehe, dass die tatsächlichen Zahlen unterschiedlich sind, aber was macht der Loopback?

Zum Beispiel sagt Wikepedia , dass 'ein Verweisen eines Webbrowsers auf die URLs http://127.0.0.1/ oder http: // localhost / auf die Website dieses Computers zugreift '.

Aber diese Website wird auch unter xxxx zugänglich sein und vermutlich mit einem einzigen Socket unter xxxx eingerichtet. Wie funktionieren dann beide Referenzen?

Fazit:

Ich denke ich verstehe endlich, dass 127.0.0.1 und xxxx so funktionieren

--127.0.0.1 ==\
               >- Computer
--x.x.x.x   ==/

und nicht

--127.0.0.1 ==\
--------------- x.x.x.x >- Computer

oder

--x.x.x.x ==\
--------------- 127.0.0.1 >- Computer

Vielen Dank für die Hilfe

David
quelle
1
Sie haben geschrieben "127.0.0.1 ist immer eine andere IP-Adresse als die IP-Adresse des Computers". Die Zahlen zwischen den Punkten sind unterschiedlich, das heißt, eine andere IP-Adresse. Was für eine seltsame Frage, die Sie stellen. Wenn Sie mit der IP-Adresse des Geräts etwas anderes als 127.0.0.1 meinen, dann ist dies eine andere IP-Adresse. Und wenn die IP-Adresse Ihres Geräts 192.168.0.1 (oder ein anderer lokaler Standardbereich) lautet, müssen Sie keine Angst haben, dies zu sagen. Sie können es anstelle von xxxx schreiben. Diese 192-Adresse ist im Internet sowieso nicht vorhanden.
Barlop
Die Referenzen für beide funktionieren aufgrund der Konfiguration des Webservers. Sie können den Server anweisen, sich an alle Adressen zu binden oder nur bestimmte Adressen abzuhören. Da der Loopback und die tatsächliche IP-Adresse unterschiedliche Adressen sind, bestimmt die Konfiguration, welche IP-Adresse abgehört werden soll. Da localhost nur ein Host-Eintrag für 127.0.0.1 ist, funktioniert es nur, wenn der Webserver an 127.0.0.1 gebunden ist.
Peelman

Antworten:

16

Zur Beantwortung Ihrer Frage.

127.0.0.1 ist nicht nur eine andere IP-Adresse als die IP-Adresse der Maschine, sondern auch eine andere Schnittstelle. 127.0.0.1 sollte im lokalen Netzwerk nicht angezeigt werden. Es ist eine spezielle interne IP-Adresse für den Loopback-Adapter.

xxxx ist Ihre Ethernet-Karte.

Übrigens ist 'localhost' einfach ein Eintrag in Ihrer hosts-Datei, der auf 127.0.0.1 zeigt

Wenn Sie eine Steckdose an 127.0.0.1:8200 binden dann nur ausgeführt Kunden vor Ort in der Lage sein , darauf zuzugreifen und nur mit http://127.0.0.1:8200 oder http: // localhost: 8200 (oder einem DNS- bzw. Host - Dateieintrag das zeigt auf 127.0.0.1).

Ein an xxxx: 8200 gebundener Socket ist nur über http: // xxxx: 8200 oder einen DNS- oder Hosts-Dateieintrag verfügbar , der darauf verweist.

Das Binden eines Sockets an 127.0.0.1 macht ihn nicht automatisch auch auf der Ethernet-Schnittstelle verfügbar.

Deshalb können Sie keine Verbindung zu xxxx: 8200 herstellen

Sie können Port 8200 an alle verfügbaren Schnittstellen (0.0.0.0) binden, dann sollte es funktionieren.

Matt H
quelle
Was macht das Loopback-Bit? Wofür wird ein Loopback durchgeführt? Ich dachte, es wäre eine Möglichkeit, auf die IP-Adresse der Maschine zu verweisen, unabhängig davon, wie diese lautete: 127.0.0.1 => xxxx
David
1
Die Loopback-Schnittstelle ist eine virtuelle Schnittstelle. Es wird oft verwendet, um es Programmen zu ermöglichen, auf demselben Computer miteinander zu kommunizieren. Es ist keine Möglichkeit, auf die IP-Adresse des Geräts zu verweisen. 127.0.0.1 IST die IP-Adresse des virtuellen Loopback-Adapters.
Matt H
1
Das andere an dem Loopback-Adapter ist, dass er, da er virtuell ist, keine Pakete an die Netzwerkkarte weiterleitet.
Matt H
1
buchstäblich 4 Stunden damit verschwendet, dieses Konzept nicht zu verstehen ... anscheinend binden einige Webserver automatisch sowohl an xxxx als auch an 127.0.0.1, was Verwirrung stiftet. Tolle Frage & Antwort Jungs. Thx =)
jrhee17
2

Zum Beispiel sagt Wikepedia, dass 'ein Verweisen eines Webbrowsers auf die URLs http://127.0.0.1/ oder http: // localhost / auf die Website dieses Computers zugreift '.

Etwas ungenau. Es kann so sein. Genauso gut kann es sein, dass keine Website aufgerufen wird, und es ist sogar möglich, eine andere interne Website als die anzuzeigen, die Sie erhalten, wenn Sie Ihre xxxx-Adresse verwenden.

127.0.0.1 verweist auf Ihren eigenen Computer. Dies bedeutet jedoch nicht, dass er sich bei Erreichen Ihres Computers genauso verhält

Wenn Sie eine nicht-technische Analogie wünschen, können Sie sie als verschiedene Türen in Ihr Haus betrachten.

Beide zeigen auf dasselbe Haus, aber sie sind nicht dasselbe. Es ist möglich, dass Sie von jeder Tür in den gleichen Raum oder in einen anderen Raum geführt werden. Es ist auch möglich, eine Tür und nicht die andere zu verriegeln.

Wenn Sie eine Website konfigurieren, geben Sie an, an welche Adressen gebunden werden soll, und die Antwort sind häufig alle Adressen. (Das ist gleichbedeutend damit, dass alle Türen Sie in einen Raum führen.)

Sie können auch die Website angeben, die nur an eine Adresse gebunden werden soll. (Das ist gleichbedeutend mit dem Verriegeln aller Türen mit einer Ausnahme.)

Wenn Sie zwei (oder mehr) Websites haben, können Sie diese an separate Adressen binden. (Das ist gleichbedeutend damit, dass jede Tür in einen separaten Raum führt).

Ein Beispiel für die Funktionsweise beider Verweise: Auf meinem Windows 7-Computer ist IIS installiert. Wenn ich in den IIS-Manager gehe und mit der rechten Maustaste auf die Standardwebsite klicke, wird die Menüoption "Bindungen bearbeiten" angezeigt. Durch Auswahl dieser Option wird eine Liste der Bindungen angezeigt. Ich habe nur eine, aber für die IP-Adresse gibt es *, was bedeutet, dass IIS alle meine IP-Adressen abhört.

sgmoore
quelle
1

Jede IP-Adresse im System ist unabhängig und kann separat an Sockets gebunden werden, mit Ausnahme der speziellen Adresse 0.0.0.0, die dem Betriebssystem angibt, dass der Socket an alle Schnittstellen gebunden werden soll.

Ignacio Vazquez-Abrams
quelle
1
127.0.0.1 ist jedoch auch eine spezielle Adresse, da sie am häufigsten für die Loopback-Schnittstelle verwendet wird. Wohin führt die Adressschleife zurück?
David
Das macht es nicht "speziell", das macht es nur "eine Adresse auf der Loopback-Schnittstelle" (es sei denn, Sie sagen "jede Adresse ist auf ihre eigene Weise speziell", aber gehen wir nicht dorthin). Es ist die Schnittstelle, die die Schleife durchführt, nicht die Adresse.
Ignacio Vazquez-Abrams