Publicado el 2 comentarios

UDP – USER DATAGRAM PROTOCOL

UDP es un protocolo que trabaja en la capa de transporte del Modelo TCP/IP.

Modelo TCP/IP
Imagen 1. Modelo TCP/IP

Características TCP

Generalmente cuando se estudia UDP se lo compara con las características que no proporciona respecto a TCP. Entonces recapitulemos que caractersticas nos proporciona TCP.

  • Confiabilidad en la transmisión de datos
  • Asignación de números de secuencia y números de reconocimiento
  • Recuperación de errores
  • Reordenamiento de segmentos
  • Control de flujo
  • Reducción de la congestión
  • Establecimiento de la conexión y cierre de la conexión.
  • Protocolo orientado al stream de bytes

Son Bastantes no?. TCP nos proporciona una comunicación robusta y confiable a través de una red que puede o no ser confiable, sin embargo, esto lo hace a costa de tener posibles retrasos en la transmisión y una mayor sobrecarga en cada segmento enviado, esto debido a que necesita transportar datos extras en su header para cumplir con las funciones mencionadas. El tamaño del header TCP es de 20 bytes y lo podemos ver en la imagen 2.

Header TCP
Imagen 2. Header TCP

En la imagen 3 te mostramos el header TCP en una captura real de Wireshark.

Header TCP Wireshark
Imagen 3. Header TCP Wireshark

A pesar que todas las funciones que proporciona TCP parecen bastante necesarias, esto no es de importancia para todas las aplicaciones, algunas aplicaciones pueden considerar estas funciones perjudiciales para su funcionamiento.

Problema con TCP

¿Qué ocurre cuando un paquete se pierde y se está utilizando el protocolo TCP?, necesitamos retransmitirlo ¿no es cierto?, sin embargo, consideren la situación en la cual la aplicación de usuario es la telefonía IP. Se trata de una aplicación en tiempo real y se necesita que la información se envíe lo más rápido posible de un origen a un destino, en el caso que se pierda un paquete, esto no es de importancia, ya que la conversación se sigue entendiendo y no tiene sentido volver a reenviar un dato que representa a alguna palabra que ya la dijimos en la conversación. Para este tipo de aplicaciones que toleran la perdida de información existe el protocolo UDP.

Características UDP

Protocolo Best-efford

UDP es un protocolo no confiable, debido a que no existen reconocimientos de los datos que estamos enviado al destino a comparación de TCP. Cuando una computadora envía un paquete al servidor como vemos en la imagen 4, el servidor no responde con un reconocimiento de que efectivamente recibió el paquete. Se pueden enviar 5 paquetes diferentes y no se obtendrá ningún reconocimiento de esos 5 paquetes, por lo tanto, no sabes si llegaron a su destino y a UDP no le interesa si se pierden o no y por supuesto no los envía nuevamente.

No ACK UDP
Imagen 4. No ACK UDP

¿Qué hacemos en el caso que se pierda un paquete en la red?, pues la tarea recae sobre el protocolo de la capa de aplicación y sus mecanismos para lidiar con las pérdidas de datos.

Encapsulación UDP

La información que se genera en la capa de aplicación, es entregada en bloques discretos de bytes al protocolo de la capa de transporte, UDP encapsula esos datos (bytes) recibidos con su propio header, sin embargo cuando se utiliza UDP ya no se denominan segmentos a comparación de TCP, ahora se denominan datagramas. Los datagramas son enviados a la capa de red, la capa de red añade su header y los datagramas se convierten en paquetes. Finalmente los paquetes son enviados a la capa de enlace de datos donde se convierten en tramas. Este proceso puede observarse en la imagen 5.

ENCAPSULACION UDP
Imagen 5. Encapsulación UDP

Entrega de datagramas

Cuando los datagramas son enviados al destino, el protocolo UDP en el dispositivo de destino no los ordena, es decir que los datos contenidos en los datagramas son entregados a la aplicación en el orden que llegan. Es tarea de la aplicación ordenar los datos si así lo requiere.

Connectionless y control de flujo y congestión

UDP es un protocolo conectionless, esto significa que no hay un establecimiento de conexión con el dispositivo de destino, no existe el proceso 3-WAY HANDSHAKE que existe en TCP, ni tampoco existe un cierre de la sesión. Por otro lado ningún dispositivo toma acción respecto a la congestión o al control de flujo que se deba realizar en la red

¿Por qué utilizar UDP?

El hecho que UDP no cumpla las mismas funciones que TCP, no significa que es un mal protocolo, si miran el header UDP en la imagen 6, se darán cuenta que es mucho más pequeño que TCP, es de 8 bytes comparado con los 20 bytes de TCP.

Header UDP
Imagen 6. Header UDP

El hecho de tener un header más pequeño lo hace más apto para aplicaciones que no necesitan todas las características de TCP, estas aplicaciones pueden beneficiarse del incremento en la eficiencia que se obtiene al evitar el establecimiento de la sesión y el tamaño extra del header TCP, por ejemplo las aplicaciones multimedia, llamadas VOIP, videoconferencias y streaming de video. En todos estos casos se necesita que los bytes fluyan en la red lo más rápido posible y sin pausas. De nuevo, si un datagrama de todo el flujo de datagramas se pierde, esto no tendrá consecuencias en la aplicación, ya que nosotros como personas no percibiremos las grandes pérdidas en la llamada o en la videoconferencia a no ser que la perdida sea excesiva y provoque que no entendamos la llamada telefónica o no podamos ver a la otra persona mediante la videoconferencia.

Otro caso donde se usa UDP, son las aplicaciones que envían una pequeña cantidad de datos de pregunta/respuesta en un simple datagrama, en estos casos no se necesita que los datagramas lleguen en orden al destino, ni tampoco es necesario llevar un rastreo de todos ellos, ya que todos los datos se envían en un simple datagrama. En el caso que se pierda ese único datagrama, la aplicación puede manejar esa perdida y solicitar una retransmisión.

Header UDP Wireshark
Imagen 7. Header UDP Wireshark

Campos header UDP

En la imagen 6 y 7 podemos observar todos los campos del header UDP cuyas funciones describimos a continuación.

Source port

Este campo es de 16 bits e identifica al proceso de aplicación que originó el mensaje UDP en el dispositivo de origen. Generalmente el valor de este campo source port corresponde al rango de “puertos efímeros” para las solicitudes que un cliente realiza a un puerto bien conocido o registrado en un servidor. Este campo también puede tomar un valor de puertos bien conocidos o registrados para un mensaje que se envía desde un servidor hacia un cliente.

Destination port

Este campo es de 16 bits e identifica al proceso de aplicación al cual esta destinado el mensaje UDP en el dispositivo de destino. Generalmente el valor de este campo corresponde al rango de “puertos bien conocidos o registrados” para las solicitudes que un cliente realiza a un servidor. Este campo también puede tomar un valor de puertos efímeros en el caso que se trate de un mensaje de un servidor a un cliente.

Lenght

Este campo es de 16 bits y almacena el valor del tamaño total del datagrama UDP incluyendo el header y el campo datos.

Checksum

Este campo es de 16 bits y almacena el valor del checksum que se ejecuta para todo el datagrama UDP incluyendo el campo datos, el header UDP y el pseudo header UDP.

Datos

El tamaño es variable y almacena los datos encapsulados de las capas superiores.

  

¿Quieres estar al tanto de nuestras publicaciones?

Deja tu Email y enterate de los nuevos cursos, ofertas, tutoriales y todo sobre NetworkGeeks.

¿Te quedaron dudas?

Escríbenos, estamos prestos para ayudarte. Recuerda que si te SUSCRIBES tienes acceso a todos nuestras clases donde hablamos mucho más sobre los modelos de red, UDP y Cisco en general. Además cuentas con nuestro soporte para que no tengas problemas en el proceso de aprendizaje.

2 comentarios en “UDP – USER DATAGRAM PROTOCOL

  1. Hola Noela!

    NO estoy seguro a qué te refieres con «tics», pero de todas formas en UDP no existe retransmisión de datos, en UDP no existe el concepto de ACKs, si el paquete se perdió a UDP no le interesa eso; en el caso que la aplicación necesite que los paquetes lleguen sí o sí, entonces es el protocolo de la capa de Aplicación la que debe implementar algun mecanismo de retransmisión.

    Atento a cualquier otro comentario.

    Saludos! =)

  2. Hola! la retransmision de paquetes luego de no recibir un ack de 5 tics con udp como sería?

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *