Provided by:
manpages-pt_20040726-2_all 
NOME
udp - Protocolo UDP do IPv4.
SINÓPSE
#include <sys/socket.h>
#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
Todos os erros documentados pelo socket(7) ou ip(7) podem ser retornado
por um send ou receive em um soquete UDP.
ECONNREFUSED Nenhum receptor foi associado ao endereço de destino. Isto
pode ter sido causado por um pacote enviado anteriormente no soquete.
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
ip(7), socket(7), raw(7).
RFC768 - O protocolo UDP.
RFC1122 - Requesitos da máquina.
RFC1191 - Descrição da deteção do MTU.
TRADUZIDO POR LDP-BR em 21/08/2000.
bio Henrique F. Silva <fabiohfs@mail.com> (Tradução) André L. Fassone
Canova <lonelywolf@blv.com.br> (revisão)