Página de Manual Linux
02/10/1998
manpages-pt
Portuguese Versions of the Manual Pages
manpages
Manual pages about using a GNU/Linux system
man-pages
Linux kernel and C library user-space interface documentation
NOME
udp - Protocolo UDP do IPv4.
SINÓPSE
#include <sys/socket.h>
#include <netinet/in.h>
udp_socket = socket(PF_INET, SOCK_DGRAM, 0);
#include <netinet/in.h>
udp_socket = socket(PF_INET, SOCK_DGRAM, 0);
DESCRIÇÃO
Esta é uma implementação do User Datagram Protocol descrito na RFC768. Ele implementa um serviço de datagramas sem checagem dos pacotes e não orientado a conexão. Os pacotes podem ser reordenados ou duplicados antes de chegar ao destino. O UDP gera e checa a validade (checksum) dos pacotes para pegar possíveis erros de transmissão.
Quando um soquete UDP é criado, os endereços local e remoto são indefinidos. Os datagramas podem ser usados imediatamente através do comando: sendto(2) ou sendmsg(2) com um endereço de destino válido como argumento. Quando o comando connect(2) é usado no soquete, o endereço de destino padrão é definido e o datagrama pode ser enviado usando-se o comando: send(2) ou write(2) sem a necessidade de especificação do endereço de destino. Pode-se também enviar para outros destinos passando um endereço para o comando sendto(2) ou sendmsg(2). Para poder receber os pacotes um endereço local deve ser definido para o soquete usando-se o comando: bind(2), quando este não é o caso, a camada do soquete automáticamente atribuirá uma porta local ao primeiro requisito do usuário.
Todas as operações de recepção retornam apenas um pacote. Quando o pacote é menor do que o buffer informado, apenas a quantidade referente aos dados é retornada. Quando o pacote é maior o mesmo é truncado e o indicador MSG_TRUNC é ativado.
Opções IP podem ser enviadas ou recebidas usando as opções do soquete descritas no ip(7). Elas só são processadas pelo Linux quando a sysctl apropriada está habilitada (mas ainda é passada para o usuário mesmo quando desativada). veja no ip(7).
Quando o indicador MSG_DONTROUTE está ativo, o envio do endereço de destino deve referir-se ao endereço da interface local e o pacote só é enviado para esta interface.
O UDP fragmenta um pacote quando seu tamanho total excede a MTU (Maximum Transmission Unit) da interface. Uma alternativa mais amigável é usar a deteção da MTU como descrita na seção IP_PMTU_DISCOVER do ip(7).
FORMATO DO ENDEREÇO
O UDP usa o formato de endereço sockaddr_in do IPv4 descrito no ip(7).
TRATAMENTO DE ERROS
Todos os erros fatais serão passados para o usuário como um erro retornado mesmo quando o soquete não está conectado. Esta característica difere de outras implementações de soquete BSD que não passam quaisquer erros a menos que o soquete esteja conectado. Esta característica no Linux está de acordo com a RFC1122.
Para compatibilidade é possível definir a opção SOL_SOCKET SO_BSDCOMPAT para só receber erros remotos quando o soquete estiver conectado (exceto para EPROTO e EMSGSIZE). É melhor corrigir o código para manipular os erros adequadamente do que habilitar esta opção. Os erros gerados localmente sempre serão passados.
Quando a opção IP_RECVERR está habilitada todos os erros são armazenados na fila de erros do soquete e podem ser recebidos pelo recvmsg(2) com o indicador MSG_ERRQUEUE ativado.
ERROS
VERSÕES
IP_RECVERR é uma nova característica do Linux 2.2
CRÉDITOS
Esta página de manual foi escrita por Andi Kleen.
VEJA TAMBÉM
TRADUZIDO POR LDP-BR em 21/08/2000.
bio Henrique F. Silva <fabiohfs> (Tradução)
André L. Fassone Canova <lonelywolf> (revisão)