La co­mu­ni­ca­ción de sistemas en redes do­mé­s­ti­cas y co­r­po­ra­ti­vas locales y en redes públicas como Internet se basa no­r­ma­l­me­n­te en la familia de pro­to­co­los de Internet. De todos ellos, el más conocido es sin duda el Protocolo de Internet (IP), que no solo es re­s­po­n­sa­ble del di­re­c­cio­na­mie­n­to y la fra­g­me­n­ta­ción de los da­ta­gra­mas, sino que también define cómo se describe la in­fo­r­ma­ción sobre el origen y el destino. No obstante, la tra­n­s­mi­sión de los datos se lleva a cabo no­r­ma­l­me­n­te mediante el protocolo de tra­n­s­po­r­te TCP (Tra­n­s­mi­s­sion 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 pro­po­r­cio­na seguridad, también retrasa la tra­n­s­mi­sión, David Patrick Reed publicó en 1980 su idea del protocolo de da­ta­gra­mas de usuario (User datagram protocol o UDP) como una al­te­r­na­ti­va más simple y rápida al protocolo estándar.

¿Qué es UDP (User datagram protocol)?

El protocolo de da­ta­gra­mas de usuario, abreviado como UDP, es un protocolo que permite la tra­n­s­mi­sión sin conexión de da­ta­gra­mas 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 pri­n­ci­pa­les en la cabecera UDP. Como muchos otros pro­to­co­los de red, UDP pertenece a la familia de pro­to­co­los de Internet, por lo que debe cla­si­fi­car­se en el nivel de tra­n­s­po­r­te y, en co­n­se­cue­n­cia, se encuentra en una capa in­te­r­me­dia entre la capa de red y la capa de apli­ca­ción.

Nota

El protocolo UDP es una al­te­r­na­ti­va directa al protocolo más utilizado, el TCP, aunque ambos se di­fe­re­n­cian sobre todo en un punto: mientras que la tra­n­s­mi­sión en el protocolo TCP tiene lugar una vez se ha producido el enlace obli­ga­to­rio de 3 vías (con acuse de recibo mutuo entre el emisor y el receptor, incluida la sesión de co­mu­ni­ca­ción), el protocolo UDP no utiliza este pro­ce­di­mie­n­to con el fin de mantener el tiempo de tra­n­s­mi­sión lo más bajo posible.

Mediante el protocolo de da­ta­gra­mas de usuario, una apli­ca­ción puede enviar in­fo­r­ma­ción muy rá­pi­da­me­n­te, ya que no es necesario es­ta­ble­cer 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 re­s­pe­ta­n­do el orden en el que fueron enviados. Además, este protocolo no ofrece ninguna pro­te­c­ción frente a la al­te­ra­ción o acceso por parte de terceros. Sin embargo, el UDP puede añadir op­cio­na­l­me­n­te una suma de ve­ri­fi­ca­ción (que es obli­ga­to­ria en IPv6) que permite detectar los paquetes de­fe­c­tuo­sos.

De­fi­ni­ción

El UDP (User datagram protocol) es un protocolo sin conexión de la familia de pro­to­co­los de Internet que funciona en la capa de tra­n­s­po­r­te y fue es­pe­ci­fi­ca­do en 1980 en la RFC (Request for Comments) 768. El protocolo UDP se utiliza para tra­n­s­mi­tir da­ta­gra­mas de forma rápida en redes IP y funciona como una al­te­r­na­ti­va sencilla y sin retardos del protocolo TCP. Se usa pri­n­ci­pa­l­me­n­te para consultas DNS, co­ne­xio­nes VPN y para el streaming de audio y vídeo.

Resumen de las ca­ra­c­te­rí­s­ti­cas del protocolo UDP

Para co­m­pre­n­der a fondo cómo funciona la tra­n­s­mi­sión de da­ta­gra­mas en este protocolo, resulta útil analizar de­te­ni­da­me­n­te cuáles son las pro­pie­da­des del protocolo de da­ta­gra­mas de usuario.

  1. El protocolo UDP funciona sin conexión: el protocolo UDP se ca­ra­c­te­ri­za porque permite el envío de da­ta­gra­mas a través de la red sin que se haya es­ta­ble­ci­do pre­via­me­n­te una conexión entre el emisor y el receptor. Los da­ta­gra­mas re­s­pe­c­ti­vos se envían a la dirección IP preferida de la secuencia es­pe­ci­fi­ca­n­do 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 po­si­bi­li­dad de incluir en la cabecera UDP in­fo­r­ma­ción sobre el puerto de origen.
  2. UDP utiliza puertos: al igual que el TCP, el protocolo UDP utiliza puertos para permitir que los da­ta­gra­mas se tra­n­s­fie­ran a los pro­to­co­los correctos, es decir, a las apli­ca­cio­nes 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.
  3. El protocolo UDP permite una co­mu­ni­ca­ción rápida y sin retardos: el protocolo de tra­n­s­po­r­te es el adecuado para una tra­n­s­mi­sión de datos rápida debido a que no hay que llevar a cabo una co­n­fi­gu­ra­ción de la conexión. Esto resulta también del hecho de que la pérdida de un paquete in­di­vi­dual afecta ex­clu­si­va­me­n­te a la calidad de la tra­n­s­mi­sión. En el caso de co­ne­xio­nes TCP, en cambio, se intenta reenviar de nuevo los paquetes perdidos de forma au­to­má­ti­ca, lo que provoca que todo el proceso de tra­n­s­mi­sión se detenga.
  4. El protocolo UDP no ofrece ninguna garantía de seguridad e in­te­gri­dad de los datos: la ausencia de acuse de recibo mutuo entre el emisor y el receptor garantiza que la velocidad de tra­n­s­mi­sión en el protocolo UDP sea excelente; no obstante, el protocolo no puede ga­ra­n­ti­zar la seguridad ni la in­te­gri­dad de los da­ta­gra­mas. Tampoco puede ga­ra­n­ti­zar el orden de los paquetes enviados. Por ello, los servicios que utilizan UDP deben aplicar sus propias medidas de co­rre­c­ción y pro­te­c­ción.
En resumen

La ca­ra­c­te­rí­s­ti­ca más im­po­r­ta­n­te del protocolo de da­ta­gra­mas de usuario es que permite enviar da­ta­gra­mas sin que se haya es­ta­ble­ci­do pre­via­me­n­te una conexión. Esto se traduce en la ventaja de poder tra­n­s­mi­tir con gran velocidad, aunque conlleva que la in­fo­r­ma­ción tra­n­s­mi­ti­da sea fá­ci­l­me­n­te alterada, la pérdida de paquetes no sea corregida y la cla­si­fi­ca­ción de los paquetes sea pa­r­cia­l­me­n­te ar­bi­tra­ria. Por esta razón, las apli­ca­cio­nes UDP deben estar ca­pa­ci­ta­das para trabajar co­rre­c­ta­me­n­te con da­ta­gra­mas perdidos o no cla­si­fi­ca­dos y aplicar sus propios me­ca­ni­s­mos de co­rre­c­ción y seguridad.

¿Cómo se es­tru­c­tu­ra la cabecera UDP?

Como es típico en todos los pro­to­co­los, los paquetes UDP consisten en una cabecera (header) y los datos reales del usuario. La cabecera UDP contiene toda la in­fo­r­ma­ción necesaria para la tra­n­s­mi­sión de datos uti­li­za­n­do el protocolo de tra­n­s­po­r­te y hace que un paquete UDP se pueda ide­n­ti­fi­car como tal. La cabecera UDP consta de 4 campos y está dividida en 2 bloques de 32 bits con la siguiente es­tru­c­tu­ra:

Bits 0–15 Bits 16–31
cero Puerto de origen Puerto de destino
32 Longitud del mensaje Suma de ve­ri­fi­ca­ción

Los primeros 16 bits de la cabecera ide­n­ti­fi­can el puerto de origen desde el que se ha enviado un datagrama concreto. El receptor necesita esta in­fo­r­ma­ción para poder responder al paquete. Ya que UDP funciona sin conexión y bá­si­ca­me­n­te no requiere ninguna co­mu­ni­ca­ció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 es­pe­ci­fi­ca el puerto de destino, es decir, se indica el servicio so­li­ci­ta­do. Esta in­fo­r­ma­ción es obli­ga­to­ria, al contrario que el puerto de origen, porque si no, no sería posible asignar co­rre­c­ta­me­n­te el datagrama.

Nota

Lo siguiente es aplicable a los campos de puerto: si se trata de una apli­ca­ció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á no­r­ma­l­me­n­te 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 ju­m­bo­gra­mas) 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 co­m­pro­ba­ción, que se utiliza para detectar errores durante la tra­n­s­mi­sión. De esta manera, se puede detectar si los datos han sufrido alguna al­te­ra­ción en el camino. No obstante, los paquetes de­te­c­ta­dos 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 pseu­do­ca­be­ce­ra (que contiene in­fo­r­ma­ción sobre la cabecera IP).

La suma de co­m­pro­ba­ción es opcional en IPv4, pero la mayoría de las apli­ca­cio­nes la utilizan por defecto. Si no se realiza la suma, se le da a este campo el valor cero. Si se utiliza UDP con IPv6, la suma de co­m­pro­ba­ción es obli­ga­to­ria.

¿Qué apli­ca­cio­nes utilizan el protocolo UDP?

El protocolo de da­ta­gra­mas de usuario, debido a su es­tru­c­tu­ra mínima y a su falta de me­ca­ni­s­mos que ga­ra­n­ti­cen una tra­n­s­mi­sión completa y exitosa, no puede uti­li­zar­se como protocolo de tra­n­s­po­r­te universal . En realidad, fue diseñado desde el principio pensando en apli­ca­cio­nes que (todavía) no requieren un servicio de tra­n­s­mi­sión fiable. Por ello, el campo de apli­ca­ción del protocolo UDP es limitado, aunque es necesario subrayar su enorme valor, como de­mue­s­tran los si­guie­n­tes tipos de apli­ca­ción del mismo:

  • Apli­ca­cio­nes basadas en best effort delivery: el escenario típico en el que en­co­n­tra­mos el protocolo UDP son las apli­ca­cio­nes basadas en la entrega de mejor esfuerzo. A este tipo de programas, que utilizan el protocolo de da­ta­gra­mas de usuario como un mecanismo de mejor esfuerzo, les basta con una tra­n­s­mi­sión poco fiable de la in­fo­r­ma­ción, porque la repiten co­n­s­ta­n­te­me­n­te de igual manera. En­co­n­tra­mos ejemplos en aquellas apli­ca­cio­nes que tra­n­s­mi­ten valores medidos o que ejecutan re­pe­ti­da­me­n­te las mismas órdenes de trabajo.
  • Apli­ca­cio­nes ligeras: la baja so­bre­ca­r­ga del protocolo de tra­n­s­po­r­te pro­po­r­cio­na un soporte óptimo para las apli­ca­cio­nes que tengan un diseño muy sencillo. Lo anterior, junto con el hecho de que no es necesario co­n­fi­gu­rar una conexión, hacen que estas apli­ca­cio­nes puedan be­ne­fi­ciar­se de un re­n­di­mie­n­to es­pe­cia­l­me­n­te alto en el pro­ce­sa­mie­n­to y reenvío de da­ta­gra­mas en las redes.
  • Apli­ca­cio­nes con me­ca­ni­s­mos propios para una tra­n­s­mi­sión fiable: el UDP puede resultar in­te­re­sa­n­te para aquellas apli­ca­cio­nes que necesitan un in­te­r­ca­m­bio de in­fo­r­ma­ción fiable, pero que dependen de sus propios me­ca­ni­s­mos a la hora de dar respuesta a los da­ta­gra­mas. La ventaja de este tipo de servicios es que no están sujetos a patrones fijos a la hora de ga­ra­n­ti­zar la in­te­gri­dad y exactitud de los da­ta­gra­mas enviados. Pueden decidir por sí mismos cómo y cuándo reac­cio­nar ante in­fo­r­ma­ción in­co­rre­c­ta o no cla­si­fi­ca­da.
  • Apli­ca­cio­nes multicast: mientras que los pro­to­co­los de tra­n­s­po­r­te co­n­fia­bles como el protocolo TCP se limitan a la co­mu­ni­ca­ción de extremo a extremo, el protocolo UDP también soporta co­ne­xio­nes de mu­l­ti­di­fu­sión IP. En el caso de que una apli­ca­ción deba enviar paquetes IP de forma eficiente y rápida a varios re­ce­p­to­res al mismo tiempo , el UDP pro­po­r­cio­na el soporte adecuado.
  • Apli­ca­cio­nes en tiempo real (real time ap­pli­ca­tio­ns): por último, el UDP también es adecuado como protocolo de tra­n­s­po­r­te para servicios que presentan re­qui­si­tos de co­mu­ni­ca­ción en tiempo real, como las tra­n­s­mi­sio­nes de audio o vídeo. Se trata de pro­to­co­los que deben ser capaces de controlar en gran medida la tra­n­s­mi­sión, recepción y re­pro­du­c­ción de flujos de datos por sí mismos, lo que resulta sencillo en las tra­n­s­mi­sio­nes basadas en el protocolo UDP sin conexión.
Nota

Las apli­ca­cio­nes en tiempo real ya utilizan como primera opción el protocolo de tra­n­s­po­r­te en tiempo real (RTP), que se basa en UDP y, a di­fe­re­n­cia del protocolo básico, es capaz además de detectar la pérdida de paquetes. La última es­pe­ci­fi­ca­ción del protocolo RTP se encuentra en la RFC 3550.

Ir al menú principal