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.