Warum sind IPv4-Adressen 32-Bit?

33

Vor vielen Monden, wenn ich nur ein kleines Kind meine Karriere begonnen wird , hatte ich ein Vorstellungsgespräch für eine Low-Level - Entwickler Rolle. Nachdem ich gerade erfahren hatte, wie CIDR implementiert wurde, wollte ich unbedingt mein Wissen unter Beweis stellen.

Leider hat diese Taktik für mich nicht so gut geklappt. Ich erinnere mich, dass ich von der allerersten Frage, die gestellt wurde, völlig sprachlos war (und dann durcheinander war, ging alles bergab). Die Frage war:

Warum sind IPv4-Adressen 32-Bit?

Ich gab sofort zu, dass ich die Antwort nicht kannte , aber ich wusste , dass der ursprüngliche Protokollentwurf den Adressraum in eine 8-Bit-Netzwerknummer und eine 24-Bit-Host-ID aufteilte - deshalb versuchte ich, dies zu rationalisieren das Designer - Protokoll ein Internet von einigen Netzwerken vorgestellt (immerhin es ursprünglich Link zusammen , um einen beabsichtigten wurde spezifisch die jeweils viele Hosts und zur Vereinfachung der Programmierung, hielt alles an Byte - Grenzen ausgerichtet wenige).

Ich erinnere mich, dass der Interviewer mit meiner Antwort unzufrieden war und mir vorschlug, dass der wahre Grund darin besteht, dass es garantiert in ein long intin C passt , was die Implementierungsdetails vereinfacht. Ich war damals jung und grün und akzeptierte dies als vernünftige Antwort und hatte (vor heute) nicht mehr darüber nachgedacht.

Aus irgendeinem Grund ist dieses Gespräch gerade zu mir zurückgekehrt, und jetzt, wo ich darüber nachdenke, scheint es nicht ganz plausibel zu sein:

  1. Bei dem ursprünglichen Adressierungsschema, das Netzwerk- und Hostfelder fester Größe umfasst, ist es unwahrscheinlich, dass ein Entwickler die Verkettung der beiden Felder einer einzelnen Variablen zuordnen wollte (ich habe keinen Zugriff auf frühe IP-Implementierungen, um zu überprüfen, welche tatsächlich in der Praxis gemacht); und

  2. Zu der Zeit , dass die Arbeiten auf TCP / IP begann, wurde C weder standardisiert noch die de facto „lingua franca“ von Low-Level - Software - Entwicklung , dass es heute geworden ist.

War der Vorschlag des Interviewers tatsächlich begründet? Wenn nicht, was waren die wirklichen Gründe , dass die Protokoll - Designer wählten Adressierung 32-Bit?

eggyal
quelle
3
Der gleiche Grund, warum 640 kB ought to be enough for anybody.niemand damit gerechnet hat, dass Toaster und Kühlschränke über einen Internetzugang verfügen.
1
@afwe: Hm. Die Frage war nicht, warum sie nicht zuerst eine größere Zahl gewählt haben? aka warum nur 32-Bit? (Was ist eigentlich der Punkt, an dem sich \ @Jens hervorragend beantwortet), aber was war das Besondere an 32-Bit (und nicht etwa an 16-Bit oder 24-Bit oder 48-Bit)?
Eggyal
@ Downvoter: Möchtest du einen Kommentar abgeben?
Eggyal

Antworten:

23

Hier ist ein Link zu einem Hangout mit Vint Cerf (April 2014), in dem er erklärt, wie er dachte, dass dieses Internet nur ein Experiment sein sollte:

Als wir über das Internet nachdachten (gut überlegt, wird dies eine beliebige Anzahl von Netzwerken sein, die alle miteinander verbunden sind - wir wissen nicht, wie viele und wie sie verbunden sein werden), aber wir haben Netze auf nationaler Ebene dachte "nun , vielleicht gibt es zwei pro Land " (weil es teuer war: Zu diesem Zeitpunkt war Ethernet erfunden, aber es verbreitete sich nicht überall, wie es ein paar Jahre später tat).

Dann sagten wir: " Wie viele Länder gibt es? " (Zwei Netzwerke pro Land, wie viele Netzwerke?) Und wir mussten nicht bei Google nachfragen, also haben wir 128 erraten und das wäre 2 mal 128, das sind 256 Netzwerke (das sind 8) Bits) und dann sagten wir: " Wie viele Computer gibt es in jedem Netzwerk? " und wir sagten: " Wie etwa 16 Millionen? " (das sind weitere 24 Bits), sodass wir eine 32-Bit-Adresse hatten, die 4,3 Milliarden Kündigungen ermöglichte - was ich dachte 1974/3 war genug, um das Experiment zu machen!

Ich hatte dies bereits als Kommentar zu Jens Links Antwort gepostet, aber ich fühlte, dass es ein bisschen mehr auftauchen sollte.

Daniel F
quelle
Mehr als "ein bisschen mehr auftauchen", denke ich, dass dies die eigentliche Frage direkter beantwortet als Jens 'Antwort.
Eggyal
34

Einfache Antwort: Weil Vint Cerf das beschlossen hat . Er dachte, dass er ein experimentelles Protokoll entwarf und hielt 32-Bit für mehr als ausreichend für diesen Zweck; Er hatte nicht erwartet, dass IPv4 in Produktionssystemen verwendet werden würde, und daher wurde die Größe des Adressraums nicht weiter untersucht.

Auf der Google IPv6-Konferenz 2008 hielt er eine Podiumsdiskussion mit dem Titel Wie wird das IPv6-Internet aussehen? währenddessen erzählte er :

Die Entscheidung, dort einen 32-Bit-Adressraum einzurichten, war das Ergebnis eines einjährigen Kampfes zwischen einer Gruppe von Ingenieuren, die sich nicht für 32, 128 oder eine variable Länge entscheiden konnten. Und nach einem Jahr des Kämpfens sagte ich: "Ich bin jetzt bei ARPA, ich leite das Programm, ich bezahle für dieses Zeug und benutze amerikanische Steuerdollar." zur Arbeit gehen. Also sagte ich 32 Bit, es ist genug für ein Experiment, es sind 4,3 Milliarden Abbrüche - sogar die Verteidigungsabteilung benötigt 4,3 Milliarden überhaupt nichts und es konnte sich nicht leisten, 4,3 Milliarden Edge-Geräte zu kaufen, um einen Test durchzuführen. Zu der Zeit dachte ich, wir würden ein Experiment durchführen, um die Technologie zu testen, und wenn es funktionieren würde, hätten wir die Möglichkeit, eine Produktionsversion davon zu erstellen. Nun - [Gelächter] - es ist einfach entkommen!

Transkript von Peter E. Murray .

Jens Link
quelle
7
Ach, wie dumm von mir! Occams Rasiermesser schlägt wieder zu. Zumindest haben Sie mir die selbstgefällige Befriedigung gegeben, zu wissen, dass der Interviewer falsch lag.
Eggyal
2
@ user5025: Ja, das ist möglich (im allgemeinen Fall). Aber wenn Vint sagt, dass dies seine Gründe für die Wahl von 32-Bit für IPv4 waren, ist es schwer zu argumentieren, dass er auch andere hatte.
Eggyal
5
@ user5025: Okay, das ist ein fairer Punkt. Tatsächlich erwähnt er, dass sich die Ingenieure über die Länge stritten, wobei einige 32-Bit befürworteten. Also nehme ich an die Frage , was waren ihre Beweggründe für die Verteidigung 32-Bit (also das, was machte es akzeptabel Vint)?
Eggyal
2
@eggyal: Mein Punkt ist nicht, dass 32-Bit-Ganzzahlen "definitiv" ein motivierender Faktor waren, sondern eher, dass ich es als höchst plausibel betrachte, dass genug Ingenieure, die diese Größe vorschlagen, diesen Faktor als einen Faktor angesehen haben, für den es keine Beweise gibt im gegenteil, ich glaube nicht, dass dies als faktor für die letztendliche auswahl ausgeschlossen werden kann.
Supercat
2
@eggyal: Sie haben gefragt, was Ingenieure dazu motiviert haben könnte , 32 Bits auszuwählen. Meine Absicht war es, diese spezielle Frage zu beantworten. Ich habe einen TCP / IP-Stack auf "Bare Metal" geschrieben und musste mich bei verschiedenen Gelegenheiten mit Adressen befassen, war aber nie daran interessiert, sie zu analysieren - nur um festzustellen, ob sie übereinstimmen. es musste sich also mit ARP befassen, aber nicht mit Gateways.
Supercat
0

Wortgröße . Sie haben Software geschrieben und keine Computerhardware entworfen - obwohl ich mir sicher bin, dass sie Leistung und Portabilität im Auge hatten. Zu dieser Zeit war 32 Bit das word, das longwordoder intoder longIntoder was auch immer. Siehe Auswahl der Wortgröße .

Sie schrieben diese Software "in den ersten Jahrzehnten der 32-Bit-Architekturen (1960er bis 1980er Jahre)." - Wikipedia

Ron Royston
quelle
3
Wenn Sie nicht vorschlagen, dass die TCP / IP-Architekten eine bestimmte Maschinenarchitektur im Auge haben, bin ich mir nicht sicher, wohin Sie mit diesem Argument gehen ... Haben Sie Beweise dafür, dass sie 32- Bitarchitekturen oder sogar, dass die Wortgröße ein relevanter Faktor für die Länge war, die sie für die Netzwerkadresse ausgewählt haben?
Eggyal
@eggyal: Sprachen für 8-Bit- und 16-Bit-Computer enthielten häufig einen 32-Bit-Integer-Datentyp. Sprachen auf 32-Bit-Computern hatten jedoch weit weniger Integer-Datentypen mit mehreren Wörtern. Zumindest auf der Quellcode-Ebene ist das Arbeiten mit 32-Bit-Werten im Wesentlichen so praktisch wie das Arbeiten mit 16-Bit-Werten und auf jeden Fall praktischer als das Arbeiten mit größeren Typen. Für Geräte mit eingeschränkten Kommunikationsanforderungen ist die 32-Bit-Adressierung möglicherweise in Ordnung, wenn sie über komplexere Gateways kommunizieren.
Supercat