Warum ist die localhost-IP 127.0.0.1?

Ich fragte mich, was der Ursprung der Entscheidung ist, localhost's IP-Adresse 127.0.0.1 zu machen. Was ist die" Bedeutung " von 127? was ist die" Bedeutung " von 0.0.1?

Author: John T, 2009-08-29

6 answers

127 ist die letzte Netzwerknummer in einem Klasse-A-Netzwerk mit einer Subnetzmaske von 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 Hostteil sollte jedoch einwandfrei funktionieren und zu 127.0.0.1 zurückkehren. Sie können es selbst versuchen, indem Sie 127.1.1.1 wenn Sie möchten. Warum haben sie bis zur letzten Netzwerknummer gewartet, um dies zu implementieren? Ich glaube nicht, dass es dokumentiert ist.

 89
Author: John T,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2009-08-29 05:50:57

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 zu interpretieren als Bedeutung "dieser", wie in "das Netzwerk".

Zum Beispiel die Adresse 0.0.0.37 könnte als Bedeutung interpretiert werden. 37 in diesem Netzwerk.

...

Die Netzwerknummer 127 der Klasse A ist zugewiesen, die "loopback" - Funktion, die ist, ein Datagramm, das von einem höheren Ebene protokoll zu einer Netzwerk - IP-Adresse sollte in den Host zurückschleifen. Nein datagramm "gesendet" an ein Netzwerk 127 adresse sollte jemals auf jedem erscheinen netzwerk überall.

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

000.rrr.rrr.rrr                 Reserved                     [JBP]
...
127.rrr.rrr.rrr                 Reserved                     [JBP]

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

Ich weiß, dass dies die Frage nicht beantwortet, aber das ist wie folgt weit zurück, wie ich graben konnte. Es hätte sinnvoller sein können, 1.0.0.0 für Loopback zu wählen, aber das wurde bereits dem BBN Packet Radio Network gegeben.

 59
Author: hyperslug,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2009-08-29 07:21:16

Die Designer des Internets wussten wirklich, wie die Hardware funktionierte, und sie entwarfen mit Blick auf die Implementierung auf niedriger Ebene.

Die Werte 0, 127 und 255 sind speziell in der 8-Bit-Assembly-und Maschinensprachenprogrammierung, da es "Tricks" gibt, mit denen Sie diese Werte testen und mit kleineren Anweisungen, die schneller ausgeführt werden als für andere Ganzzahlen, auf anderen Code verzweigen können. 127 ist die höchste vorzeichenbehaftete 8-Bit-Ganzzahl, daher führt das Erhöhen um 1 zu einem vorzeichenbehafteten Überlauf. In ähnlicher Weise führt das Inkrementieren von 255 zu einem vorzeichenlosen Überlauf. Wenn Sie lediglich den Wert 0 in ein Register laden, wird normalerweise ein Null-Flag auf dem Chip gesetzt. 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 diesen Tagen mit 2 Wörtern, 3 Wörtern bzw. 3 Wörtern (insgesamt 8 Wörtern) kodieren, und außerdem wurden diese speziellen Tests wahrscheinlich alle in jeweils 1 Taktzyklus ausgeführt. Die Verwendung eines anderen Werts würde wahrscheinlich erfordern jeweils 4 Wörter (insgesamt 12 Wörter), eine Erhöhung der Codegröße um 50% und wahrscheinlich auch eine Erhöhung der Ausführungszeit um 50%.

 25
Author: Joseph Bui,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2011-04-15 15:36:18

Denn als diese Standards erstellt wurden, waren Computer langsam und normalerweise auf 8-Bit-Register beschränkt. Der Vergleich von Zahlen mit Zahlen war sehr langsam, insbesondere wenn diese Zahlen von hinten abgerufen werden mussten, dann WIRKLICH langsamer Speicher. Register, das heißt "CPU an Bord" Speicher waren viel schneller.

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

Daher waren dies spezielle Zahlen, da sie Programmier-Tricks erlaubten, viele CPU-Zyklen bei häufig durchgeführten Operationen zu sparen.

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

Sie können alte Montageanweisungen wie "BEQ, BNE" (6502 CPUs) für längere Erklärungen überprüfen. Auch überprüfen Sie diese Seite aus.

Am Ende:

0, 255 und 127 könnten alle mit einer eins, 255, Anweisung überprüft werden. Noch mehr Hochsprachen wie C verfügen über" shortuct " - Vergleichsfunktionen, die der Compiler intern zu einer einzigen Anweisung optimieren kann.

Jahre 70 und 80 Programmierer produzierten wirklich großartige Architekturen mit super-knappen Ressourcen, hinter Standards wie IP-Nummerierung gibt es eine Menge Gedanken und Genie.

 6
Author: Dario Fumagalli,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2013-07-11 08:23:08

Wenn Sie darüber nachdenken, 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 sehen möchten. (Innerhalb eines Hosts ist es zu dunkel, um es zu sehen. Entschuldigung an Mark Twain.)

Also musste jemand 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 wurde vor so langer Zeit gemacht, dass die Idee, eine ganze Klasse A-Adresse zu "verschwenden", damals niemandem in den Sinn kam.

Das Dienstprogramm von localhost besteht darin, dass Sie mit einer fest codierten IP-Adresse mit sich selbst sprechen können. Es wurde lange verwendet, bevor es das Domain Name System gab. Sie könnten tatsächlich eine der optionen verwenden.x. x. x gültige Adressen, aber niemand tut es jemals. Sie können sich nicht schleichen und 127 als echtes Netzwerk verwenden, da der RFC" Router Requirements " das Routing dieses Netzwerks in keinem Netzwerk verbietet Internet.

 5
Author: kwe,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2009-08-29 06:02:40

Zuerst die ganze 127.x. x. x. x Bereich zeigt auf Ihren localhost.
127 in binär ist "01111111". "11111111" = 255 und 0 sind reserviert, daher liegt die Wahl auf der Hand:)

 4
Author: kolypto,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2009-08-29 21:21:50