Cursos / Redes de Computadores / Redes de Computadores I / Aula

arrow_back Aula 14 - Protocolo UDP

Programa UDP cliente

Imagine agora um programa cliente que utiliza UDP para transmitir dados para um servidor, conforme mostrado na Figura 5. Naturalmente, o servidor também utiliza UDP.

Observe que como o UDP não utiliza o conceito de conexão o cliente já envia os dados, sem estabelecer nenhuma comunicação prévia com o servidor. Ou seja, o cliente não sabe nem mesmo se a máquina para quem ele deseja transmitir está ligada, nem se o programa servidor está sendo executado!

Diferente da função Enviar_Dados do TCP, que identificava a máquina de destino pelo parâmetro (variável) conexão, a função para transmitir dados usando UDP recebe como parâmetros o IP e a porta de destino. O mesmo se aplica a função Receber_Dados.

Portanto, um programa UDP consiste, basicamente, de chamadas as funções para enviar os dados e para ler os pacotes que chegam pela rede.

A função Enviar_dados passa os dados que a aplicação deseja transmitir para a camada de transporte UDP, gerando exatamente um pacote UDP para cada chamada dessa função.

Receber_dados no UDP copia o conteúdo da parte de dados do pacote de transporte recebido (que são os dados transmitidos pela aplicação remota) para o buffer informado como parâmetro. Depois a aplicação iria analisar o buffer para interpretar a informação que foi recebida.

Figura 5 - Exemplo de programa cliente usando UDP

Por utilizarem conexão, os pacotes transmitidos por clientes TCP usam sempre a mesma porta de origem. Isso é fundamental para que o servidor possa identificar a aplicação cliente com quem está se comunicando. Se o UDP não usa conexão, será que cada pacote UDP transmitido pelo cliente sai com uma porta de origem diferente?

Felizmente não! O sistema operacional garante que todos os pacotes transmitidos por sua aplicação cliente para uma dada aplicação remota (em outra máquina) saiam sempre com a mesma porta de origem. Isso permite que o servidor identifique o cliente, mesmo sem utilizar conexão! Para isso, na primeira vez que seu programa transmite um pacote para um dado IP e porta, o sistema operacional aloca uma porta para você. Todos os demais pacotes que sua aplicação transmitir para esse dado IP e porta sairão usando como porta de origem a porta que foi alocada.

Versão 5.3 - Todos os Direitos reservados