miércoles, 24 de junio de 2015

Historia de La Internet

Orígenes de Internet

La primera descripción registrada de las interacciones sociales que se podían habilitar a través de la red fue una serie de memorandos escritos por J.C.R. Licklider, del MIT, en agosto de 1962, en los que describe su concepto de “Red galáctica”. Imaginó un conjunto de ordenadores interconectados globalmente, a través de los que todo el mundo podría acceder rápidamente a datos y programas desde cualquier sitio. En espíritu, el concepto era muy similar a la Internet de hoy en día. Licklider era el director del programa de investigación informática de DARPA,4 que comenzó en octubre de 1962. Mientras estaba en DARPA convenció a sus sucesores en dicha agencia (Ivan Sutherland, Bob Taylor y Lawrence G. Roberts, investigador del MIT), de la importancia de su concepto de red.
Leonard Kleinrock, del MIT, publicó el primer documento sobre la teoría de conmutación de paquetes en julio de 1961 y el primer libro sobre el tema en 1964 Kleinrock convenció a Roberts de la factibilidad teorética de comunicarse usando paquetes en vez de circuitos, lo que fue un gran paso en el viaje hacia las redes informáticas. El otro paso clave fue conseguir que los ordenadores hablasen entre sí. Para explorar esta idea, en 1965, trabajando con Thomas Merrill, Roberts conectó el ordenador TX-2, en Massachusetts, con el Q-32, en California, mediante una línea telefónica conmutada de baja velocidad, creando la primera (aunque pequeña) red de área amplia del mundo. El resultado de este experimento fue la constatación de que los ordenadores con tiempo compartido podían trabajar bien juntos, ejecutando programas y recuperando datos según fuese necesario en el equipo remoto, pero que el sistema telefónico de conmutación de circuitos era totalmente inadecuado para esa tarea. Se confirmó la convicción de Kleinrock de la necesidad de la conmutación de paquetes.
A finales de 1966, Roberts entró en DARPA para desarrollar el concepto de redes informáticas y rápidamente creó su plan para "ARPANET", que publicó en 1967. En la conferencia en la que presentó el artículo había otra ponencia sobre el concepto de redes de paquetes, que venía del Reino Unido, de la mano de Donald Davies y Roger Scantlebury, del NPL. Scantlebury le comentó a Roberts el trabajo del NPL y el de Paul Baran y otras personas de RAND. El grupo RAND había escrito un artículo sobre redes de conmutación de paquetes para cifrar comunicaciones de voz en el ejército en 1964. La labor del MIT (1961-1967), de RAND (1962-1965) y del NPL (1964-1967) se había llevado a cabo en paralelo sin que los investigadores conociesen el trabajo de los demás. Se adoptó el término “paquete” del trabajo del NPL, y la velocidad de línea propuesta en el diseño de ARPANET pasó de 2,4 kbps a 50 kbps. 

Los primeros conceptos de Internet

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.
Su colaboración fue muy productiva, y la primera versión escrita7 del enfoque resultante se distribuyó en una reunión especial del International Network Working Group (INWG), que se había creado en una conferencia de la Universidad de Sussex en septiembre de 1973. Se había invitado a Cerf a presidir ese grupo, y aprovechó la ocasión para celebrar una reunión con los miembros del INWG que eran numerosos en la Conferencia de Sussex.