Você está na página 1de 17

Protocolo de datagramas de usuario

El protocolo de datagramas de usuario (en inglés: User Datagram Protocol o UDP) es


un protocolo del nivel de transporte basado en el intercambio de datagramas (Encapsulado
de capa 4 o de Transporte del Modelo OSI). Permite el envío de datagramas a través de
la red sin que se haya establecido previamente una conexión, ya que el propio datagrama
incorpora suficiente información de direccionamiento en su cabecera. Tampoco tiene
confirmación ni control de flujo, por lo que los paquetes pueden adelantarse unos a otros; y
tampoco se sabe si ha llegado correctamente, ya que no hay confirmación de entrega o
recepción. Su uso principal es para protocolos como DHCP, BOOTP, DNS y demás
protocolos en los que el intercambio de paquetes de la conexión/desconexión son
mayores, o no son rentables con respecto a la información transmitida, así como para la
transmisión de audio y vídeo en tiempo real, donde no es posible realizar retransmisiones
por los estrictos requisitos de retardo que se tiene en estos casos.

El protocolo UDP
El grupo de protocolos de Internet también maneja un protocolo de transporte sin
conexiones, el UDP (User Data Protocol, protocolo de datos de usuario). El UDP ofrece a las
aplicaciones un mecanismo para enviar datagramas IP en bruto encapsulados sin tener que
establecer una conexión.

Muchas aplicaciones cliente-servidor que tienen una solicitud y una respuesta usan el UDP en
lugar de tomarse la molestia de establecer y luego liberar una conexión. El UDP se describe
en el RFC 768. Un segmento UDP consiste en una cabecera de 8 bytes seguida de los datos.
La cabecera se muestra a continuación. Los dos puertos sirven para lo mismo que en el TCP:
para identificar los puntos terminales de las máquinas origen y destino. El campo de longitud
UDP incluye la cabecera de 8 bytes y los datos. La suma de comprobación UDP incluye la
misma pseudocabecera de formato, la cabecera UDP, y los datos, rellenados con una
cantidad par de bytes de ser necesario.

Esta suma es opcional, y se almacena como 0 si no se calcula. Inutilizarla seria absurdo, a


menos que la cantidad de los datos no importe, por ejemplo, voz digitalizada.

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.

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.

Descripción técnica[editar]
User Datagram Protocol (UDP) es un protocolo mínimo de nivel de transporte orientado a
mensajes documentado en el RFC 768 de la IETF.
En la familia de protocolos de Internet UDP proporciona una sencilla interfaz entre la capa
de red y la capa de aplicación. UDP no otorga garantías para la entrega de sus mensajes
(por lo que realmente no se debería encontrar en la capa 4) y el origen UDP no retiene
estados de los mensajes UDP que han sido enviados a la red. UDP sólo
añade multiplexado de aplicación y suma de verificación de la cabecera y la carga útil.
Cualquier tipo de garantías para la transmisión de la información deben ser implementadas
en capas superiores.

Bits 0 - 15 16 - 31

0 Puerto origen Puerto destino

32 Longitud del Mensaje Suma de verificación

64 Datos

La cabecera UDP consta de 4 campos de los cuales 2 son opcionales (con fondo rojo en la
tabla). Los campos de los puertos origen y destino son campos de 16 bits que identifican el
proceso de emisión 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. El campo de la cabecera restante es una suma de comprobación de
16 bits que abarca una pseudo-cabecera IP (con las IP origen y destino, el protocolo y la
longitud del paquete UDP), la cabecera UDP, los datos y 0's hasta completar un múltiplo
de 16. El checksum también es opcional en IPv4, aunque generalmente se utiliza en la
práctica (en IPv6 su uso es obligatorio). A continuación se muestra los campos para el
cálculo del checksum en IPv4, marcada en rojo la pseudo-cabecera IP.

Bits 0–7 8 – 15 16 – 23 24 – 31

0 Dirección Origen

32 Dirección Destino

64 Ceros Protocolo Longitud UDP

96 Puerto Origen Puerto Destino

128 Longitud del Mensaje Suma de verificación

160 Datos

El protocolo UDP se utiliza por ejemplo cuando se necesita transmitir voz o vídeo y resulta
más importante transmitir con velocidad que garantizar el hecho de que lleguen
absolutamente todos los bytes.

Puertos[editar]
Véase también: Anexo:Números de puertos de red

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 dinámicos y son utilizados como puertos
temporales, sobre todo por los clientes al comunicarse con los servidores.

Uso en aplicaciones[editar]
La mayoría de las aplicaciones claves de Internet utilizan el protocolo UDP, incluyendo: el
Sistema de Nombres de Dominio , donde las consultas deben ser rápidas y solo contaran
de una sola solicitud, luego de un paquete único de respuesta, el Protocolo de
Administración de Red, el Protocolo de Información de Enrutamiento (RIP) y el Protocolo
de Configuración dinámica de host.

Principales características[editar]
Las características principales de este protocolo son:
1. Trabaja sin conexión, es decir que no emplea ninguna sincronización entre el
origen y el destino.
2. Trabaja con paquetes o datagramas enteros, no con bytes individuales como TCP.
Una aplicación que emplea el protocolo UDP intercambia información en forma de
bloques de bytes, de forma que por cada bloque de bytes enviado de la capa de
aplicación a la capa de transporte, se envía un paquete UDP.
3. No es fiable. No emplea control del flujo ni ordena los paquetes.
4. Su gran ventaja es que provoca poca carga adicional en la red ya que es sencillo y
emplea cabeceras muy simples.

Características del protocolo UDP


El protocolo UDP (User Datagram Protocol, Protocolo de datagrama de usuario) es un
protocolo no orientado a conexión de la capa de transporte del modelo TCP/IP. Este
protocolo es muy simple ya que no proporciona detección de errores (no es un protocolo
orientado a conexión).

Por lo tanto, el encabezado del segmento UDP es muy simple:

Puerto de origen (16 bits) Puerto de destino (16 bits)

Longitud total (16 bits) Suma de comprobación del encabezado (16


bits)

Datos (longitud variable)

Significado de los diferentes campos


Puerto de origen: es el número de puerto relacionado con la aplicación del remitente del
segmento UDP. Este campo representa una dirección de respuesta para el destinatario.
Por lo tanto, este campo es opcional. Esto significa que si el puerto de origen no está
especificado, los 16 bits de este campo se pondrán en cero. En este caso, el destinatario
no podrá responder (lo cual no es estrictamente necesario, en particular para mensajes
unidireccionales).

Puerto de destino: este campo contiene el puerto correspondiente a la aplicación del


equipo receptor al que se envía.

Longitud: este campo especifica la longitud total del segmento, con el encabezado
incluido. Sin embargo, el encabezado tiene una longitud de 4 x 16 bits (que es 8 x 8 bits),
por lo tanto la longitud del campo es necesariamente superior o igual a 8 bytes.

Suma de comprobación: es una suma de comprobación realizada de manera tal que


permita controlar la integridad del segmento.
Comparativa entre UDP y TCP (Transmission Control Protocol)[editar]

 UDP: proporciona un nivel de transporte no fiable de datagramas, ya que apenas


añade la información necesaria para la comunicación extremo a extremo al paquete
que envía al nivel inferior. Lo utilizan aplicaciones como NFS (Network File System) y
RCP (comando para copiar ficheros entre ordenadores remotos), pero sobre todo se
emplea en tareas de control y en la transmisión de audio y vídeo a través de una red.
No introduce retardos para establecer una conexión, no mantiene estado de conexión
alguno y no realiza seguimiento de estos parámetros. Así, un servidor dedicado a una
aplicación particular puede soportar más clientes activos cuando la aplicación corre
sobre UDP en lugar de sobre TCP.

 TCP: es el protocolo que proporciona un transporte fiable de flujo de bits entre


aplicaciones. Está pensado para poder enviar grandes cantidades de información de
forma fiable, liberando al programador de la dificultad de gestionar la fiabilidad de la
conexión (retransmisiones, pérdida de paquetes, orden en el que llegan los paquetes,
duplicados de paquetes...) que gestiona el propio protocolo. Pero la complejidad de la
gestión de la fiabilidad tiene un coste en eficiencia, ya que para llevar a cabo las
gestiones anteriores se tiene que añadir bastante información a los paquetes que
enviar. Debido a que los paquetes para enviar tienen un tamaño máximo, cuanta más
información añada el protocolo para su gestión, menos información que proviene de la
aplicación podrá contener ese paquete (el segmento TCP tiene una sobrecarga de 20
bytes en cada segmento, mientras que UDP solo añade 8 bytes). Por eso, cuando es
más importante la velocidad que la fiabilidad, se utiliza UDP. En cambio, TCP asegura
la recepción en destino de la información para transmitir.

Transmisión de vídeo y voz[editar]


UDP es generalmente el protocolo usado en la transmisión de vídeo y voz a través de una
red. Esto es porque no hay tiempo para enviar de nuevo paquetes perdidos cuando se
está escuchando a alguien o viendo un vídeo en tiempo real.
Ya que tanto TCP como UDP circulan por la misma red, en muchos casos ocurre que el
aumento del tráfico UDP daña el correcto funcionamiento de las aplicaciones TCP. Por
defecto, TCP pasa a un segundo lugar para dejar a los datos en tiempo real usar la mayor
parte del ancho de banda. El problema es que ambos son importantes para la mayor parte
de las aplicaciones, por lo que encontrar el equilibrio entre ambos es crucial.
Todo este tipo de protocolos son usados en telemática.

2.4.4 Protocolo UDP

UDP es un protocolo simple que provee las funciones básicas de la capa de


transporte. Tiene una sobrecarga mucho menor que el TCP, ya que no está
orientado a la conexión y no proporciona mecanismos sofisticados de
retransmisión, secuenciamiento y flujo de control.
Esto no significa que las aplicaciones que utilizan UDP no son siempre poco
confiables. Sólo quiere decir que estas funciones no las contempla el protocolo
de la capa de transporte y se deben implementar aparte, si fuera necesario.
Pese a que es relativamente baja la cantidad total de tráfico UDP que puede
encontrarse en una red típica, 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

Algunas aplicaciones, tales como los juegos en línea o VoIP, pueden tolerar la
pérdida de algunos datos. Si estas aplicaciones utilizaran TCP,
experimentarían largas demoras, ya que TCP detecta la pérdida de datos y los
retransmite. Estas demoras serían más perjudiciales para la aplicación que las
pequeñas pérdidas de datos. Algunas aplicaciones, como DNS, simplemente
vuelven a intentar la solicitud si no reciben una respuesta y, por lo tanto, no
necesitan el TCP para garantizar la entrega del mensaje.

Resumen de las características del protocolo UDP


Para comprender a fondo cómo funciona la transmisión de datagramas en este
protocolo, resulta útil analizar detenidamente cuáles son las propiedades del protocolo de
datagramas de usuario.

1. El protocolo UDP funciona sin conexión: el protocolo UDP se caracteriza porque


permite el envío de datagramas a través de la red sin que se haya establecido
previamente una conexión entre el emisor y el receptor. Los datagramas
respectivos se envían a la dirección IP preferida de la secuencia especificando 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 posibilidad de incluir en la cabecera UDP información
sobre el puerto de origen.
2. UDP utiliza puertos: al igual que el TCP, el protocolo UDP utiliza puertos para
permitir que los datagramas se transfieran a los protocolos correctos, es decir, a
las aplicaciones 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 comunicación rápida y sin retardos: el protocolo
de transporte es el adecuado para una transmisión de datos rápida debido a que
no hay que llevar a cabo una configuración de la conexión. Esto resulta también
del hecho de que la pérdida de un paquete individual afecta exclusivamente a la
calidad de la transmisión. En el caso de conexiones TCP, en cambio, se intenta
reenviar de nuevo los paquetes perdidos de forma automática, lo que provoca que
todo el proceso de transmisión se detenga.
4. El protocolo UDP no ofrece ninguna garantía de seguridad e integridad de los
datos: la ausencia de acuse de recibo mutuo entre el emisor y el receptor
garantiza que la velocidad de transmisión en el protocolo UDP sea excelente; no
obstante, el protocolo no puede garantizar la seguridad ni la integridad de los
datagramas. Tampoco puede garantizar el orden de los paquetes enviados. Por
ello, los servicios que utilizan UDP deben aplicar sus propias medidas de
corrección y protección.
En resumen
La característica más importante del protocolo de datagramas de usuario es que permite
enviar datagramas sin que se haya establecido previamente una conexión. Esto se traduce
en la ventaja de poder transmitir con gran velocidad, aunque conlleva que la información
transmitida sea fácilmente alterada, la pérdida de paquetes no sea corregida y la
clasificación de los paquetes sea parcialmente arbitraria. Por esta razón, las aplicaciones
UDP deben estar capacitadas para trabajar correctamente con datagramas perdidos o no
clasificados y aplicar sus propios mecanismos de corrección y seguridad.

¿Cómo se estructura la cabecera UDP?


Como es típico en todos los protocolos, los paquetes UDP consisten en una cabecera
(header) y los datos reales del usuario. La cabecera UDP contiene toda la información
necesaria para la transmisión de datos utilizando el protocolo de transporte y hace que un
paquete UDP se pueda identificar como tal. La cabecera UDP consta de 4 campos y está
dividida en 2 bloques de 32 bits con la siguiente estructura:

Bits 0–15 Bits 16–31

cero Puerto de origen Puerto de destino

32 Longitud del mensaje Suma de verificación

Los primeros 16 bits de la cabecera identifican el puerto de origen desde el que se ha


enviado un datagrama concreto. El receptor necesita esta información para poder
responder al paquete. Ya que UDP funciona sin conexión y básicamente no requiere
ninguna comunicació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 especifica el puerto de destino, es decir, se indica el servicio


solicitado. Esta información es obligatoria, al contrario que el puerto de origen, porque si
no, no sería posible asignar correctamente el datagrama.

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 jumbogramas)
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 comprobación, que se utiliza


para detectar errores durante la transmisión. De esta manera, se puede detectar si los
datos han sufrido alguna alteración en el camino. No obstante, los paquetes detectados 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 pseudocabecera (que contiene información sobre la
cabecera IP).
La suma de comprobación es opcional en IPv4, pero la mayoría de las aplicaciones 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 comprobación es obligatoria.

¿Qué aplicaciones utilizan el protocolo UDP?


El protocolo de datagramas de usuario, debido a su estructura mínima y a su falta de
mecanismos que garanticen una transmisión completa y exitosa, no puede utilizarse
como protocolo de transporte universal . En realidad, fue diseñado desde el principio
pensando en aplicaciones que (todavía) no requieren un servicio de transmisión fiable. Por
ello, el campo de aplicación del protocolo UDP es limitado, aunque es necesario subrayar
su enorme valor, como demuestran los siguientes tipos de aplicación del mismo:

 Aplicaciones basadas en best effort delivery: el escenario típico en el que


encontramos el protocolo UDP son las aplicaciones basadas en la entrega de
mejor esfuerzo. A este tipo de programas, que utilizan el protocolo de datagramas
de usuario como un mecanismo de mejor esfuerzo, les basta con una transmisión
poco fiable de la información, porque la repiten constantemente de igual manera.
Encontramos ejemplos en aquellas aplicaciones que transmiten valores medidos o
que ejecutan repetidamente las mismas órdenes de trabajo.
 Aplicaciones ligeras: la baja sobrecarga del protocolo de transporte proporciona
un soporte óptimo para las aplicaciones que tengan un diseño muy sencillo. Lo
anterior, junto con el hecho de que no es necesario configurar una conexión, hacen
que estas aplicaciones puedan beneficiarse de un rendimiento especialmente alto
en el procesamiento y reenvío de datagramas en las redes.
 Aplicaciones con mecanismos propios para una transmisión fiable: el UDP
puede resultar interesante para aquellas aplicaciones que necesitan un intercambio
de información fiable, pero que dependen de sus propios mecanismos a la hora de
dar respuesta a los datagramas. La ventaja de este tipo de servicios es que no
están sujetos a patrones fijos a la hora de garantizar la integridad y exactitud de los
datagramas enviados. Pueden decidir por sí mismos cómo y cuándo reaccionar
ante información incorrecta o no clasificada.
 Aplicaciones multicast: mientras que los protocolos de transporte confiables
como el protocolo TCP se limitan a la comunicación de extremo a extremo, el
protocolo UDP también soporta conexiones de multidifusión IP. En el caso de que
una aplicación deba enviar paquetes IP de forma eficiente y rápida a varios
receptores al mismo tiempo , el UDP proporciona el soporte adecuado.
 Aplicaciones en tiempo real (real time applications): por último, el UDP también
es adecuado como protocolo de transporte para servicios que presentan requisitos
de comunicación en tiempo real, como las transmisiones de audio o vídeo. Se trata
de protocolos que deben ser capaces de controlar en gran medida la transmisión,
recepción y reproducción de flujos de datos por sí mismos, lo que resulta sencillo
en las transmisiones basadas en el protocolo UDP sin conexión.
El protocolo UDP es un protocolo no orientado a la conexión, de manera que no proporciona ningún
tipo de control de errores ni de flujo, aunque sí utiliza mecanismos de detección de errores. En caso
de detectar un error, el UDP no entrega el datagrama a la aplicación, sino que lo descarta.

¿Por qué debe definirse un protocolo de estas características? Es necesario recordar que por debajo
del UDP está utilizando el protocolo IP, que también es un protocolo no orientado a la conexión. Por
lo tanto, se pensó en definir un protocolo del nivel de transporte que permitiera que la aplicación
explotara este tipo de características y que fuera tan simple y sencillo como fuera posible.

EL UDP es un protocolo no orientado a la conexión. Esto


significa que cada datagrama UDP existe independientemente
del resto de los datagramas UDP.

La simplicidad del UDP hace que sea ideal para aplicaciones


que requieren pocos retrasos (por ejemplo, aplicaciones en
tiempo real). EL UDP también es ideal para los sistemas que
son tan limitados que no pueden implementar un sistema tan
complejo como el TCP.

La siguiente figura muestra la unidad de datos del protocolo


UDP y su encapsulamiento en un datagrama IP. Cada operación
de salida de un datagrama UDP provoca la generación de un
datagrama IP.

Las características más importantes del UDP son las siguientes:

 No garantiza la fiabilidad, es decir, no se tiene la


seguridad de que cada datagrama UDP transmitido
llegue a su destino. Es uno de los llamados
protocolos best-effort: el UDP hace todo lo que puede
para transferir los datagramas de su aplicación, pero no
garantiza su entrega.
 No preserva la secuencia de la información que le
proporciona la aplicación. Puesto que está en modo
datagrama y utiliza un protocolo por debajo como el IP,
que también está en modo datagrama, la aplicación
puede recibir la información desordenada. La aplicación
debe estar preparada frente al hecho de que haya
datagramas que se pierdan, lleguen con retraso o se
desordenen.

El datagrama UDP consta de una cabecera y un cuerpo para


encapsular los datos. La cabecera consta de los siguientes
elementos:

 Los campos puerto de origen y puerto de destino,


que identifican las aplicaciones en los terminales de
origen y de destino. Cada puerto tiene 16 bits.

 El campo longitud indica la longitud en octetos del


datagrama UDP, incluyendo la cabecera UDP (es la
diferencia de la longitud del datagrama IP menos la
cabecera IP). Puesto que la longitud máxima de un
datagrama IP es de 65.535 bytes, con una cabecera
estándar de 20 bytes, la longitud máxima de un
datagrama UDP es de 65.505 bytes.

 El campo checksum (16 bits) es opcional y protege


tanto la cabecera como los datos UDP (se debe recordar
que el checksum del datagrama IP sólo cubre la
cabecera IP). Cuando el UDP recibe un datagrama y
determina que hay errores, lo descarta y no lo entrega a
ninguna aplicación.

Como hemos visto, el UDP no proporciona una entrega de


información segura y fiable a la aplicación. Sin embargo, puede
haber aplicaciones, por ejemplo, interesadas en transmitir
información en modo multicast o broadcast (a un grupo de
usuarios o a todos los usuarios de la Red). En este caso, sí que
tiene sentido enviar la información a muchos receptores sin
esperar una respuesta de todos, de manera que es ideal
disponer de un protocolo de transporte simple y sencillo no
orientado a la conexión como el UDP.

Por otro lado, alguien podría preguntarse qué ofrece realmente


el UDP con respecto al IP, es decir, por qué se debe utilizar el
UDP si el IP también ofrece una conexión en modo datagrama.
La respuesta es que el UDP ofrece un servicio de multiplexación
en las aplicaciones que el IP no ofrece. Por ejemplo, ¿qué
sucede si varias aplicaciones quieren comunicarse con otras
aplicaciones en máquinas remotas sin utilizar un servicio fiable
como el TCP? El IP identifica la estación remota, sin embargo,
¿cómo se pueden identificar las aplicaciones destino en la
estación remota? La solución consiste en utilizar el UDP y las
direcciones puerto para multiplexar la información. Con la
dirección puerto es posible identificar cuál es la aplicación de
destino en la estación remota.
Protocolo de Datagramas de Usuario
(UDP)

UDP es un protocolo estándar con número 6 de STD. Este protocolo


se describe en el RFC 768 - Protocolo de Datagrama de Usuario. Este
protocolo se recomienda, pero en la práctica cada implementación
TCP/IP que no se use exclusivamente para encaminamiento incluirán
UDP.

UDP es básicamente una interfaz de aplicación para IP. No soporta


confiabilidad, control de flujo o recuperación de errores para IP.
Simplemente sirve como "multiplexor/demultiplexor" para enviar y
recibir datagramas, usando puertos para dirigir los datagramas como
se muestra en la figura adjunta. Se pueden encontrar más detalles
sobre puertos en Puertos y Sockets.

UDP proporciona un mecanismo para que una aplicación envíe un


datagrama a otra. La capa UDP es sumamente delgada por lo que
tiene pocas sobrecargas, pero requiere que la aplicación sea
responsable de la recuperación de errores y demás características no
soportadas.

Puertos

El concepto de puerto se trató anteriormente en Puertos y Sockets.

Las aplicaciones que envían datagramas hacia un host necesitan


identificar el destino, siendo éste más especiífico que la dirección IP,
ya que los datagramas están dirigidos normalmente a ciertos procesos
y no al sistema completo. UDP proporciona este mecanismo
usando puertos.

Un puerto es un número de 16 bits que identifica qué proceso de un


host está asociado con un cierto datagrama. Hay dos tipos de puerto:

bien-conocidos

Estos puertos pertenecen a servidores estándares, por ejemplo


TELNET usa el puerto 23. El rango de este tipo de puerto está
comprendido entre 1 y 1023. Los números de puertos bien-
conocidos son típicamente impares porque los primeros
sistemas usaban el concepto de puerto como una pareja de
puertos impar/par para operaciones duplex. La mayoría de los
servidores requieren sólo un puerto. Una excepción es el
servidor BOOTP que usa dos: el 67 y el 68 (ver Protocolo
BOOTstrap - BOOTP).

El motivo de la utilización de los puertos bien-conocidos es permitir a


los clientes tener la capacidad de encontrar servidores sin información
de configuración. Los números de dichos puertos están definidos
en STD 2 - Números de Internet Asignados.

efímeros

Los clientes no necesitan números de puertos bien-conocidos


porque inician la comunicación con servidores y el número de
puerto que usan ya está contenido en los datagramas UDP
enviados al servidor. Cada proceso del cliente está localizado en
un número de puerto mientras el host lo necesite y se esté
ejecutando. Los números de puerto efímerostienen valores
mayores que 1023, normalmente en el rango de 1024 a 5000.
Un cliente puede usar cualquier número localizado dentro de
dicho rango, mientras que la combinación de <protocolo de
transporte, dirección IP, número de puerto> es única.

Nota: TCP también usa números de puerto con los mismos valores.
Estos puertos son bastante independientes. Normalmente, un servidor
usará TCP o UDP, pero hay excepciones. Por ejemplo, los servidores
de Nombres de Dominio (ver Sistema de Nombre de Dominio (DNS))
usan ambos, puerto UDP 53 y puerto TCP 53.

Formato del Datagrama UDP

Cada datagrama UDP se envía con un único datagrama IP. Aunque el


datagrama IP se puede fragmentar durante la transmisión, la
implementación de recepción IP lo re-ensamblará antes de presentarlo
a la capa UDP. Todas las implementaciones IP están preparadas
para aceptar datagramas de 576 bytes, permitiendo un tamaño
máximo de cabacera IP de 60 bytes sabiendo que un datagrama UDP
de 516 bytes lo aceptan todas las implementaciones. Muchas
implementaciones aceptarán datagramas mayores, aunque no se
puede asegurar. El datagrama UDP tiene una cabecera de 16 bytes
que se describe en la figura siguiente:

donde:

puerto de origen

Indica el puerto del proceso que envía. Este es el puerto que se


direcciona en las respuestas.

puerto destino

Especifica el puerto del proceso destino en el host de destino.

longitud

Es el tamaño (en bytes) de este datagrama de usuario


incluyendo la cabecera.
suma de comprobación (checksum)

Es un campo opcional de 16 bits en complemento a uno de la


suma en complemento a uno de una cabecera pseudo-IP, la
cabecera UDP y los datos UDP. La cabecera pseudo-IP
contiene la dirección IP fuente y destino, el protocolo y la
longitud UDP:

La cabecera pseudo-IP extiende efectivamente la suma de


comprobación para incluir el datagrama IP original (defragmentado)

Interfaz de Programación de Aplicaciones UDP

La interfaz de aplicación que ofrece UDP se describe en el RFC 768.


Dicha interfaz proporciona:

 La creación de nuevos puertos de recepción.


 La recepción de operaciones que devuelven los bytes de datos y
un indicador de puerto fuente y una dirección fuente IP.
 El envío de operaciones que tienen como parámetros los datos,
los puertos fuente y destino y las direcciones.

La forma en la que está implementado depende de cada vendedor.

Hay que ser conscientes de que UDP e IP no proporcionan entrega


garantizada, control de flujo o recuperación de errores, así que estos
mecanismos tienen que ser soportados por las aplicaciones.

Las aplicaciones estándares que utilizan UDP son:

 Protocolo de Transferencia de Ficheros Trivial (TFTP)


 Sistema de Nombres de Dominio (DNS) servidor de nombres
 Llamada a Procedimiento Remoto (RPC), usado por el Sistema
de Ficheros en Red (NFS)
 Sistema de Computación de Redes (NCS)
 Protocolo de Gestión Simple de Redes (SNMP)
Puertos y Sockets | T

User Datagram Protocol (UDP)


Es el protocolo de transporte más sencillo de la pila de protocolos TCP/IP

2.1. Características

Función principal del protocolo


Permitir la comunicación entre dos sistemas en los que la velocidad es más importante que
la fiabilidad.
En transferencias de video o audio en tiempo real, unos cuantos paquetes perdidos son
tolerables. Recuperar paquetes crea una excesiva saturación que reduce el rendimiento.

Datagramas UDP
La PDU del protocolo UDP recibe el nombre de datagrama.

Características generales
 Cada datagrama se envía de forma independiente del resto.
 UDP no ofrece ningún mecanismo que permita garantizar al remitente que todos
los datos hayan llegado al destino.
 Los datagramas se envían sin que en el datagrama esté identificado su orden, por
lo que no se puede identificar en el destino ni el orden de los datagramas ni si
alguno ha llegado duplicado.
 No hay mecanismos que eviten congestiones.
 No dispone de ningún mecanismo de fragmentación incluido en el protocolo, sino
que es la propia aplicación la que debe dividir su información en fragmentos de
tamaño adecuado para que sean encapsulados mediante datagramas UDP.
 En el encabezado del datagrama se envía una suma de comprobación (checksum)
que permite averiguar en el destino si ha habido errores en la transmisión desde el
origen.

Servicios que ofrece el protocolo


 Multiplexación de envíos entre procesos por encima de un mismo enlace de red,
identificando en cada máquina cada proceso con un número de puerto.
 Detección de errores en la transmisión entre extremos para cada datagrama.
Consecuencias
 Debido a su extrema sencillez, el protocolo UDP permite elevadas velocidades de
transferencia, pero no ofrece garantías de la entrega.
 Es un protocolo útil para aplicaciones que necesitan funcionar en tiempo real o con
bajo tiempo de respuesta, siempre y cuando se puedan permitir eliminar los
datagramas que no lleguen o que no lo hagan a tiempo.

Servicios adicionales
Cualquier otra funcionalidad que se precise deberá implementarla la aplicación que haga
uso del protocolo UDP, ya que el protocolo no lo hace, como por ejemplo la reordenación
de datagramas, identificación de duplicados, solicitud de retransmisión de los datagramas
que no hayan llegado, etc. Sin embargo, si es necesaria una elevada fiabilidad o control
de flujo para evitar congestiones, es más conveniente usar TCP que UDP.

2.2. Transmisión de datos mediante UDP


En el origen la aplicación divide la información en fragmentos lo suficientemente pequeños
para ser enviados por UDP y los pasa a la capa de transporte, que los encapsula en
datagramas UDP y los envía a través de la capa de red.
En el destino, cuando se recibe un datagrama, se comprueba el checksum. Si es
incorrecto, el datagrama se descarta y, en caso contrario, se desencapsula la información
y se pasa al proceso que corresponda según el número de puerto.

2.3. Aplicaciones que utilizan UDP


 Protocolo DNS: permite averiguar la dirección IP de un recurso mediante su
nombre DNS o a la inversa. Es importante obtener una respuesta rápida; en caso
de que no se obtuviera, se vuelve a solicitar.
 Protocolo DHCP: permiete obtener de forma automática la configuración IP de un
dispositivo desde un servidor de DHCP. Es importante que se haga de forma
rápida y en caso de que no llegue se vuelve a solicitar.
 Protocolos de streamming de voz y vídeo: algunos protocolos de difusión de voz
y vídeo en tiempo real requieren una gran velocidad de transmisión y además se
diseñan para permitir que se pierdan algunos datos, por ello la mayoría utilizan
UDP.
 Juegos online los juegos online en tiempo real entre varios jugadores requieren
alta velocidad de respuesta en la interacción de los jugadores por eso suelen
utilizar UDP.
 Protocolos de difusión y multidifusión de datos: permiten transmitir datos
mediante tramas o paquetes broadcast o multicast y utilizan UDP. Un ejemplo de
este tipo de aplicaciones es en el clonado por red de imágenes de disco duro.
2.4. Formato encabezado de datagrama
UDP

Você também pode gostar