Protocolo de datagramas de usuario (UDP)
El Protocolo de datagramas de usuario (UDP) es un estándar TCP/IP que está definido en RFC 768,
"User Datagram Protocol (UDP)". Algunos programas utilizan UDP en lugar de TCP para el transporte
de datos rápido, compacto y no confiable entre hosts TCP/IP.
UDP proporciona un servicio de datagramas sin conexión que ofrece entrega de mejor esfuerzo, lo que
significa que UDP no garantiza la entrega ni comprueba la secuencia de los datagramas.
Un host de origen que necesita comunicación confiable debe utilizar TCP o un programa que
proporcione sus propios servicios de secuencia y confirmación.
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.
Resumen de las características del protocolo UDP
UDP no admite numeración de los datagramas, factor que, sumado a que tampoco utiliza señales de confirmación de entrega, hace que la garantía de que un paquete llegue a su destino sea mucho menor que si se usa TCP. Esto también origina que los datagramas pueden llegar duplicados y/o desordenados a su destino. Por estos motivos el control de envío de datagramas, si existe, debe ser implementado por las aplicaciones que usan UDP como medio de transporte de datos, al igual que el reeensamble de los mensajes entrantes.
https://docs.google.com/forms/d/e/1FAIpQLSdcLqckHIh4xdjMIjkUlpjepEItXlrASBOl9nPJxZNLu6eUIw/viewform?usp=sf_link
Es por ello un protocolo del tipo best-effort (máximo esfuerzo), porque hace lo que puede para transmitir los datagramas hacia la aplicación, pero no puede garantizar que la aplicación los reciba.
Tampoco utiliza mecanismos de detección de errores. Cuando se detecta un error en un datagrama, en lugar de entregarlo a la aplicación destino, se descarta.
Cuando una aplicación envía datos a través de UDP, éstos llegan al otro extremo como una unidad. Por ejemplo, si una aplicación escribe 5 veces en el puerto UDP, la aplicación al otro extremo hará 5 lecturas del puerto UDP. Además, el tamaño de cada escritura será igual que el tamaño de las lecturas.
Los protocolos clave de la capa de aplicación que utiliza UDP incluyen:
- Sistema de nombres de dominio (DNS)
- Protocolo simple de administración de red (SNMP, Simple Network Management Protocol)
- Protocolo de configuración dinámica de host (DHCP)
- Protocolo de información de enrutamiento (RIP)
- Protocolo de transferencia de archivos trivial (TFTP)
- Juegos en línea
- Puertos
UDP utiliza puertos para permitir la comunicación entre aplicaciones. El campo de puerto tiene una longitud de 16 bits, por lo que el rango de valores válidos va de 0 a 65.535. El puerto 0 está reservado, pero es un valor permitido como puerto origen si el proceso emisor no espera recibir mensajes como respuesta.
Los puertos 1 a 1023 se llaman puertos "bien conocidos" y en sistemas operativos tipo Unix enlazar con uno de estos puertos requiere acceso como superusuario.
Los puertos 1024 a 49.151 son puertos registrados.
Los puertos 49.152 a 65.535 son puertos efímeros y son utilizados como puertos temporales, sobre todo por los clientes al comunicarse con los servidores.
La cabecera UDP consta de 4 campos. Los de los puertos fuente y destino son de 16 bits e identifican el proceso de origen y recepción. Ya que UDP carece de un servidor de estado y el origen UDP no solicita respuestas, el puerto origen es opcional. En caso de no ser utilizado, el puerto origen debe ser puesto a cero. A los campos del puerto destino le sigue un campo obligatorio que indica el tamaño en bytes del datagrama UDP incluidos los datos. El valor mínimo es de 8 bytes.
Cuestionario:
https://docs.google.com/forms/d/e/1FAIpQLSdcLqckHIh4xdjMIjkUlpjepEItXlrASBOl9nPJxZNLu6eUIw/viewform?usp=sf_link