¿Por qué las direcciones IPv4 son de 32 bits?

33

Hace muchas lunas, cuando era sólo un wee bairn comenzando mi carrera, tuve una entrevista de trabajo para un papel revelador de bajo nivel. Habiendo aprendido en ese momento cómo se implementó CIDR, estaba ansioso por mostrar mi conocimiento.

Lamentablemente, esa táctica no funcionó demasiado bien para mí. Recuerdo haber quedado completamente anonadado por la primera pregunta que se hizo (y luego, alborotada, todo fue cuesta abajo). La pregunta fue:

¿Por qué las direcciones IPv4 son de 32 bits?

Admití fácilmente que no sabía la respuesta, pero sabía que el diseño del protocolo original dividía el espacio de direcciones en un número de red de 8 bits y un identificador de host de 24 bits, así que traté de racionalizarlo porque Los diseñadores de protocolos imaginaron un Internet de unas pocas redes (después de todo, originalmente estaba destinado a vincular unas pocas específicas ), cada una de las cuales comprendía muchos hosts y, por simplicidad de programación, mantenía todo alineado con los límites de bytes.

Recuerdo que el entrevistador no estaba satisfecho con mi respuesta y me sugirió que la verdadera razón es que está garantizado que cabe dentro de una long inten C, por lo que simplifica los detalles de implementación. Siendo joven y verde en ese momento, acepté eso como una respuesta razonable y (antes de hoy) no había pensado más en ello.

Por alguna razón, esa conversación acaba de regresar a mí y, ahora que reflexiono sobre ella, no parece del todo posible:

  1. Según el esquema de direccionamiento original que comprende campos de host y de red de tamaño fijo, es poco probable que un desarrollador haya querido asignar la concatenación de los dos campos a una sola variable (no tengo acceso a ninguna de las primeras implementaciones de IP para verificar qué en realidad lo hizo en la práctica); y

  2. En el momento en que comenzaron los trabajos en TCP / IP, C no estaba estandarizada ni era la "lengua franca" de facto del desarrollo de software de bajo nivel en el que se ha convertido hoy.

¿La sugerencia del entrevistador fue realmente fundada? Si no, ¿cuáles fueron las razones reales por las que los diseñadores de protocolos eligieron el direccionamiento de 32 bits?

eggyal
fuente
3
La misma razón por la que 640 kB ought to be enough for anybody.Nadie esperaba que las tostadoras y las neveras tuvieran acceso a internet.
1
@afwe: Hm. La pregunta no era ¿por qué no eligieron un número mayor para empezar? aka, ¿por qué solo 32 bits? (que es realmente el punto que aborda la excelente respuesta de \ @Jens), pero ¿qué tiene de especial 32 bits (en lugar de, digamos, 16 bits o 24 bits o 48 bits)?
eggyal
@Downvoter: ¿Quieres comentar?
eggyal

Respuestas:

23

Aquí hay un enlace a un Hangout con Vint Cerf (Abril 2014) donde explica cómo pensaba que esto de Internet se suponía que era solamente un experimento:

Como estábamos pensando en Internet (pensando bien, esta será una cantidad arbitraria de redes interconectadas, no sabemos cuántas y no sabemos cómo estarán conectadas), pero las redes a escala nacional pensó " bueno, tal vez habrá dos por país " (porque era costoso: en este punto, Ethernet se había inventado pero no proliferaba en todas partes, como sucedió unos años más tarde).

Luego dijimos " ¿cuántos países hay? " (Dos redes por país, ¿cuántas redes?) Y no teníamos que preguntar a Google, por lo que supusimos 128 y eso sería 2 veces 128 es 256 redes (eso es 8 bits) y luego dijimos " ¿cuántas computadoras habrá en cada red? " y dijimos " ¿qué tal 16 millones? " (eso es otros 24 bits), así que teníamos una dirección de 32 bits que permitía 4.300 millones de terminaciones, que yo ¡Pensé que en 1974/3 era suficiente para hacer el experimento!

Ya había publicado esto como un comentario a la respuesta de Jens Link, pero sentí que debería aparecer un poco más.

Daniel F
fuente
Más que "aparecer un poco más", creo que esto responde la pregunta real más directamente que la respuesta de Jens.
eggyal
34

Respuesta fácil: porque Vint Cerf lo decidió . Pensó que estaba diseñando un protocolo experimental y consideró que 32 bits era más que suficiente para ese propósito; no esperaba que se usara IPv4 en los sistemas de producción y, por lo tanto, no se pensó más en el tamaño del espacio de direcciones.

En la Conferencia IPv6 de Google 2008, organizó un panel de discusión titulado ¿Cómo será la Internet IPv6? durante el cual contó :

La decisión de poner un espacio de direcciones de 32 bits fue el resultado de la batalla de un año entre un grupo de ingenieros que no podían decidir sobre 32, 128 o longitud variable. Y después de un año de lucha dije: ahora estoy en ARPA, estoy ejecutando el programa, estoy pagando por esto y usando dólares de impuestos estadounidenses, y quería un poco de progreso porque no sabíamos si esto era yendo a trabajar. Así que dije 32 bits, es suficiente para un experimento, son 4,3 mil millones de terminaciones, incluso el departamento de defensa no necesita 4,3 mil millones de nada y de todos modos no podía permitirse comprar 4,3 mil millones de dispositivos de borde para hacer una prueba. Entonces, en ese momento pensé que estábamos haciendo un experimento para probar la tecnología y que si funcionaba tendríamos la oportunidad de hacer una versión de producción. Bueno, [risas], ¡simplemente escapó!

Transcripción de Peter E. Murray .

Jens Link
fuente
77
¡Ay, qué tonto de mi parte! La navaja de Occam golpea de nuevo. Al menos me has dado la satisfacción de saber que el entrevistador estaba equivocado.
eggyal
2
@ user5025: Sí, es posible (en el caso general). Pero si Vint dice que esas fueron sus razones para elegir 32 bits para IPv4, entonces es difícil argumentar que él también tenía otros.
eggyal
55
@ user5025: Bien, ese es un punto justo. De hecho, menciona que los ingenieros estaban discutiendo sobre cuál debería ser la longitud, y algunos abogaron por 32 bits. Entonces, supongo que la pregunta es ¿cuáles fueron sus motivaciones para abogar por 32 bits (es decir, qué lo hizo aceptable para Vint)?
eggyal
2
@eggyal: Mi punto no es que los enteros de 32 bits eran "definitivamente" un factor motivador, sino más bien sugerir que consideraría altamente plausible que suficientes ingenieros sugirieran que el tamaño podría haber considerado ese factor, sin evidencia para el Por el contrario, no creo que pueda descartarse como un factor en la elección final.
supercat
2
@eggyal: Usted preguntó qué podría haber motivado a los ingenieros a elegir 32 bits. Mi intención era responder a esa pregunta en particular. Escribí una pila TCP / IP en "bare metal" y tuve que tratar con direcciones en varias ocasiones, pero nunca me interesó analizarlas, solo para determinar si coincidían [esta pila en particular solo manejaba las conexiones TCP / IP entrantes, así que tuvo que lidiar con ARP, pero no con puertas de enlace].
supercat
0

Tamaño de palabra Estaban escribiendo software, no diseñando hardware de computadora, aunque estoy seguro de que tenían en mente el rendimiento y la portabilidad. En ese momento, era el de 32 bits word, el longwordo into longInto lo que sea. Ver Word Size Choice .

Escribieron este software "durante las primeras décadas de las arquitecturas de 32 bits (de 1960 a 1980)". - Wikipedia

Ron Royston
fuente
3
A menos que sugiera que los arquitectos de TCP / IP tenían en mente una arquitectura de máquina particular, no estoy seguro de a dónde va con este argumento ... ¿tiene alguna evidencia de que estaban usando / diseñando para 32- arquitecturas de bits, o incluso que el tamaño de la palabra era una consideración relevante para la longitud que seleccionaron para la dirección de red?
eggyal
@eggyal: los idiomas para máquinas de 8 y 16 bits a menudo incluían un tipo de datos de enteros de 32 bits, pero era mucho menos común que los idiomas en máquinas de 32 bits tuvieran tipos de datos de enteros de varias palabras. Al menos en el nivel del código fuente, trabajar con valores de 32 bits es esencialmente tan conveniente como trabajar con valores de 16 bits, y definitivamente es más conveniente que trabajar con tipos más grandes. Además, para dispositivos que tienen necesidades de comunicación limitadas, el direccionamiento de 32 bits podría estar bien si se comunican a través de puertas de enlace más sofisticadas.
supercat