2. User Datagram Protocol (UDP)

2.1 Visión general

El protocolo UDP (UserDatagram Protocol) es un protocolo no orientado a conexión de la capa de transporte del modelo TCP/IP, lo que significa que nogarantizar ni la entrega de paquetes ni que los paquetes lleguen en orden secuencial, donde el control sobre el destino final de un paquete UDP recae en el equipo que lo envía.

Sin_título1.png
Figura Nº 7: UDP en una red pueden ser poco fiables
Dado la probabilidad de pérdida de paquetes de datos, puede parecer extraño que a nadie se le ocurra utilizar un sistema tan poco fiable, aparentemente anárquica. De hecho, hay muchas ventajas al usar UDP que pueden no ser evidentes a primera vista.
  • UDP puede ser más eficiente que la entrega garantizada de flujos de datos de. Si la cantidad de datos es pequeña y los datos se envían con frecuencia, tiene sentido usarla para evitar la sobrecarga de entrega garantizada.

  • A diferencia de TCP, que establecen una conexión, UDP causa menos gastos generales. Si la cantidad de datos que se envían es pequeña y los datos se envían con frecuencia, la sobrecarga de establecer una conexión no puede valer la pena. UDP puede ser preferible en este caso, sobre todo si se envían los datos de un gran número de máquinas a una central, en cuyo caso la suma total de todas estas conexiones pueden provocar una sobrecarga considerable.

  • Las aplicaciones en tiempo real pueden ser candidatos para usar UDP, ya que hay menos retrasos debido a la comprobación de errores y control de flujo de TCP. Los Paquetes UDP pueden ser utilizados para saturar el ancho de banda disponible para ofrecer grandes cantidades de datos. Además, si se pierden algunos datos, pueden ser sustituidos por el siguiente grupo de paquetes con información actualizada, eliminando la necesidad de volver a enviar los datos antiguos.

  • Los sockets UDP puede recibir datos de más de un host. Si hay varias máquinasdebe haber comunicación, entonces UDP puede ser más conveniente que otros mecanismos como TCP.

  • Algunos protocolos de red especificar UDP como mecanismo de transporte, que requiriendo su uso.

Un socket es una referencia indirecta a un puerto particular usada por el proceso receptor en la máquina receptora.

El envío de datagramas es similar a enviar una carta a través del servicio postal: El orden de salida no es importante y no está garantizado, y cada mensaje es independiente de cualquier otro.
En las comunicaciones basadas en datagramas como las UDP, el paquete de datagramas contiene el número de puerto de su destino y el UDP encamina el paquete a la aplicación apropiada. Como en la figura Nº 8


Comunicación_basada_en_datagramas.png

Figura Nº 8: Comunicación basada en datagramasUn datagrama enviado mediante UDP es trasmitido desde un proceso emisor a un proceso receptor sin reconocimiento o recomprobaciones. Si tiene lugar un fallo, el mensaje puede no llegar. Un datagrama es transmitido entre procesos cuando un proceso lo envía y otro proceso lo recibe. Cualquier proceso que necesite enviar o recibir mensajes debe en primer lugar crear un socket a una dirección de Internet y un puerto local. Un servidor enlazará ese socket a un puerto servidor - uno que se hace conocido a los clientes de manera que puedan enviar mensajes al mismo. Un cliente enlaza su socket a cualquier puerto local libre. El método receptor devuelve la dirección de Internet y el puerto del emisor, además del mensaje, permitiendo a los receptores enviar una respuesta.

image010.jpg
Figura Nº 9: un servidor utiliza dos sockets: uno para aceptar la conexión y el otro para enviar / receptor
Las clases Java para establecer comunicaciones mediante datagramas son:
  • java.net.DatagramPacket
  • java.net.DatagramSocket


back_button.gifnext_button.gif