Un datagrama es una unidad de transferencia básica asociada a una red de conmutación de paquetes . Los datagramas suelen estar estructurados en secciones de encabezado y carga útil . Los datagramas proporcionan un servicio de comunicación sin conexión a través de una red de conmutación de paquetes. La entrega, el tiempo de llegada y el orden de llegada de los datagramas no necesitan estar garantizados por la red.
A principios de la década de 1970, el término datagrama fue creado mediante la combinación de las palabras datos y telegrama por el ponente del CCITT sobre conmutación de paquetes, [1] Halvor Bothner-By . [2] [3] Aunque la palabra era nueva, el concepto ya tenía una larga historia.
En 1964, Paul Baran describió, en un informe de la Corporación RAND , una red militar hipotética que tenía que resistir un ataque nuclear. Pequeños bloques de mensajes estandarizados , con direcciones de origen y destino, se almacenaban y reenviaban en nodos informáticos de una red informática en malla altamente redundante. Baran escribió: "El usuario de la red que ha establecido una conexión virtual con una estación final y ha transmitido mensajes... también podría ver el sistema como una caja negra que proporciona una conexión de circuito aparente". [4] El concepto de lo que ahora llamamos un circuito virtual aparece en el diseño, [5] aunque no se construyó ninguna red.
En 1967, Donald Davies publicó un artículo seminal en el que introdujo el paquete y la conmutación de paquetes . Su propuesta de red central es similar a la propuesta por Paul Baran, aunque desarrollada de forma independiente. Davies asume que "todos los usuarios de la red se proveerán de algún tipo de control de errores". Su objetivo es una "red de comunicación de portadora común". Para soportar el acceso remoto a los servicios informáticos por parte de los terminales de usuario, que en ese momento se transmitían carácter a carácter, incluyó, en la periferia de la red, computadoras de interfaz que convierten los flujos de caracteres en flujos de paquetes y viceversa. [6] Davies escribió: "Realmente estábamos bastante en contra del circuito virtual, porque creíamos que una red de comunicación sólo debería ocuparse de los paquetes, y que cualquier protocolo involucrado en el ensamblaje de estos paquetes debería realizarse de extremo a extremo, entre los propios clientes". [5]
En 1970, Lawrence Roberts y Barry D. Wessler publicaron un artículo sobre ARPANET , la primera red de conmutación de paquetes de múltiples nodos. [7] Un artículo adjunto describía sus nodos de conmutación (los IMP ) y sus formatos de paquetes. [8] El núcleo de la red realizaba la conmutación de datagramas como en el modelo de Baran y Davies, pero el servicio ofrecido a los hosts por la red estaba orientado a la conexión . [9] [10] De este modo, se ofrecía un servicio de transferencia de mensajes fiable a los ordenadores de los usuarios, simplificando así enormemente el diseño de la red. Esto hizo de ARPANET lo que vendría a llamarse una red de circuitos virtuales . [11]
Roberts presentó la idea de la conmutación de paquetes a los profesionales de las comunicaciones y se enfrentó a la ira y la hostilidad. Antes de que ARPANET estuviera en funcionamiento, argumentaron que los buffers de los enrutadores se agotarían rápidamente. Después de que ARPANET estuvo en funcionamiento, argumentaron que la conmutación de paquetes nunca sería económica sin el subsidio del gobierno. Baran se enfrentó al mismo rechazo y, por lo tanto, no logró convencer a los militares para que construyeran una red de conmutación de paquetes. [12]
En 1973, Louis Pouzin presentó su diseño para CYCLADES , la primera red a gran escala que implementaba el modelo de datagrama de Davies puro. [13] El equipo de CYCLADES ha sido así el primero en abordar el problema altamente complejo de proporcionar a las aplicaciones de usuario un servicio de circuito virtual fiable [14] mientras se utiliza el principio de extremo a extremo en un servicio de red que se sabe que posiblemente produzca pérdidas y reordenamientos de datagramas no despreciables. [15] Aunque la preocupación de Pouzin "en una primera etapa no es hacer un gran avance [sic] en la tecnología de conmutación de paquetes, sino construir una herramienta de comunicaciones fiable para Cyclades", [13] dos miembros de su equipo, Hubert Zimmerman y Gérard Le Lann , hicieron contribuciones significativas al diseño del TCP de Internet que Vint Cerf , su diseñador principal, reconoció. [16]
En 1981, la Agencia de Proyectos de Investigación Avanzada de Defensa ( DARPA ) publicó la primera especificación del Protocolo de Internet (IP). Introdujo una importante evolución del concepto de datagrama: la fragmentación . [17] Con la fragmentación, algunas partes de la red global pueden utilizar tamaños de paquete grandes (normalmente redes de área local para minimizar la sobrecarga de procesamiento), mientras que otras pueden imponer tamaños de paquete más pequeños (normalmente redes de área amplia para minimizar el tiempo de respuesta). Los nodos de red pueden fragmentar un datagrama en varios paquetes más pequeños.
En 1999, el Grupo de Trabajo de Ingeniería de Internet (IETF) sancionó el uso de la ya ampliamente implementada traducción de direcciones de red (NAT), por la cual cada dirección pública puede ser compartida por varios dispositivos privados. [18] Con ella, se retrasó el inminente agotamiento de las direcciones de Internet , dejando tiempo suficiente para introducir IPv6 , la nueva generación de protocolo de Internet que admite direcciones más largas. Para ello, se relajó el principio inicial de transparencia total de la red de extremo a extremo para los datagramas: los nodos NAT tenían que gestionar estados por conexión, lo que los hacía en parte orientados a la conexión .
En 2015, el IETF actualizó su RFC 2309 de 1998 , que indicaba que los nodos de conmutación de datagramas realizan una gestión activa de colas (AQM), para convertirla en una recomendación de mejores prácticas actual más sólida y detallada mediante la publicación del RFC 7567. Si bien el modelo de colas de datagramas inicial era simple de implementar y no necesitaba más ajustes que las longitudes de las colas, se consideró necesario el soporte de mecanismos más sofisticados y parametrizados "para mejorar y preservar el rendimiento de Internet" ( RED , ECN , etc.). También se solicitó una mayor investigación sobre el tema, con una lista de elementos identificados. [19]
El término datagrama se define de la siguiente manera: [20]
"Una entidad de datos autónoma e independiente que transporta suficiente información para ser enviada desde la computadora de origen a la de destino sin depender de intercambios previos entre esta computadora de origen y destino y la red de transporte".
— RFC 1594
Un datagrama debe ser autónomo sin depender de intercambios anteriores porque no hay una conexión de duración fija entre los dos puntos de comunicación como ocurre, por ejemplo, en la mayoría de las conversaciones telefónicas de voz. [21]
El servicio de datagramas se compara a menudo con un servicio de entrega de correo; el usuario sólo proporciona la dirección de destino, pero no recibe ninguna garantía de entrega ni confirmación en caso de recepción exitosa. Por lo tanto, se considera que el servicio de datagramas no es confiable . El servicio de datagramas enruta los datagramas sin crear primero una ruta predeterminada. Por lo tanto, se considera que el servicio de datagramas no tiene conexión . Tampoco se tiene en cuenta el orden en el que se envían o reciben este y otros datagramas. De hecho, muchos datagramas del mismo grupo pueden viajar por diferentes rutas antes de llegar al mismo destino en un orden diferente . [22]
Cada datagrama tiene dos componentes, un encabezado y una carga útil de datos . El encabezado contiene toda la información necesaria para el enrutamiento desde el equipo de origen hasta el destino sin depender de intercambios previos entre el equipo y la red. Los encabezados pueden incluir direcciones de origen y destino, así como campos de tipo y longitud . La carga útil son los datos que se van a transportar. Este proceso de anidación de cargas útiles de datos en un encabezado etiquetado se denomina encapsulación .
El Protocolo de Internet (IP) define estándares para varios tipos de datagramas. La capa de Internet es un servicio de datagramas proporcionado por un IP. Por ejemplo, UDP es ejecutado por un servicio de datagramas en la capa de Internet. IP es un servicio de entrega de mensajes totalmente sin conexión, de máximo esfuerzo y poco confiable. TCP es un protocolo de nivel superior que se ejecuta sobre IP y proporciona un servicio confiable orientado a la conexión.
tres parámetros especifican de forma única una conexión entre los hosts de origen y destino." "El IMP de destino devuelve un acuse de recibo positivo de la recepción del mensaje al IMP de origen, que a su vez pasa este acuse de recibo al host de origen." "Cada enlace es unidireccional y está controlado por la red, de modo que no se puede enviar más de un mensaje a la vez a través de él.
Sin embargo, Arpanet tenía sus deficiencias, ya que no era una verdadera red de datagramas ni proporcionaba corrección de errores de extremo a extremo.
Arpanet era un circuito virtual. "Esencialmente, un servicio de circuito virtual que utilizaba datagramas internos.