Connectionless transport: UDP

De Departamento de Informatica
Saltar a: navegación, buscar

Contenido

¿Qué es UDP?

User Datagram Protocol (UDP) es un protocolo de transmisión no orientado a la conexión basado en el intercambio de datagramas.

Servicio sin conexión: UDP

El servicio sin conexión o servicio no orientado a la conexión es un tipo de servicio proporcionado por la capa de transporte(cuarta capa del modelo OSI) a las capas superiores (Aplicación). Un servicio no orientado a la conexión es aquel en el cual un mensaje puede ser enviado desde un punto final a otro punto final en una red sin necesidad de haber establecido previamente una conexión. Es decir, uno de los extremos(emisor) envía los datos sin asegurarse que el receptor esté disponible y listo para recibir estos datos. Para comprender mejor este concepto, podemos hacer una analogía con el funcionamiento del sistema postal. Cuando una persona envía una carta, esta lleva consigo la dirección completa del destino y no importando la ruta por la cual se encamine, al momento de la llegada a destino el receptor no necesariamente estará esperando dicha carta. En este tipo de comunicación son mucho más frecuentes los problemas de transmisión que en los servicios orientados a la conexión y puede ser necesario reenviar varias veces los datos. El protocolo de transmisión UDP que se tratará a continuación es un ejemplo de protocolo no orientado a la conexión.

Ventajas de utilizar UDP

UDP posee varias ventajas por la cual los desarrolladores la escogen, ya que muchas de sus aplicaciones son más adecuadas para UDP por algunas de las siguientes razones:

  • No necesita una conexión establecida: TCP utiliza un enlace de tres vías antes de que comience la transferencia de datos, en cambio UDP sólo explosiones de distancia, sin ningún preámbulo formal, de tal manera que UDP no introduce ningún tipo de retraso al establecer una conexión. Esta es probablemente la razón principal por la que DNS se ejecuta a través de UDP en vez de TCP ( DNS sería mucho más lento si se ejecuta través de TCP).
  • No necesita un estado de conexión: TCP mantiene el estado de conexión en los sistemas finales. Este estado de conexión incluye enviar y recibir buffers, los parámetros de control de la congestión, y de la secuencia, y los parámetros de reconocimiento de números. UDP, por otro lado, no mantiene ningún estado de conexión y no acarrea ninguno de estos parámetros. Por esta razón, un servidor dedicado a una aplicación en particular por lo general puede soportar muchos más clientes activos cuando la aplicación se ejecuta sobre UDP en lugar de TCP.
  • Pequeño overhead en el packet header: Un segmento de TCP posee 20 bytes de tamaño de overhead en cada segmento, mientras que UDP sólo posee 8 bytes de overhead.
  • Tasa no regulada de envío: TCP tiene un mecanismo de control de congestión que estrangula al remitente cuando existen uno más vínculos entre el emisor y el receptor, volviendolo excesivamente congestionado. Esta limitación puede tener un impacto severo en las aplicaciones en tiempo real, aunque puede tolerar una cierta pérdida de paquetes, pero requiere una tasa de envío mínimo. Por otro lado, la velocidad a la que envía los datos UDP está sólo limitada por la velocidad a la que la aplicación genera datos, las capacidades de la fuente (CPU, velocidad de reloj, etc) y el ancho de banda de acceso a Internet. Debemos tener en cuenta, sin embargo, que el host de destino no tiene por qué recibir todos los datos - cuando la red está congestionada, una fracción significativa de los datos UDP de transmisión podría perderse debido al router de desbordamiento de búfer. Así, la tasa de recepción se ve limitada por la congestión de red, incluso si la tasa de envío no está restringido.

Estructura del segmento UDP

Para comprender mejor el este protocolo, veamos primero ¿qué son los datagramas?. Un datagrama es un paquete de datos, formado principalmente de dos partes: cabecera (contiene la direcciones de la capa de red) y datos.

En el protocolo UDP los datagramas tienen principalmente de la siguiente estructura:

Estructura del segmento UDP, ref: texto guia

En que el significado de los campos son:

  • Puerto de origen: número de pueto de la aplicación del remitente del segmento UDP. Representa una respuesta para el detinatario por lo que es opcional, esto quiere decir que si el puerto no esta especificado los 16 bits serán cero, por lo que el destinatario no podrá responder.
  • Puerto de destino: contiene el puerto correspondiente a la aplicación del receptor.
  • Longitud: contiene la longitud total del segmento incluyendo el encabezado
  • Suma de verificación: se realiza esta suma con el fin de poder controlar la integridad del segmento.

Para entender mejor como funciona la suma de verificación se realizará el siguiente ejercicio:


Ejercicio

Esta suma de verificación UDP sirve para detectar los errores que se han producido. UDP en el lado del remitente realiza el complemento a uno de la suma de todas las palabras de 16-bit en el segmento. Cuando llega el segmento al anfitrión de la recepción, todas las palabras de 16 bits se suman, entre ellos la suma de verificación. Si esta suma es igual a 1111111111111111, entonces el segmento no contiene errores detectados.

Suponer que tenemos las siguientes tres palabras de 16 bits:

0110011001100110

0101010101010101

0000111100001111

Realizando la suma de estas tres palabras (la primera con la segunda y el resultado de estos con la tercera) llegamos al siguiente resultado:

1100101011001010

Aplicando el complemento del resultado nos queda:

0011010100110101

En el receptor, las cuatro palabras de 16 bits se añaden, incluyendo la suma de verificación que calculamos. Si no hay errores se introducen en el segmento, entonces es claro que la suma en el receptor será 1111111111111111.


Ejemplo uso UDP

Un ejemplo de uso de este protocolo es en la telefonía VoIP. Cuando se establece una conversación de voz usando red de datos, cada datagrama encapsula una pequeñísima porción de la conversación y si se llega a perder un segmento es tan poca la información que la conversación sigue siendo entendible, en ese caso ni siquiera la aplicación de voz está involucrada en la recuperación del dato perdido, no es necesario. Otra razón para usar UDP en el transporte de voz, es que debido al encabezado pequeño de UDP (8 bytes) se hace más eficiente enviar datos pequeños por medio de él que por TCP (20 Bytes).

Observaciones sobre el protocolo

Este protocolo no contiene control de flujo ni confirmación de entrega o recepción, por lo cual podemos cuestionarnos si debería o no pertenecer a la capa 4 del modelo OSI, pues esta capa tiene por objetivo principal proporcionar un transporte de datos confiable de la máquina de origen a la máquina destino.

Pero considerando :

1.- UDP obedece a una necesidad de comunicación no confiable, es decir, una entrega simple de datos pequeños que no requieren retransmisión ni acuses de recibo.

2.- Respecto a los mecanismos de confiabilidad, puede que, bajo ciertas condiciones, se implementen más fácilmente en protocolos de capas superiores o que el usuario o aplicación final puedan soportar pérdidas pequeñas en sus datos.

Podemos con estos antecedentes entender mejor el por qué UDP pertenece a la capa de transporte y no a una capa superior.


Referencias

  • J. F. Kurose, K.W. Ross. Computer Networking A Top Down Approach, 5th Edition. 2.2 The World Wide Web: HTTP.

[[1]] [[2]] [[3]]

Herramientas personales
Espacios de nombres
Variantes
Acciones
Navegación
Herramientas