Provided by: manpages-es_1.55-10_all bug

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)