¿Qué es el protocolo UDP?

Contenido del Bootcamp Dirigido por: | Última modificación: 22 de julio de 2024 | Tiempo de Lectura: 5 minutos

Algunos de nuestros reconocimientos:

Premios KeepCoding

El Protocolo de Datagramas de Usuario o protocolo UDP (User Datagram Protocol) es un protocolo de la capa de transporte que opera sobre el sistema de direccionamiento en red y fue diseñado por David P. Reed en 1980, quien lo documentó en el RFC 768.

Protocolo UDP

El UDP es un protocolo enfocado en la velocidad y simplicidad, proporciona un servicio de comunicación punto a punto no orientado a conexión, sino a transacciones en la capa de transporte, permitiendo la transmisión sin conexión de datagramas en redes que estén basadas en IP. El UDP surgió como una alternativa ligera al Protocolo de Control de Transmisión (TCP), en este sentido, no garantiza la entrega de los paquetes, ya que está diseñado para aplicaciones que priorizan la velocidad sobre la fiabilidad.

Usos comunes del protocolo UDP

Este protocolo UDP, es comúnmente utilizado en aplicaciones que transmiten cantidades pequeñas de datos, en donde la prioridad es la velocidad de sobre la fiabilidad, como: 

  1. Streaming de audio y video: permite una transmisión efectiva de datos multimedia, con pérdidas de datos poco significativas en la experiencia de usuario.  
  2. Juegos en línea: se utiliza para enviar datos de acción rápida como la posición y el movimiento entre jugadores.
  3. Consultas DNS: se utiliza para resolver de forma ágil las consultas de nombres de dominio a direcciones IP.
  4. Conexiones VPN: en las implementaciones de redes privadas virtuales se utiliza para favorecer la velocidad y la eficiencia de las conexiones.
  5. Sistemas de monitoreo en tiempo real: permite que los datos de los sensores y dispositivos de monitoreo de los sistemas de seguridad se transmitan tan rápido como sea posible.

Características del Protocolo UDP

Las principales características de este protocolo son: 

  • Funciona sin conexión: permite el envío de datagramas incluso antes de que se haya establecido una conexión entre emisor y receptor. El envío de datagramas se realiza a la dirección IP establecida por la secuencia, especificando el puerto de destino.
  • Respuesta opcional del destino: en el protocolo UDP no es necesario que el ordenador asociado al destino dé una respuesta al puerto de origen. Sin embargo, en caso de que algún paquete deba ser devuelto a quien lo emitió, se puede incluir en la cabecera UDP la información del puerto de origen.
  • Utiliza puertos: para facilitar el proceso de transferencia de datagramas a los protocolos correctos, al igual que el protocolo TCP, pero los puertos de UDP no cuentan con mecanismos de control, por lo que la cabecera es mucho más sencilla. Los números de puertos se definen a partir de un rango de valores, donde del 0 al 1023 corresponden a los servicios fijos.
  • Comunicación ágil: este protocolo busca siempre evitar retrasos. La transmisión rápida de los datos es posible gracias a que no es necesario realizar una configuración de la conexión. Además, si se presenta la pérdida de un paquete individual, esta situación afecta solamente a la calidad de la transmisión, a diferencia del protocolo TCP, donde esto supone la detención de todo el proceso de transmisión.
  • No es un protocolo confiable: no garantiza que la información sea recibida en el destino, ni ofrece garantías de seguridad e integridad de los datagramas. Tampoco asegura el orden de los paquetes enviados.

Estructura del datagrama del protocolo UDP

El datagrama del protocolo UDP puede ser graficado así:

¿Qué es el protocolo UDP?
  • Source Port (Puerto fuente): Hace referencia al punto de origen del datagrama. Este campo es opcional, por lo que en caso de que no sea necesario ubicar el proceso origen, se debe rellenar con ceros. El receptor necesitará esta información para poder responder al paquete enviado.
  • Destination Port (Puerto de destino): es el receptor del datagrama donde se indica el servicio solicitado, y será donde se identifique el proceso que va a recibir el mensaje.
  • UDP Length (Longitud UDP): señala la longitud del datagrama UDP en bytes, lo que incluye los datos del mensaje. El tamaño máximo de datagrama puede ser de 64 kb.
  • Checksum (Suma de verificación): corresponde a la suma de comprobación o verificación y es utilizado para posibles errores durante el proceso de transmisión. Para esta suma se usan partes de la cabecera, datos del usuario y de la pseudocabecera. Esta revisión no es obligatoria y al igual que el puerto fuente, en caso de no ser incluido, deberá ser rellenado con ceros.

Proceso de envío y recepción del protocolo UDP

  1. El emisor crea el datagrama UDP y lo encapsula en un paquete IP.
  2. El paquete se envía a través de la red.
  3. El receptor desencapsula el datagrama UDP del paquete IP.
  4. Se verifica la suma de comprobación (si está presente).
  5. Los datos se entregan a la aplicación correspondiente según el puerto de destino.

Implementación práctica

A continuación, te presentamos dos ejemplos básicos de cómo implementar el protocolo UDP en dos de los lenguajes más comunes de programación Python y Javascript: 

🔴 ¿Quieres entrar de lleno al mundo DevOps & Cloud Computing? 🔴

Descubre el DevOps & Cloud Computing Full Stack Bootcamp de KeepCoding. La formación más completa del mercado y con empleabilidad garantizada

👉 Prueba gratis el Bootcamp en DevOps & Cloud Computing por una semana

Python:

import socket

# Configuración del socket UDP

sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

server_address = ('localhost', 10000)

message = b'Este es un mensaje de prueba.'

try:

    # Enviar datos

    print(f'Enviando: {message}')

    sent = sock.sendto(message, server_address)

    # Recibir respuesta

    data, server = sock.recvfrom(4096)

    print(f'Recibido: {data}')

finally:

    print('Cerrando socket')

    sock.close()

JavaScript (Node.js):

const dgram = require('dgram');

const message = Buffer.from('Este es un mensaje de prueba.');

const client = dgram.createSocket('udp4');

client.send(message, 41234, 'localhost', (err) => {

  client.close();

});

Comparación del protocolo UDP con el TCP

Como mencionamos en la introducción, UDP se diferencia de TCP en varios aspectos clave, lo que hace que UDP sea más adecuado para aplicaciones en las que la velocidad es lo más importante, como las transmisiones en vivo o los juegos en línea. Sin embargo, a continuación te dejamos un cuadro comparativo para que tengas claras sus diferencias:

CaracterísticaUDPTCP
Orientado a conexiónNo
FiabilidadNo garantizadaGarantizada
Orden de paquetesNo garantizadoGarantizado
VelocidadRápidoMás lento
SobrecargaBajaAlta
Control de flujoNo
Control de congestiónNo
UDP vs. TCP

Ventajas de Protocolo de Datagramas de Usuario (UDP)

  • Rapidez en la transmisión.
  • Baja latencia.
  • Menor sobrecarga de red.
  • Ideal para transmisiones en tiempo real.

Desventajas

  • No garantiza la entrega de paquetes.
  • Posible pérdida de datos.
  • Sin control de flujo o congestión.
  • Menor seguridad inherente.

Seguridad en UDP

Aunque el protocolo UDP en primera instancia no incluye mecanismos de seguridad incorporados, existen algunas estrategias para mejorar la seguridad de las transmisiones UDP, como el cifrado con protocolos tipo los DTLS (Datagram Transport Layer Security), en donde se cifran los datos transmitidos. Asimismo, se pueden implementar mecanismos de autentificación con el fin de verificar la integridad y veracidad de los datos recibidos.

El UDP es un protocolo simple y de gran utilidad para aplicaciones que requieren velocidad y baja latencia, transmisiones en tiempo real, y que pueden tolerar cierta pérdida de datos. Por esto, comprender sus características, ventajas y limitaciones es fundamental para desarrollar tus aplicaciones de forma eficiente.

Si quieres conocer más acerca de los protocolos UDP, TCP y otros protocolos, te invitamos a continuar en nuestro DevOps & Cloud Computing Full Stack Bootcamp. En este programa de KeepCoding, no solo podrás profundizar acerca de estos y otros protocolos, sino también, aprender a dominar todo acerca de la administración de sistemas con automatización de procesos y la creación de arquitecturas Cloud. No esperes más para enfocar tu futuro profesional, en solo 6 meses y a distancia podrás convertirte en el profesional DevOps altamente capacitado que el mercado demanda.


¡Domina las habilidades clave para destacar en el mundo de la tecnología y transforma tu carrera hoy!

Xoán Mallón

Senior DevOps Engineer en Zscaler & Coordinador del Bootcamp DevOps & Cloud Computing.

Posts más leídos

¡CONVOCATORIA ABIERTA!

DevOps & Cloud Computing

Full Stack Bootcamp

Clases en Directo | Profesores en Activo | Temario 100% actualizado