Provided by: manpages-pt_20040726-4_all bug

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)