Warum ist die Localhost-IP 127.0.0.1?

Warum ist die Localhost-IP 127.0.0.1?

localhostIch habe mich gefragt, woher die Entscheidung für die IP-Adresse stammt 127.0.0.1. Was ist die „Bedeutung“ von 127? Was ist die „Bedeutung“ von 0.0.1?

Antwort1

127 ist die letzte Netzwerknummer in einem Klasse-A-Netzwerk mit einer Subnetzmaske von 255.0.0.0. 127.0.0.1ist die erste zuweisbare Adresse im Subnetz. 127.0.0.0kann nicht verwendet werden, da dies die Drahtnummer wäre. Die Verwendung anderer Nummern für den Host-Teil sollte jedoch problemlos funktionieren und zur Verwendung von zurückkehren 127.0.0.1. Sie können es selbst ausprobieren, indem Sie pingen, 127.1.1.1wenn Sie möchten. Warum haben sie bis zur letzten Netzwerknummer gewartet, um dies zu implementieren? Ich glaube nicht, dass es dokumentiert ist.

Antwort2

Die erste Erwähnung, die ich bezüglich der Zuweisung von 127 als Loopback finden kann, ist November 1986RFC 990verfasst von Reynolds und Postel:

Die Adresse Null ist als „dieses“ zu interpretieren, wie in „dieses Netzwerk“.

Beispielsweise könnte die Adresse 0.0.0.37 so interpretiert werden, dass sie Host 37 in diesem Netzwerk bedeutet.

...

Der Netzwerknummer 127 der Klasse A ist die Funktion „Loopback“ zugewiesen, d. h. 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“ wird, sollte jemals in irgendeinem Netzwerk irgendwo auftauchen.

Schon im September 1981RFC 790, 0 und 127 waren bereits reserviert:

000.rrr.rrr.rrr Reserviert [JBP]
...
127.rrr.rrr.rrr Reserviert [JBP]

0 und 127 waren bis 1981 die einzigen reservierten Netzwerke der Klasse A. 0 wurde zum Verweisen auf einen bestimmten Host verwendet, sodass 127 für Loopback übrig blieb.

Ich weiß, dass dies die Frage nicht beantwortet, aber weiter zurück konnte ich nicht graben. Es wäre vielleicht sinnvoller gewesen, 1.0.0.0 für Loopback zu wählen, aber das wurde bereits an BBN Packet Radio Network vergeben.

Antwort3

Die Entwickler des Internets wussten genau, wie die Hardware funktioniert, und hatten bei ihrer Entwicklung eine Low-Level-Implementierung im Hinterkopf.

Die Werte 0, 127 und 255 sind in der 8-Bit-Assembler- und Maschinensprachenprogrammierung etwas Besonderes, da es „Tricks“ gibt, mit denen Sie diese Werte testen und mit kleineren Anweisungen, die schneller ausgeführt werden als für andere Ganzzahlen, zu anderem Code verzweigen können. 127 ist die höchste vorzeichenbehaftete 8-Bit-Ganzzahl, daher führt eine Erhöhung um 1 zu einem vorzeichenbehafteten Überlauf. Ebenso führt eine Erhöhung um 255 zu einem vorzeichenlosen Überlauf. Das bloße Laden des Werts 0 in ein Register setzt normalerweise ein Null-Flag auf dem Chip. Stellen Sie sich vor, das Netzwerkprogramm sieht in Pseudocode so aus:

if (value == 0) doLocal();
if (value == 127) doLoopback();
if (value == 255) doNetwork();

Obwohl es vom Chip abhängt, konnten die meisten Chips damals diese Tests mit 2 Wörtern, 3 Wörtern bzw. 3 Wörtern (insgesamt 8 Wörter) kodieren, und außerdem wurden diese speziellen Tests wahrscheinlich alle in jeweils einem Taktzyklus ausgeführt. Die Verwendung eines anderen Wertes würde wahrscheinlich jeweils 4 Wörter (insgesamt 12 Wörter) erfordern, was eine 50-prozentige Erhöhung der Codegröße und wahrscheinlich auch eine 50-prozentige Erhöhung der Ausführungszeit bedeutet.

Antwort4

Wenn Sie darüber nachdenken, was eine Localhost- oder Loopback-IP-Adresse bedeutet, werden Sie feststellen, dass Sie diese Adresse oder das Netzwerk, zu dem diese Adresse gehört, niemals außerhalb eines Hosts sehen möchten. (Innerhalb eines Hosts ist es zu dunkel, um sie zu sehen. Entschuldigung an Mark Twain.)

Also musste jemand ein IP-Netzwerk auswählen, das diese Localhost-Adresse repräsentiert. Ich weiß nicht mehr, wer es zuerst gewählt hat, aber es ist in der IETF-Anforderung für Kommentare angegeben, die regelmäßig als „Host-Anforderungen“ herausgegeben wird.

Dies ist schon so lange her, dass damals niemand auf die Idee kam, eine ganze Klasse-A-Adresse zu „verschwenden“.

Der Nutzen von localhost besteht darin, dass Sie über eine fest codierte IP-Adresse mit sich selbst kommunizieren können. Es wurde lange vor dem Domain Name System verwendet. Sie könnten eigentlich jede der gültigen 127.xxx-Adressen verwenden, aber niemand tut das jemals. Sie können nicht heimlich 127 als echtes Netzwerk verwenden, da das RFC „Router Requirements“ das Routing dieses Netzwerks über das Internet untersagt.

verwandte Informationen