Noções básicas de rede
11. Tarefa da camada de transporte
11.4. Protocolo UDP
Outro protocolo que implementa algumas funções da camada de transporte é o protocolo UDP. Contudo, neste caso é muito mais simples, uma vez que o protocolo não implementa qualquer mecanismo para garantir a fiabilidade da entrega de dados ou o controlo do fluxo.
O protocolo UDP é um protocolo simples sem ligação e a sua maior vantagem é a baixa sobrecarga de dados de controlo adicionados durante o processo de encapsulamento. O UDP adiciona apenas 8 bytes de dados de controlo no datagrama. O cabeçalho de um datagrama UDP tem este aspeto:
BIT (0) |
BIT (15) BIT (16) |
BIT (31) |
Porto de origem (16) |
Porto de destino (16) |
|
Comprimento (16) |
Checksum (16) |
|
Comprimento da camada de aplicação (comprimento variável) |
· Porto de origem - especifica o porto de aplicação a partir da qual os dados devem ser enviados.
· Porto de destino - especifica o porto de aplicação para o qual os dados são enviados.
· Comprimento - campo de 16 bits especificando o comprimento de todo o datagrama UDP
· Checksum - um campo de 16 bits utilizado para validar os dados que estão a ser enviados.
UDP sem ligação significa que o anfitrião de origem não envia qualquer informação para estabelecer uma ligação com o anfitrião de destino antes do início do processo de comunicação. A regra geral é que se um dispositivo de origem quiser iniciar uma transferência, quer enviar os dados que acabou de completar sem acordo prévio.
Se o compararmos com a comunicação interpessoal, no caso do protocolo TCP seria algo parecido: Ei Tom, concentra-te porque estou prestes a falar contigo e só quando receber esta mensagem é que começará uma conversa normal, claro que só se Tom responder: OK, vou começar a ouvir. No caso da UDP, não notificou o Tom que eu estava prestes a começar a comunicar algo importante para ele, eu apenas comecei a conversa.
As aplicações ou serviços que utilizam este protocolo de transporte incluem DNS, DHCP, telefonia VoIP e streaming de vídeo.
Porquê estes? Bem, a resposta é simples, estas aplicações valorizam a velocidade sobre a fiabilidade da comunicação, ou melhor, a necessidade de receber todos os dados que estão a ser transmitidos. Imagine uma situação em que estamos a ver uma transmissão de vídeo ou a jogar um jogo com amigos, como o CS. É difícil competir no jogo ou assistir a qualquer coisa quando os pacotes chegam atrasados.
Alguém pode perguntar: mas porquê o atraso? Bem, os segmentos TCP, por exemplo, são muito maiores do que os datagramas UDP, e o TCP tem de reconhecer os dados entregues, pelo que são enviados através da rede em grandes volumes, mais do que em UDP.
Para aplicações que utilizem este protocolo específico, pode ser tolerado, que ocasionalmente os pacotes podem ser perdidos ou corrompidos. Para os serviços DNS, se um datagrama for perdido, a consulta é simplesmente reenviada para o servidor DNS e não seria uma tragédia se o datagrama não chegasse durante a sessão, uma vez que as mensagens podem sempre ser repetidas. Para aplicações que utilizam o protocolo TCP, a perda ou confusão já não é aceitável. Os datagramas são recebidos pela ordem em que são recebidos, e se existirem múltiplos datagramas, é da responsabilidade da aplicação específica assegurar que sejam corretamente montados.