it-swarm.com.de

Warum ist localhost IP 127.0.0.1?

Ich habe mich gefragt, woher die Entscheidung stammt, localhosts IP-Adresse 127.0.0.1 zu machen. Was ist die "Bedeutung" von 127? Was ist die "Bedeutung" von 0.0.1?

85
Roee Adler

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

87
John T

Die früheste Erwähnung, die ich in Bezug auf die Zuweisung von 127 als Loopback finden kann, ist November 1986 RFC 990 , verfasst von Reynolds und Postel:

Die Adresse Null ist wie in "diesem Netzwerk" als "dies" zu interpretieren.

Beispielsweise könnte die Adresse 0.0.0.37 als Host 37 in diesem Netzwerk interpretiert werden.

...

Der Klasse-A-Netzwerknummer 127 wird die "Loopback" -Funktion zugewiesen, dh ein Datagramm, das von einem übergeordneten Protokoll an eine Netzwerkadresse 127 gesendet wird, sollte innerhalb des Hosts zurückgeschleift werden. In keinem Netzwerk sollte jemals ein an eine Netzwerkadresse 127 "gesendetes" Datagramm erscheinen.

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

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

0 und 127 waren 1981 die einzigen reservierten Klasse-A-Netzwerke. 0 wurde verwendet, um auf einen bestimmten Host zu verweisen, sodass 127 für Loopback übrig blieb.

Ich weiß, das beantwortet die Frage nicht, aber das ist so weit zurück, wie ich graben konnte. 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 weitergegeben.

56
hyperslug

Die Designer des Internets wussten wirklich, wie die Hardware funktioniert, und sie haben unter Berücksichtigung der Implementierung auf niedriger Ebene entworfen.

Die Werte 0, 127 und 255 sind speziell für die 8-Bit-Assembler- und Maschinensprachenprogrammierung geeignet, da Sie "Tricks" verwenden können, um diese Werte zu testen und mit kleineren Anweisungen, die schneller als für andere Ganzzahlen ausgeführt werden, in anderen Code zu verzweigen. 127 ist die höchste vorzeichenbehaftete 8-Bit-Ganzzahl. Wenn Sie sie also um 1 erhöhen, wird ein vorzeichenbehafteter Überlauf verursacht. In ähnlicher Weise führt das Inkrementieren von 255 zu einem vorzeichenlosen Überlauf. Das bloße Laden des Wertes 0 in ein Register setzt normalerweise ein Null-Flag auf dem Chip. Stellen Sie sich vor, das Netzwerkprogramm sieht im Pseudocode folgendermaßen aus:

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

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

23
Joseph Bui

Wenn Sie sich überlegen, was eine Localhost- oder Loopback-IP-Adresse bedeutet, stellen Sie fest, dass Sie diese Adresse oder das Netzwerk, zu dem diese Adresse gehört, niemals außerhalb eines Hosts anzeigen möchten. (Innerhalb eines Hosts ist es zu dunkel, um es zu sehen. Entschuldigung an Mark Twain.)

Jemand musste also ein IP-Netzwerk auswählen, um diese Localhost-Adresse darzustellen. Ich erinnere mich nicht, wer es zuerst ausgewählt hat, aber es ist in der IETF-Anforderung für Kommentare angegeben, die regelmäßig als "Host-Anforderungen" ausgegeben wird.

Es ist so lange her, dass die Idee, eine ganze Klasse-A-Adresse zu "verschwenden", damals noch niemandem in den Sinn kam.

Der Nutzen von localhost besteht darin, dass Sie mit einer fest codierten IP-Adresse mit sich selbst sprechen können. Es wurde lange vor dem Domain Name System verwendet. Sie könnten tatsächlich eine der gültigen Adressen 127.x.x.x verwenden, aber niemand tut dies jemals. 127 kann nicht als echtes Netzwerk verwendet werden, da der RFC "Router-Anforderungen" nicht zulässt, dass dieses Netzwerk jemals in einem Internet geroutet wird.

5
kwe

Erstens zeigt der gesamte Bereich 127.x.x.x auf Ihren lokalen Host.
127 in der Binärdatei ist "01111111". "11111111" = 255 und 0 sind reserviert, daher liegt die Wahl auf der Hand :)

4
kolypto

Denn als diese Standards erstellt wurden, waren Computer langsam und normalerweise auf 8-Bit-Register beschränkt. Zahlen mit Zahlen zu vergleichen war sehr langsam, besonders wenn diese Zahlen von hinten geholt werden mussten, dann WIRKLICH langsamer Speicher. Register, also "CPU on Board" -Speicher, waren viel schneller.

Außerdem hatten diese alten Computer spezielle, schnellere Anweisungen, um "gleich Null", "anders als Null", "negative/positive Ganzzahl" zu erkennen (wo das Vorzeichen war ... raten Sie mal, das Bit ganz links sieht jetzt eine Verbindung mit 127 aus , das ist die Zahl mit allen binären "1" bis auf das Zeichen ganz links?).

Daher waren dies spezielle Zahlen, weil sie es ermöglichten, mit Programmiertricks viele CPU-Zyklen bei häufig ausgeführten Vorgängen zu sparen.

Sie würden niemals eine "IF CallerIP =" 0 ", sondern eine" IF NotZero (CallerIP) "- Anweisung sehen.

Weitere Erklärungen finden Sie in alten Montageanleitungen wie "BEQ, BNE" (6502 CPUs). Schauen Sie sich auch diese Seite an .

Schlussendlich:

0, 255 und 127 konnten alle mit einer einzigen, schnellsten Anweisung überprüft werden. Selbst höherwertige Sprachen wie C verfügen über "Shortuct" -Vergleichsfunktionen, die der Compiler intern in eine einzige Anweisung optimieren kann.

In den 70er und 80er Jahren haben Programmierer wirklich großartige Architekturen mit äußerst knappen Ressourcen erstellt. Hinter Standards wie der IP-Nummerierung steckt viel Nachdenken und Genialität.

3
Dario Fumagalli