UDP: ¿qué es el protocolo UDP?
La comunicación de sistemas en redes domésticas y corporativas locales y en redes públicas como Internet se basa normalmente en la familia de protocolos de Internet. De todos ellos, el más conocido es sin duda el Protocolo de Internet (IP), que no solo es responsable del direccionamiento y la fragmentación de los datagramas, sino que también define cómo se describe la información sobre el origen y el destino. No obstante, la transmisión de los datos se lleva a cabo normalmente mediante el protocolo de transporte TCP (Transmission Control Protocol), orientado a la conexión, por lo que las redes se denominan a menudo redes TCP/IP. Debido a que el protocolo TCP, aunque proporciona seguridad, también retrasa la transmisión, David Patrick Reed publicó en 1980 su idea del protocolo de datagramas de usuario (User datagram protocol o UDP) como una alternativa más simple y rápida al protocolo estándar.
¿Qué es UDP (User datagram protocol)?
El protocolo de datagramas de usuario, abreviado como UDP, es un protocolo que permite la transmisión sin conexión de datagramas en redes basadas en IP. Para obtener los servicios deseados en los hosts de destino, se basa en los puertos que están listados como uno de los campos principales en la cabecera UDP. Como muchos otros protocolos de red, UDP pertenece a la familia de protocolos de Internet, por lo que debe clasificarse en el nivel de transporte y, en consecuencia, se encuentra en una capa intermedia entre la capa de red y la capa de aplicación.
El protocolo UDP es una alternativa directa al protocolo más utilizado, el TCP, aunque ambos se diferencian sobre todo en un punto: mientras que la transmisión en el protocolo TCP tiene lugar una vez se ha producido el enlace obligatorio de 3 vías (con acuse de recibo mutuo entre el emisor y el receptor, incluida la sesión de comunicación), el protocolo UDP no utiliza este procedimiento con el fin de mantener el tiempo de transmisión lo más bajo posible.
Mediante el protocolo de datagramas de usuario, una aplicación puede enviar información muy rápidamente, ya que no es necesario establecer una conexión con el receptor ni esperar una respuesta. Sin embargo, no hay garantía de que los paquetes vayan a llegar completos y respetando el orden en el que fueron enviados. Además, este protocolo no ofrece ninguna protección frente a la alteración o acceso por parte de terceros. Sin embargo, el UDP puede añadir opcionalmente una suma de verificación (que es obligatoria en IPv6) que permite detectar los paquetes defectuosos.
El UDP (User datagram protocol) es un protocolo sin conexión de la familia de protocolos de Internet que funciona en la capa de transporte y fue especificado en 1980 en la RFC (Request for Comments) 768. El protocolo UDP se utiliza para transmitir datagramas de forma rápida en redes IP y funciona como una alternativa sencilla y sin retardos del protocolo TCP. Se usa principalmente para consultas DNS, conexiones VPN y para el streaming de audio y vídeo.
Resumen de las características del protocolo UDP
Para comprender a fondo cómo funciona la transmisión de datagramas en este protocolo, resulta útil analizar detenidamente cuáles son las propiedades del protocolo de datagramas de usuario.
- El protocolo UDP funciona sin conexión: el protocolo UDP se caracteriza porque permite el envío de datagramas a través de la red sin que se haya establecido previamente una conexión entre el emisor y el receptor. Los datagramas respectivos se envían a la dirección IP preferida de la secuencia especificando el puerto de destino, sin que sea necesario que el ordenador asociado al mismo tenga que dar una respuesta. No obstante, cuando los paquetes tienen que ser devueltos al emisor, existe la posibilidad de incluir en la cabecera UDP información sobre el puerto de origen.
- UDP utiliza puertos: al igual que el TCP, el protocolo UDP utiliza puertos para permitir que los datagramas se transfieran a los protocolos correctos, es decir, a las aplicaciones elegidas del sistema de destino. Los puertos quedan definidos mediante un número conforme a un rango de valores válidos, estando reservado el rango de 0 a 1023 para los servicios fijos.
- El protocolo UDP permite una comunicación rápida y sin retardos: el protocolo de transporte es el adecuado para una transmisión de datos rápida debido a que no hay que llevar a cabo una configuración de la conexión. Esto resulta también del hecho de que la pérdida de un paquete individual afecta exclusivamente a la calidad de la transmisión. En el caso de conexiones TCP, en cambio, se intenta reenviar de nuevo los paquetes perdidos de forma automática, lo que provoca que todo el proceso de transmisión se detenga.
- El protocolo UDP no ofrece ninguna garantía de seguridad e integridad de los datos: la ausencia de acuse de recibo mutuo entre el emisor y el receptor garantiza que la velocidad de transmisión en el protocolo UDP sea excelente; no obstante, el protocolo no puede garantizar la seguridad ni la integridad de los datagramas. Tampoco puede garantizar el orden de los paquetes enviados. Por ello, los servicios que utilizan UDP deben aplicar sus propias medidas de corrección y protección.
La característica más importante del protocolo de datagramas de usuario es que permite enviar datagramas sin que se haya establecido previamente una conexión. Esto se traduce en la ventaja de poder transmitir con gran velocidad, aunque conlleva que la información transmitida sea fácilmente alterada, la pérdida de paquetes no sea corregida y la clasificación de los paquetes sea parcialmente arbitraria. Por esta razón, las aplicaciones UDP deben estar capacitadas para trabajar correctamente con datagramas perdidos o no clasificados y aplicar sus propios mecanismos de corrección y seguridad.
¿Cómo se estructura la cabecera UDP?
Como es típico en todos los protocolos, los paquetes UDP consisten en una cabecera (header) y los datos reales del usuario. La cabecera UDP contiene toda la información necesaria para la transmisión de datos utilizando el protocolo de transporte y hace que un paquete UDP se pueda identificar como tal. La cabecera UDP consta de 4 campos y está dividida en 2 bloques de 32 bits con la siguiente estructura:
Bits 0–15 | Bits 16–31 | |
---|---|---|
cero | Puerto de origen | Puerto de destino |
32 | Longitud del mensaje | Suma de verificación |
Los primeros 16 bits de la cabecera identifican el puerto de origen desde el que se ha enviado un datagrama concreto. El receptor necesita esta información para poder responder al paquete. Ya que UDP funciona sin conexión y básicamente no requiere ninguna comunicación entre el emisor y el receptor, el campo de puerto de origen es opcional. En caso de no ser utilizado, el puerto de origen debe ser puesto a cero.
En el siguiente campo se especifica el puerto de destino, es decir, se indica el servicio solicitado. Esta información es obligatoria, al contrario que el puerto de origen, porque si no, no sería posible asignar correctamente el datagrama.
En el siguiente campo se especifica el puerto de destino, es decir, se indica el servicio solicitado. Esta información es obligatoria, al contrario que el puerto de origen, porque si no, no sería posible asignar correctamente el datagrama.
Lo siguiente es aplicable a los campos de puerto: si se trata de una aplicación del lado del cliente, es probable que el número de puerto asignado sea volátil. Si el puerto ha sido asignado a un proceso del servidor, el número de puerto será normalmente uno de los puertos conocidos (well-known ports).
El campo longitud define la longitud del datagrama. Se compone de la longitud de la cabecera (8 bytes) y el tamaño de los datos de usuario (máximo teórico: 65.535 bytes). Cuando se utiliza Ipv4, el límite real para los datos de usuario es de 65 507 bytes, tras deducir las cabeceras IP y UDP. En Ipv6 se aceptan paquetes (llamados jumbogramas) que superan ese límite. Según la RFC 2675 , el valor del campo de longitud se pone a cero en esos casos.
La cabecera UDP se completa con la checksum o suma de comprobación, que se utiliza para detectar errores durante la transmisión. De esta manera, se puede detectar si los datos han sufrido alguna alteración en el camino. No obstante, los paquetes detectados se descartan y no se cursa una nueva solicitud. Para generar la suma, se utilizan partes
La cabecera UDP se completa con la checksum o suma de comprobación, que se utiliza para detectar errores durante la transmisión. De esta manera, se puede detectar si los datos han sufrido alguna alteración en el camino. No obstante, los paquetes detectados se descartan y no se cursa una nueva solicitud. Para generar la suma, se utilizan partes
- de la cabecera UDP,
- de los datos del usuario
- y de la conocida como pseudocabecera (que contiene información sobre la cabecera IP).
¿Qué aplicaciones utilizan el protocolo UDP?
El protocolo de datagramas de usuario, debido a su estructura mínima y a su falta de mecanismos que garanticen una transmisión completa y exitosa, no puede utilizarse como protocolo de transporte universal . En realidad, fue diseñado desde el principio pensando en aplicaciones que (todavía) no requieren un servicio de transmisión fiable. Por ello, el campo de aplicación del protocolo UDP es limitado, aunque es necesario subrayar su enorme valor, como demuestran los siguientes tipos de aplicación del mismo:
- Aplicaciones basadas en best effort delivery: el escenario típico en el que encontramos el protocolo UDP son las aplicaciones basadas en la entrega de mejor esfuerzo. A este tipo de programas, que utilizan el protocolo de datagramas de usuario como un mecanismo de mejor esfuerzo, les basta con una transmisión poco fiable de la información, porque la repiten constantemente de igual manera. Encontramos ejemplos en aquellas aplicaciones que transmiten valores medidos o que ejecutan repetidamente las mismas órdenes de trabajo.
- Aplicaciones ligeras: la baja sobrecarga del protocolo de transporte proporciona un soporte óptimo para las aplicaciones que tengan un diseño muy sencillo. Lo anterior, junto con el hecho de que no es necesario configurar una conexión, hacen que estas aplicaciones puedan beneficiarse de un rendimiento especialmente alto en el procesamiento y reenvío de datagramas en las redes.
- Aplicaciones con mecanismos propios para una transmisión fiable: el UDP puede resultar interesante para aquellas aplicaciones que necesitan un intercambio de información fiable, pero que dependen de sus propios mecanismos a la hora de dar respuesta a los datagramas. La ventaja de este tipo de servicios es que no están sujetos a patrones fijos a la hora de garantizar la integridad y exactitud de los datagramas enviados. Pueden decidir por sí mismos cómo y cuándo reaccionar ante información incorrecta o no clasificada.
- Aplicaciones multicast: mientras que los protocolos de transporte confiables como el protocolo TCP se limitan a la comunicación de extremo a extremo, el protocolo UDP también soporta conexiones de multidifusión IP. En el caso de que una aplicación deba enviar paquetes IP de forma eficiente y rápida a varios receptores al mismo tiempo , el UDP proporciona el soporte adecuado.
- Aplicaciones en tiempo real (real time applications): por último, el UDP también es adecuado como protocolo de transporte para servicios que presentan requisitos de comunicación en tiempo real, como las transmisiones de audio o vídeo. Se trata de protocolos que deben ser capaces de controlar en gran medida la transmisión, recepción y reproducción de flujos de datos por sí mismos, lo que resulta sencillo en las transmisiones basadas en el protocolo UDP sin conexión.
Las aplicaciones en tiempo real ya utilizan como primera opción el protocolo de transporte en tiempo real (RTP), que se basa en UDP y, a diferencia del protocolo básico, es capaz además de detectar la pérdida de paquetes. La última especificación del protocolo RTP se encuentra en la RFC 3550.