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

arrow_back Aula 14 - Protocolo UDP

Como uma aplicação utiliza a camada de transporte

Você já sabe que os programas utilizam um protocolo de transporte para transmitirem suas informações. A forma exata que o seu programa terá depende da linguagem de programação que você estiver utilizando e da API de rede que você vai utilizar. Você pode usar sockets, RPC, RMI, entre outras abordagens. Não se preocupe com o que esses nomes significam nesse momento. O que importa é que existe várias formas de fazer um programa transmitir informações pela rede.

Nesta seção, não pretendemos de modo algum lhe ensinar a programar em rede, queremos apenas lhe dar uma noção de como a camada de transporte é utilizada pelos programas. Para isso, vamos utilizar uma linguagem bem simples, com nomes de funções fictícios, para exemplificar as funções que um programa utilizaria. São essas funções que fazem a comunicação do programa com a camada de transporte.

Programa TCP cliente

Imagine um programa cliente que utiliza TCP para transmitir dados para um servidor, conforme mostrado na Figura 3. Naturalmente, o servidor também utiliza TCP. Inicialmente, o cliente estabelece uma conexão com o servidor utilizando a função Conectar. Depois o programa transmite dados para o servidor usando a função Enviar_dados. Essa função recebe como parâmetros a conexão por onde enviar os dados, e os dados a serem transmitidos.

Normalmente, após transmitir Dados o cliente deve receber algum dado enviado como resposta aos dados transmitidos. Isso é feito com a função Receber_dados. Essa função recebe como parâmetro a conexão de onde ler os dados e um buffer para onde os dados recebidos devem ser copiados. Apesar de só aparecer uma chamada para cada uma das funções Enviar_dados e Receber_dados, tipicamente um programa chama essas funções diversas vezes.

A função Enviar_dados passa os dados que a aplicação deseja transmitir para a camada de transporte TCP, mas lembre-se que nada garante que para cada chamada a essa função será gerado exatamente um pacote TCP (veja segmentação e blocagem).

A função Receber_dados 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.

Quando o programa não desejar mais transmitir (nem receber) dados, ele solicita o fechamento da conexão.

Figura 3 - Exemplo de programa cliente usando TCP

Para listar as conexões estabelecidas e qual programa está usando cada conexão na sua máquina Linux, digite:

Cada letra no comando é chamada um flag e tem o seguinte significado:

  • t: listar apenas informações a respeito de conexões TCP (as informações sobre comunicações usando UDP, por exemplo, não seriam mostradas).
  • n: mostrar todas as informações, como números mesmo, sem tentar traduzir para o nome equivalente (exemplo: endereços IP e números de porta).
  • p: mostrar o nome do processo (programa) que está usando a conexão.

Versão 5.3 - Todos os Direitos reservados