udp

UDP(7)                     Manual do Programador Linux                    UDP(7)



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.
       [u00E1]bio Henrique F. Silva <fabiohfs@mail.com> (Tradução) André L.
       Fassone Canova <lonelywolf@blv.com.br> (revisão)



Página de Manual Linux             02/10/1998                             UDP(7)