O protocolo UDP - Seu Curso
Escrito por Bruno Antunes
O protocolo UDP como já foi dito em outro post, é um protocolo que não necessita de uma conexão estabelecida para poder enviar os dados, deixando-o mais simples em relação ao TCP. Por este motivo, veremos primeiramente o protocolo UDP.
O UDP foi descrito na Request For Comments 768(RFC, ou em português Solicitação de Comentários), ele permite que a aplicação envie dados encapsulados em um pacote IPv4 ou IPv6.
Pelo fato dele não ser orientado a conexão, sua arquitetura é simples, contendo informações como porta do remetente, porta do destinatário, além de poder verificar se nenhum dos bits do pacote foram alterados. Para isto, há a necessidade de poder fazer uma espécie de cálculo para se ter certeza que o pacote durante a transmissão não sofreu nenhum tipo de alteração, como por exemplo interferência.
É necessário ter em mente que o UDP que trabalha na camada transporte, ou seja, toda a informação produzida por ele, será fixada sobre as informações que serão geradas pela camada de redes onde é tratado o protocolo IP.
Abaixo uma figura que representa um pacote UDP
Arquitetura Protocolo UDP
Neste campo é armazenado qual a porta de origem do pacote o que permite receber uma resposta, como uma consuilta DNS. Este campo possui 16 bits de tamanho.
Neste campo fica armazenado qual a porta o pacote será enviado assim que for entregue à máquina especifica. Quando for entregue, ele será tratado pela aplicação que estará funcionando na mesma. Este campo possui um tamanho de 16 bits.
Este campo armazena o tamanho do pacote na íntegra, ou seja, tendo no mínimo 8 bytes, e como máximo podendo variar de acordo onde for aplicado sobre o protocolo IPv4 ou IPv6.
Chechsum
É neste campo que a máquina que receberá o pacote checa se ele sofreu ou não alterações. Essa checagem é feita através de alguns cálculos que pretendo escrever em outro post, antes e depois do envio, que envolvem variáveis como cabeçalho do IP e UDP e o payload do pacote. Pequenas alterações como mudar um simples bit pode modificar o checksum inteiro, o que é comum acontecer quando se tem ruído no meio de transmissão.
Pode ocorrer de o campo checksum receber o valor zero, neste caso é explicito que não tem importância o pacote chegar danificado, o que importa é de no mínimo chegar algum resquício do pacote original, esta opção é adotada, por exemplo, quando há transmissão de voz digitalizada. Neste caso, o checksum nem chega a ser calculado, apenas é retirado o payload e enviado para a porta específica.
Em outros casos é importante que o destinatário envie uma resposta e que ambas as mensagens trocadas não sejam alteradas por ruído, um exemplo é uma requisição DNS que ao ser respondida por um servidor DNS deve retornar o IP exato. Nesta condição é essencial que os dois pacotes, requisição e respostas, cheguem integros ao seu destinatário.
Este campo armazena o payload, ou carga útil, de cada pacote, que será enviado, todas os demais campos do protocolo, bem como protocolos de outras camadas são utilizados para enviá-lo, e existem para grosso modo "poder guiar" o payload ao destinatário.