Provided by: manpages-es_1.55-9_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.