udp

UDP(7)                   Manual del Programador de Linux                  UDP(7)



NOMBRE
       udp - Protocolo UDP sobre IPv4.

SINOPSIS
       #include <sys/socket.h>
       #include <netinet/in.h>
       udp_socket = socket(PF_INET, SOCK_DGRAM, 0);

DESCRIPCIÓN
       Ésta es una implementación del protocolo UDP (User Datagram Protocol)
       descrito en RFC768. Implementa un servicio de paquetes de datagramas no
       fiable y sin conexión. Los paquetes pueden ser reordenados o duplicados
       antes de que lleguen. UDP genera y comprueba sumas de verificación
       (checksums) para detectar errores de transmisión.

       Cuando se crea un conector (socket) UDP, sus direcciones local y remota
       están sin especificar. Se pueden enviar datagramas inmediatamente usando
       sendto(2) o sendmsg(2) con una dirección de destino válida como
       argumento. Cuando se llama a connect(2) sobre el conector, se envía la
       dirección de destino por defecto y a partir de ese momento se pueden
       enviar datagramas usando send(2) o write(2) sin especificar una dirección
       de destino.  Todavía es posible realizar envíos a otros destinos pasando
       una dirección a sendto(2) o sendmsg(2).  Para poder recibir paquetes, se
       debe ligar primero el conector a una dirección local usando bind(2).  De
       otra manera la capa de conector asignará automáticamente un puerto local
       libre fuera del rango definido por net.ipv4.ip_local_port_range y ligará
       el conector a INADDR_ANY.

       Todas las operaciones de recepción sólo devuelven un paquete. Cuando el
       paquete es más pequeño que el buffer pasado, sólo se devuelven los datos
       del paquete y, cuando es mayor, el paquete se trunca y la bandera
       MSG_TRUNC se activa.  MSG_WAITALL no está soportada.

       Se pueden enviar o recibir opciones IP usando las opciones de conectores
       descritas en ip(7).  Estas son procesadas por el núcleo sólo cuando está
       activa la sysctl adecuada (pero todavía se pasan al usuario incluso
       cuando está desactivada). Vea ip(7).

       Cuando en un envío está activa la opción MSG_DONTROUTE, la dirección de
       destino debe referirse a la dirección de una interfaz local y el paquete
       sólo se envía a esa interfaz.

       UDP fragmenta un paquete cuando su longitud total excede la MTU (Unidad
       de Transmisión Máxima) de la interfaz. Una alternativa de red más
       amigable es usar el descubrimiento de la MTU de la ruta como se describe
       en la sección IP_PMTU_DISCOVER de ip(7).


FORMATO DE DIRECCIÓN
       UDP usa el formato de dirección sockaddr_in de IPv4 descrito en ip(7).


MANEJO DE ERRORES
       Todos los errores fatales serán pasados al usuario como un resultado de
       error incluso cuando el conector no esté conectado. Ésto incluye errores
       asíncronos recibidos de la red. Puede obtenerse un error por un paquete
       anterior que fue enviado por el mismo conector.  Este comportamiento
       difiere de muchas otras implementaciones de conectores BSD que no pasan
       ningún error al menos que el conector esté conectado.  El comportamiento
       de Linux viene mandado por el RFC1122.

       Por compatibilidad con código anterior es posible activar la opción
       SO_BSDCOMPAT de SOL_SOCKET para recibir errores remotos (excepto EPROTO y
       EMSGSIZE) sólo cuando el conector se ha conectado.  Es mejor arreglar el
       código para manejar adecuadamente los errores que habilitar esta opción.
       Los errores generados localmente siempre se pasan.

       Cuando se activa la opción IP_RECVERR todos los errores se almacenan en
       la cola de errores de conector y se pueden recibir mediante recvmsg(2)
       con la opción MSG_ERRQUEUE activa.

IOCTLS
       Estos ioctls pueden ser utilizados con ioctl(2).  La sintaxis correcta
       es:

              int value;
              error = ioctl(tcp_socket, ioctl_type, &value);

       SIOCINQ
              Recibe un puntero a un entero como argumento. Devuelve el tamaño
              del siguiente datagrama pendiente en el entero en bytes, ó 0
              cuando no quedan datagramas pendientes.

       SIOCOUTQ
              Devuelve el número de bytes de datos en la cola de envío local.
              Sólo disponible en Linux 2.4 o superior.

       Además todos los ioctls documentados en ip(7) y socket(7) están
       soportados.

ERRORES
       Una operación de enviar o recibir sobre un conector UDP puede devolver
       cualquier error documentado en socket(7) o ip(7).

       ECONNREFUSED No se ha asociado un receptor a la dirección de destino.
       Esto podría ser provocado por un paquete anterior enviado por el
       conector.


VERSIONES
       IP_RECVERR es una nueva característica de la versión 2.2 de Linux.


CREDITOS
       Esta página de manual fue escrita por Andi Kleen.


VÉASE TAMBIÉN
       ip(7), socket(7), raw(7)

       RFC768 para el protocolo UDP.
       RFC1122 para los requisitos del anfitrión (host).
       RFC1191 para una descripción del descubrimiento de la MTU de la ruta.



Página man de Linux              2 octubre 1998                           UDP(7)