La ARPANET original se convirtió en Internet. Internet se basó en la idea de que habrÃa múltiples redes independientes con un diseño bastante arbitrario, empezando por ARPANET como red pionera de conmutación de paquetes, pero que pronto incluirÃa redes de paquetes satélite, redes terrestres de radiopaquetes y otras redes. Internet tal y como la conocemos hoy en dÃa plasma una idea técnica subyacente fundamental, que es la de red de arquitectura abierta. En este enfoque, la selección de una tecnologÃa de redes no la dictaba una arquitectura particular de redes, sino que la podÃa elegir libremente un proveedor y hacerla trabajar con las demás redes a través de una âmetaarquitectura de interredesâ. Hasta ese momento solo habÃa un método general para federar redes. Era el método tradicional de conmutación de circuitos, en el que las redes se interconectaban a nivel de circuito, pasando bits individuales de forma sÃncrona a través de una parte de un circuito completo entre un par de ubicaciones finales. Recordemos que Kleinrock habÃa demostrado en 1961 que la conmutación de paquetes era un método de conmutación más eficiente. Además de la conmutación de paquetes, las interconexiones entre redes con fines especiales eran otra posibilidad. Aunque habÃa otras maneras limitadas de interconectar redes diferentes, era necesario usar una como componente de la otra, y la primera no actuaba como par de la segunda ofreciendo servicios de extremo a extremo.
En una red de arquitectura abierta, las redes individuales se pueden diseñar y desarrollar por separado, cada una con su propia interfaz única, que puede ofrecerse a usuarios y otros proveedores, incluyendo otros proveedores de Internet. Se puede diseñar cada red según el entorno especÃfico y los requisitos de los usuarios de esa red. En general, no existen restricciones sobre el tipo de redes que se pueden incluir o sobre su alcance geográfico, aunque ciertas consideraciones pragmáticas dictaminan lo que tiene sentido ofrecer.
La idea de las redes de arquitectura abierta la introdujo por primera vez Kahn, poco después de llegar a DARPA, en 1972. Su labor era originalmente parte del programa de radiopaquetes, pero posteriormente se convirtió en un programa independiente por derecho propio. En aquel momento, el programa se llamó âInternettingâ. La clave para que el sistema de radiopaquetes funcionase era un protocolo de extremo a extremo fiable que pudiera mantener una comunicación efectiva frente a bloqueos y otras interferencias de radio, o soportar cortes intermitentes como los causados cuando se entra en un túnel o el terreno bloquea la señal. Kahn, al principio, se planteó desarrollar un protocolo solo para la red de radiopaquetes, ya que asà evitarÃa tratar con una multitud de diferentes sistemas operativos, y seguir usando NCP.
Sin embargo, NCP no tenÃa la capacidad de dirigirse a redes (ni a máquinas) que estuvieran más allá de un IMP de destino de ARPANET, de modo que también hacÃa falta algún cambio en NCP. (Se asumÃa que ARPANET no se podÃa cambiar en este sentido). NCP dependÃa de ARPANET para ofrecer fiabilidad de extremo a extremo. Si se perdÃa algún paquete, el protocolo (y probablemente las aplicaciones a las que este daba soporte) se pararÃa de repente. En este modelo, NCP no tenÃa control de errores de host de extremo a extremo, ya que ARPANET serÃa la única red, y tan fiable que no harÃa falta un control de errores por parte de los hosts. Asà pues, Kahn decidió desarrollar una nueva versión del protocolo que podrÃa cubrir las necesidades de un entorno de redes de arquitectura abierta. Este protocolo se llamarÃa más adelante Protocolo de Control de Transmisión/Protocolo de Internet (TCP/IP). Mientras que NCP tendÃa a actuar como un controlador de dispositivo, el nuevo protocolo se parecerÃa más a un protocolo de comunicaciones.
Cuatro reglas básicas fueron fundamentales en la primera concepción de Kahn:
- Cada red diferente deberÃa mantenerse por sà misma, y no debÃa ser necesario cambio interno alguno para que esas redes se conectasen a Internet.
- La comunicación se harÃa en base al mejor esfuerzo. Si un paquete no llegaba a su destino final, se retransmitÃa poco después desde el origen.
- Se usarÃan cajas negras para conectar las redes; más adelante, estas cajas negras se llamarÃan puertas de enlace y enrutadores. Las puertas de enlace no guardarÃan información acerca de los flujos individuales de paquetes que pasaban por las mismas, manteniendo su sencillez y evitando la complicación de la adaptación y la recuperación a partir de varios modos de error.
- No habrÃa control global a nivel operativo.
Otros problemas clave que habÃa que resolver eran:
- Algoritmos para evitar que los paquetes perdidos impidiesen permanentemente las comunicaciones y permitir que dichos paquetes se retransmitiesen correctamente desde el origen.
- Ofrecer âsegmentaciónâ de host a host para que se pudiesen enviar múltiples paquetes desde el origen hasta el destino, según el criterio de los hosts, si las redes intermedias lo permitÃan.
- Funciones de puerta de enlace para poder reenviar paquetes de manera adecuada. Esto incluÃa interpretar encabezados IP para enrutar, manejar interfaces, dividir paquetes en partes más pequeñas si era necesario, etc.
- La necesidad de sumas de verificación de extremo a extremo, reensamblaje de paquetes a partir de fragmentos y detección de duplicados.
- La necesidad de un abordaje global
- Técnicas para el control del flujo de host a host.
- Interfaces con los diferentes sistemas operativos
- HabÃa además otras preocupaciones, como la eficacia en la implementación y el rendimiento de las redes, pero estas, en principio, eran consideraciones secundarias.
Kahn comenzó a trabajar en un conjunto orientado a las comunicaciones de principios para sistemas operativos en BBN y documentó algunas de sus ideas iniciales en un memorándum interno de BBN titulado «Principios de comunicación para sistemas operativos«. En este momento, se dio cuenta de que serÃa necesario conocer los detalles de implementación de cada sistema operativo para tener la oportunidad de integrar cualquier protocolo nuevo de una forma eficaz. Asà pues, en la primavera de 1973, tras comenzar el trabajo de lo que serÃa Internet, pidió a Vint Cerf (que entonces estaba en Stanford) que colaborase con él en el diseño detallado del protocolo. Cerf habÃa estado involucrado de lleno en el diseño y desarrollo original de NCP, y ya tenÃa conocimiento sobre las interfaces de los sistemas operativos existentes. Asà que, armados con el enfoque arquitectónico de Kahn para la parte de comunicaciones y con la experiencia de Cerf en NCP, se unieron para crear lo que se convertirÃa en TCP/IP.
El toma y daca fue muy productivo y la primera versión escrita7 del enfoque resultante se distribuyó como INWG # 39 en una reunión especial del International Network Working Group (INWG) en la Universidad de Sussex en septiembre de 1973. Posteriormente, se publicó una versión refinada en 1974. El INWG se creó en octubre de 1972 en la Conferencia Internacional de Comunicaciones Informáticas organizada por Bob Kahn y otros, y Cerf fue invitado a presidir este grupo.
Emergieron algunos enfoques básicos de esta colaboración entre Kahn y Cerf:
- La comunicación entre dos procesos consistirÃa lógicamente en una secuencia larguÃsima de bytes (los llamaron octetos). Se usarÃa la posición de un octeto en la secuencia para identificarlo.
- El control de flujo se harÃa usando ventanas deslizantes y confirmaciones (acks). El destino podrÃa decidir cuándo confirmar, y cada ack devuelta se acumularÃa para todos los paquetes recibidos hasta ese momento.
- No se concretó la manera exacta en la que el origen y el destino acordarÃan los parámetros de división de particiones que se usarÃa. Al principio se usaban los valores predeterminados.
- Aunque en ese momento se estaba desarrollando Ethernet en Xerox PARC, la proliferación de LAN no se imaginaba entonces, y mucho menos la de los ordenadores personales y las estaciones de trabajo. El modelo original era de redes nacionales como ARPANET, y se esperaba que existiese un pequeño número de las mismas. Asà pues, se usó una dirección IP de 32 bits, en la que los primeros 8 bits indicaban la red y los 24 bits restantes designaban el host de esa red. Fue evidente que habrÃa que reconsiderar esta suposición, la de que serÃa suficiente con 256 redes en el futuro inmediato, cuando empezaron a aparecer las LAN a finales de los años 70.
El artÃculo original de Cerf y Kahn sobre Internet describÃa un protocolo, llamado TCP, que ofrecÃa todos los servicios de transporte y reenvÃo de Internet. La intención de Kahn era que el protocolo TCP soportase una serie de servicios de transporte, desde la entrega secuenciada totalmente fiable de datos (modelo de circuito virtual) hasta un servicio de datagrama, en el que la aplicación hacÃa un uso directo del servicio de red subyacente, lo que podÃa implicar la pérdida, la corrupción y la reordenación de paquetes. Sin embargo, el primer intento de implementar TCP produjo una versión que solo permitÃa circuitos virtuales. Este modelo funcionó bien para aplicaciones de inicio de sesión remoto y transferencia de archivos, pero algunos de los primeros trabajos en aplicaciones de red avanzadas, en particular la voz por paquetes de los años 70, dejaron claro que en algunos casos la pérdida de paquetes no podÃa ser corregida por TCP, y la aplicación deberÃa encargarse de ella. Esto llevó a reorganizar el TCP original en dos protocolos, el IP simple, que solo dirigÃa y reenviaba paquetes individuales, y el TCP por separado, que se ocupaba de funciones del servicio como el control de flujos y la recuperación de paquetes perdidos. Para las aplicaciones que no querÃan los servicios de TCP, se añadió una alternativa llamada Protocolo de datagramas de usuario (UDP) para ofrecer acceso directo a los servicios básicos de IP.
Una de las principales motivaciones iniciales de ARPANET e Internet era compartir recursos, por ejemplo, permitir a los usuarios de las redes de radiopaquetes acceder a sistemas de tiempo compartido conectados a ARPANET. Conectar ambos era mucho más económico que duplicar estos ordenadores tan caros. Sin embargo, aunque la transferencia de archivos y el inicio de sesión remoto (Telnet) eran aplicaciones muy importantes, el correo electrónico ha sido, probablemente, la innovación de aquella época con mayor impacto. El correo electrónico ofreció un nuevo modelo de comunicación entre las personas, y cambió la naturaleza de la colaboración, primero en la creación de la propia Internet (como se comenta a continuación) y después para gran parte de la sociedad.
Se propusieron otras aplicaciones en los primeros tiempos de Internet, incluyendo la comunicación de voz basada en paquetes (el precursor de la telefonÃa por Internet), varios modelos para compartir archivos y discos y los primeros programas âgusanoâ que mostraron el concepto de agentes (y, por supuesto, virus). Un concepto clave de Internet es que no se habÃa diseñado solo para una aplicación, sino como una infraestructura general en la que se podÃan concebir nuevas aplicaciones, como se ilustró más adelante con la aparición de la World Wide Web. Es la naturaleza generalista del servicio que ofrecen TCP e IP la que lo hace posible.