Provided by:
manpages-es_1.55-10_all 
NOMBRE
udp - Protocolo UDP sobre IPv4.
SINOPSIS
#include <sys/socket.h>
#include <netinet/in.h>
udp_socket = socket(PF_INET, SOCK_DGRAM, 0);
DESCRIPCI'ON
Esta es una implementacion del protocolo UDP (User Datagram Protocol)
descrito en RFC768. Implementa un servicio de paquetes de datagramas no
fiable y sin conexion. Los paquetes pueden ser reordenados o duplicados
antes de que lleguen. UDP genera y comprueba sumas de verificacion
(checksums) para detectar errores de transmision.
Cuando se crea un conector (socket) UDP, sus direcciones local y remota
estan sin especificar. Se pueden enviar datagramas inmediatamente
usando sendto(2) o sendmsg(2) con una direccion de destino valida como
argumento. Cuando se llama a connect(2) sobre el conector, se envia la
direccion de destino por defecto y a partir de ese momento se pueden
enviar datagramas usando send(2) o write(2) sin especificar una
direccion de destino. Todavia es posible realizar envios a otros
destinos pasando una direccion a sendto(2) o sendmsg(2). Para poder
recibir paquetes, se debe ligar primero el conector a una direccion
local usando bind(2). De otra manera la capa de conector asignara
automaticamente un puerto local libre fuera del rango definido por
net.ipv4.ip_local_port_range y ligara el conector a INADDR_ANY.
Todas las operaciones de recepcion solo devuelven un paquete. Cuando el
paquete es mas pequeno que el buffer pasado, solo se devuelven los
datos del paquete y, cuando es mayor, el paquete se trunca y la bandera
MSG_TRUNC se activa. MSG_WAITALL no esta soportada.
Se pueden enviar o recibir opciones IP usando las opciones de
conectores descritas en ip(7). Estas son procesadas por el nucleo solo
cuando esta activa la sysctl adecuada (pero todavia se pasan al usuario
incluso cuando esta desactivada). Vea ip(7).
Cuando en un envio esta activa la opcion MSG_DONTROUTE, la direccion de
destino debe referirse a la direccion de una interfaz local y el
paquete solo se envia a esa interfaz.
UDP fragmenta un paquete cuando su longitud total excede la MTU (Unidad
de Transmision Maxima) de la interfaz. Una alternativa de red mas
amigable es usar el descubrimiento de la MTU de la ruta como se
describe en la seccion IP_PMTU_DISCOVER de ip(7).
FORMATO DE DIRECCI'ON
UDP usa el formato de direccion sockaddr_in de IPv4 descrito en ip(7).
MANEJO DE ERRORES
Todos los errores fatales seran pasados al usuario como un resultado de
error incluso cuando el conector no este conectado. Esto incluye
errores asincronos 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 ningun error al menos que el conector este conectado.
El comportamiento de Linux viene mandado por el RFC1122.
Por compatibilidad con codigo anterior es posible activar la opcion
SO_BSDCOMPAT de SOL_SOCKET para recibir errores remotos (excepto EPROTO
y EMSGSIZE) solo cuando el conector se ha conectado. Es mejor arreglar
el codigo para manejar adecuadamente los errores que habilitar esta
opcion. Los errores generados localmente siempre se pasan.
Cuando se activa la opcion IP_RECVERR todos los errores se almacenan en
la cola de errores de conector y se pueden recibir mediante recvmsg(2)
con la opcion 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 tamano
del siguiente datagrama pendiente en el entero en bytes, o 0
cuando no quedan datagramas pendientes.
SIOCOUTQ
Devuelve el numero de bytes de datos en la cola de envio local.
Solo disponible en Linux 2.4 o superior.
Ademas todos los ioctls documentados en ip(7) y socket(7) estan
soportados.
ERRORES
Una operacion 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 direccion de destino.
Esto podria ser provocado por un paquete anterior enviado por el
conector.
VERSIONES
IP_RECVERR es una nueva caracteristica de la version 2.2 de Linux.
CREDITOS
Esta pagina de manual fue escrita por Andi Kleen.
V'EASE TAMBI'EN
ip(7), socket(7), raw(7)
RFC768 para el protocolo UDP.
RFC1122 para los requisitos del anfitrion (host).
RFC1191 para una descripcion del descubrimiento de la MTU de la ruta.
Pagina man de Linux 2 octubre 1998 UDP(7)