Pourquoi les adresses IPv4 sont-elles 32 bits?

33

Il y a plusieurs lunes, quand j'étais juste un wee bairn commençant ma carrière, j'ai eu un entretien d'embauche pour un rôle de développeur de bas niveau. Ayant à cette époque juste appris comment le CIDR était mis en œuvre, j'avais envie de montrer mes connaissances.

Malheureusement, cette tactique n'a pas très bien fonctionné pour moi. Je me souviens avoir été complètement bouleversé par la toute première question qui avait été posée (et ensuite décoiffée, tout s’est dégradé). La question était:

Pourquoi les adresses IPv4 sont-elles 32 bits?

J'admet volontiers que je ne connais la réponse, mais je ne sais que la conception du protocole d' origine divisé l'espace d'adressage dans un numéro de réseau 8 bits et un hôte 24 bits identifiant-je ai donc essayé de le rationaliser au motif que les concepteurs de protocoles ont imaginé un réseau Internet composé de quelques réseaux (après tout, il était initialement destiné à en relier quelques-uns spécifiques ), chacun comprenant de nombreux hôtes et, pour une programmation simplifiée, tout était aligné sur les limites d’octets.

Je me souviens que l’intervieweur n’était pas satisfait de ma réponse et me suggérait que la vraie raison était qu’elle était garantie pour tenir dans un long intC, simplifie donc les détails de la mise en œuvre. Étant jeune et vert à l’époque, j’ai accepté cela comme une réponse raisonnable et (avant aujourd’hui) je n’y pensais plus.

Pour une raison quelconque, cette conversation vient de me revenir et, maintenant que j'y réfléchis, cela ne semble pas tout à fait plausible:

  1. Dans le schéma d’adressage original comprenant des champs hôte et réseau de taille fixe, il est peu probable qu'un développeur ait voulu attribuer la concaténation des deux champs à une seule variable (je n’ai pas accès aux premières implémentations IP pour vérifier ce qu’elles fait effectivement); et

  2. Au début des travaux sur TCP / IP, C n'était ni normalisé ni la "lingua franca" de facto du développement de logiciels de bas niveau qu'il est devenu aujourd'hui.

La suggestion de l'intervieweur était-elle réellement fondée en fait? Sinon, quelles sont les vraies raisons pour lesquelles les concepteurs de protocole ont choisi l'adressage 32 bits?

eggyal
la source
3
Même raison pour laquelle 640 kB ought to be enough for anybody.personne ne s'attendait à ce que les grille-pain et les réfrigérateurs aient accès à Internet.
1
@ Afwe: Hm. La question n'était pas pourquoi ils n'ont pas choisi un plus grand nombre pour commencer? aka pourquoi seulement 32 bits? (ce qui est vraiment le point que les excellentes adresses de réponses de @Jens), mais plus qu’est-ce qui était si spécial à propos de 32 bits (plutôt que, par exemple, 16 bits, 24 bits ou 48 bits)?
eggyal
@Downvoter: Vous voulez commenter?
eggyal

Réponses:

23

Voici un lien vers un Hangout avec Vint Cerf (avril 2014) où il explique comment il pensait que cet internet était supposé être une expérience uniquement:

Comme nous l' avons pensé à Internet ( en pensant bien, cela va être un nombre arbitraire de réseaux qui communiquent entre eux - nous ne savons pas combien et nous ne savons pas comment ils seront connectés), mais nationaux réseaux à grande échelle nous Je me suis dit " bon, peut-être qu’il y en aura deux par pays " (parce que cela coûtait cher: à ce stade, Ethernet avait été inventé mais il ne proliférait pas partout, comme il l’a fait quelques années plus tard).

Ensuite, nous avons dit " combien de pays y a-t-il? " (Deux réseaux par pays, combien de réseaux?) Et nous n'avions pas Google à poser. Nous avons donc deviné à 128 et ce serait 2 fois 128 bits) et nous dit « combien d'ordinateurs seront - il y avoir sur chaque réseau? » et nous dit : « que diriez - vous de 16 millions? (qui est encore 24 bits) donc nous avions une adresse de 32 bits qui a permis à 4,3 » milliards de terminaisons - que je pensé en 1974/3 était suffisant pour faire l'expérience!

J'avais déjà posté cela en tant que commentaire sur la réponse de Jens Link, mais je sentais que cela devait faire surface un peu plus.

Daniel F
la source
Plus que "surface un peu plus", je pense que cela répond à la question réelle plus directement que la réponse de Jens.
eggyal
34

Réponse facile: parce que Vint Cerf en a décidé ainsi . Il pensait concevoir un protocole expérimental et considérait que 32 bits était plus que suffisant pour cela. il ne s'attendait pas à utiliser IPv4 dans les systèmes de production et n'a donc pas réfléchi davantage à la taille de l'espace d'adressage.

Lors de la conférence Google IPv6 2008, il a animé une table ronde intitulée A quoi ressemblera l'Internet IPv6? au cours de laquelle il a raconté :

La décision de créer un espace d'adressage de 32 bits résultait d'une bataille d'un an entre un groupe d'ingénieurs qui ne parvenaient pas à se décider sur 32, 128 ou une longueur variable. Et après un an de combats, j’ai dit - je suis maintenant à l’ARPA, je dirige le programme, je paie pour cela et utilise l’argent des contribuables américains - et je voulais des progrès, car nous ne savions pas si c’était Aller au travail. Alors j'ai dit 32 bits, c'est suffisant pour une expérience, c'est 4,3 milliards de licenciements - même le ministère de la Défense n'a besoin de 4,3 milliards de rien et il ne pourrait pas se permettre d'acheter 4,3 milliards d'appareils de pointe pour faire un test de toute façon. Donc, à l'époque, je pensais que nous faisions une expérience pour prouver la technologie et que si cela fonctionnait, nous aurions l'occasion d'en faire une version de production. Eh bien - [rires] - ça s'est échappé!

Transcription de Peter E. Murray .

Jens Link
la source
7
Agh, quelle folie de moi! Le rasoir d'Occam frappe à nouveau. Au moins, vous m'avez donné la satisfaction de savoir que l'intervieweur avait tort.
eggyal
2
@ user5025: Oui, c'est possible (dans le cas général). Mais si Vint affirme que c’est pour ces raisons qu’il a choisi la version 32 bits pour IPv4, il est alors difficile de soutenir qu’il en avait également d’autres.
eggyal
5
@ user5025: D'accord, c'est un bon argument. En effet, il mentionne que les ingénieurs se disputaient quant à la longueur, certains préconisant le 32 bits. Donc, je suppose que la question est de savoir quelles étaient leurs motivations pour préconiser le 32 bits (c'est-à-dire ce qui le rendait acceptable pour Vint)?
eggyal
2
@eggyal: Mon point n'est pas que les entiers 32 bits soient "définitivement" un facteur de motivation, mais plutôt de suggérer que je considérerais comme hautement plausible qu'un nombre suffisant d'ingénieurs suggérant que la taille aurait pu considérer qu'un facteur Au contraire, je ne pense pas que cela pourrait être exclu en tant que facteur dans le choix éventuel.
Supercat
2
@eggyal: Vous avez demandé ce qui aurait pu motiver les ingénieurs à choisir 32 bits. Mon intention était de répondre à cette question particulière. J'ai écrit une pile TCP / IP sur du "métal nu" et ai dû traiter des adresses à diverses occasions, mais je n'ai jamais cherché à les analyser - uniquement pour déterminer si elles correspondaient [cette pile particulière ne traitait que les connexions TCP / IP entrantes, il fallait donc traiter avec ARP, mais pas avec les passerelles].
Supercat
0

Taille du mot . Ils étaient en train d’écrire des logiciels et non de concevoir du matériel informatique - même si je suis sûr qu’ils avaient à l’esprit performance et portabilité. A cette époque, 32 bits était le word, le longword, intou longIntou quoi que. Voir Choix de la taille des mots .

Ils ont écrit ce logiciel "pendant les premières décennies d'architectures 32 bits (des années 1960 aux années 1980)". - Wikipedia

Ron Royston
la source
3
À moins que vous n'indiquiez que les architectes de TCP / IP avaient à l'esprit une architecture de machine particulière, je ne sais pas trop où vous voulez en venir avec cet argument ... avez-vous des preuves qu'ils utilisaient / concevaient pour 32 - architectures de bits, ou même que la taille du mot était une considération pertinente à la longueur choisie pour l'adresse réseau?
eggyal
@eggyal: Les langues pour les machines 8 bits et 16 bits incluaient souvent un type de données entier 32 bits, mais il était beaucoup moins courant que les langues sur des machines 32 bits aient des types de données entiers de plusieurs mots. Au moins au niveau du code source, travailler avec des valeurs 32 bits est essentiellement aussi pratique que de travailler avec des valeurs 16 bits et certainement plus pratique que de travailler avec des types plus volumineux. De plus, pour les périphériques dont les besoins en communication sont limités, l'adressage 32 bits pourrait s'avérer très utile s'ils communiquent via des passerelles plus sophistiquées.
Supercat