.\" This man page is Copyright (C) 1999 Andi Kleen . .\" Permission is granted to distribute possibly modified copies .\" of this page provided the header is included verbatim, .\" and in case of nontrivial modification author and date .\" of the modification is added to the header. .\" $Id: udp.7,v 1.3 2005/03/22 01:19:28 pepin.jimenez Exp $ .\" .\" Translated on Thu Jul 1 1999 by Juan Piernas .\" Traducción revisada por Miguel Pérez Ibars el 14-febrero-2005 .\" .TH UDP 7 "2 octubre 1998" "Página man de Linux" "Manual del Programador de Linux" .SH NOMBRE udp \- Protocolo UDP sobre IPv4. .SH SINOPSIS .B #include .br .B #include .br .B udp_socket = socket(PF_INET, SOCK_DGRAM, 0); .SH 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 .BR sendto (2) o .BR sendmsg (2) con una dirección de destino válida como argumento. Cuando se llama a .BR 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 .BR send (2) o .BR write (2) sin especificar una dirección de destino. Todavía es posible realizar envíos a otros destinos pasando una dirección a .BR sendto (2) o .BR sendmsg (2). Para poder recibir paquetes, se debe ligar primero el conector a una dirección local usando .BR bind (2). De otra manera la capa de conector asignará automáticamente un puerto local libre fuera del rango definido por .I net.ipv4.ip_local_port_range y ligará el conector a .IR 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 .B MSG_TRUNC se activa. .I MSG_WAITALL no está soportada. Se pueden enviar o recibir opciones IP usando las opciones de conectores descritas en .BR 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 .BR ip (7). Cuando en un envío está activa la opción .BR 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 .B IP_PMTU_DISCOVER de .BR ip (7). .SH FORMATO DE DIRECCIÓN UDP usa el formato de dirección .B sockaddr_in de IPv4 descrito en .BR ip (7). .SH 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 .B RFC1122. Por compatibilidad con código anterior es posible activar la opción .B SO_BSDCOMPAT de SOL_SOCKET para recibir errores remotos (excepto .B EPROTO y .BR 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 .B IP_RECVERR todos los errores se almacenan en la cola de errores de conector y se pueden recibir mediante .BR recvmsg (2) con la opción .B MSG_ERRQUEUE activa. .SH IOCTLS Estos ioctls pueden ser utilizados con .BR ioctl (2). La sintaxis correcta es: .PP .RS .nf .BI int " value"; .IB error " = ioctl(" tcp_socket ", " ioctl_type ", &" value ");" .fi .RE .TP .B 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. .TP .B 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. .PP Además todos los ioctls documentados en .BR ip (7) y .BR socket (7) están soportados. .SH ERRORES Una operación de enviar o recibir sobre un conector UDP puede devolver cualquier error documentado en .BR socket (7) o .BR ip (7). .B 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. .SH VERSIONES IP_RECVERR es una nueva característica de la versión 2.2 de Linux. .SH CREDITOS Esta página de manual fue escrita por Andi Kleen. .SH VÉASE TAMBIÉN .BR ip (7), .BR socket (7), .BR raw (7) RFC768 para el protocolo UDP. .br RFC1122 para los requisitos del anfitrión (host). .br RFC1191 para una descripción del descubrimiento de la MTU de la ruta.