Curso Livre de Redes de Computadores I/Caderno 8: A Camada de Transporte

Fonte: Wikiversidade

Camada de Transporte[editar | editar código-fonte]

A camada de transporte fornece serviços para a camada superior (aplicação) e representa o centro da hierarquia de protocolos. Junto com a camada de rede, a camada de transporte realiza o transporte de dados de um processo da máquina transmissora para a máquina receptora de maneira confiável, independente da situação da rede física.[1]

Serviços para as camadas superiores[editar | editar código-fonte]

A camada de transporte oferece serviços às camadas superiores, geralmente para a camada de aplicação, usando os serviços das camadas inferiores. Acessada por um Endereço de transporte, a entidade de transporte é responsável pelo trabalho, enviando as unidades de transporte/segmentos para a outra camada de transporte da máquina receptora.

A entidade de transporte são o hardware ou software utilizados pela camada de transporte e podem ser encontrados no núcleo do sistema operacional juntamente a bibliotecas associadas com a aplicações de redes ou então em um dispositivo físico como uma placa de rede.

O serviço fornecido pela camada de transporte, assim como os serviços da camada de rede podem ser tanto orientados a conexões ou não isso vai depender do protocolo de transporte adotado, como por exemplo os protocolos TCP (Transmission Control Protocol) e UDP (User Datagram Protocol) que são os mais utilizados.

  • TCP: Redes orientadas a conexão.
  • UPD: Redes não orientadas a conexão.

Ambos os serviços da camada de transporte tem muitas semelhanças com os serviços de rede. A principal diferença entre eles está na área onde atuam. A camada de rede atua principalmente nos roteadores, já a camada de transporte atua inteiramente nas máquinas dos usuários.[1]

Questões de desempenho[editar | editar código-fonte]

O desempenho é fundamental nas redes de computadores, a todo momento milhares de entidades estão gerando tráfego de dados resultando em interações complexas, e como é de se esperar, muitas interações complexas geram problemas de desempenho. Fato é que a análise de desempenho de uma rede está longe de ser exata, isso porque tem muitas coisas que acontecem que ainda não se sabe explicar, tornando-a mais uma arte do que uma ciência.[1]

Esse tópico não é exclusivo da camada de transporte, mas somente é abordado aqui pois precisamos considerar além dela a camada de enlace e de rede. Existe muita pouca teoria nessa área e desse pouco é aplicável ainda uma menor parte, nos forçando a considerar algumas regras práticas gerados a partir da experimentação e aplicá-los em cenários reais.[1]

Protocolos TCP e UDP[1][editar | editar código-fonte]

Protocolo TCP.[1][editar | editar código-fonte]

O protocolo TCP foi desenvolvido para ser utilizado em redes interligadas não confiáveis, para garantir que o fluxo de bytes em uma rede fim a fim seja entregue corretamente e ao destinatário. O mesmo foi projetado para se ajustar de acordo com as particularidades da rede e ser bastante rigoroso mediante a falhas que podem vir a ocorrer.

O TCP também possui as responsabilidades de fazer o controle de fluxo para garantir que nenhum congestionamento seja causado na transmissão dos dados, fazer o reenvio de datagramas que por algum motivo não foram entregues, definir o tempo de espera para o reenvio de pacotes falhos e também irá fazer a ordenação dos pacotes caso cheguem fora de ordem até o destino. Ou seja, o protocolo TCP é responsável por fazer uma transmissão confiável de dados em redes orientadas a conexão.

Modelo de serviço.[1][editar | editar código-fonte]

No protocolo TCP, o transmissor e receptor formam soquetes em suas extremidades, cada soquete possui um número que se constitui do endereço de IP e em uma porta (número de 16 bits local do host). Para que o TCP funcione é necessário que o soquete da máquina transmissora realize uma conexão com o soquete da máquina receptora. Em um soquete é possível ocorrer múltiplas conexões ao mesmo tempo e são identificadas por ambas as extremidades exclusivamente por meio de identificadores (soquete1 e soquete2). Comumente os números de portas que variam de 1 até 1024 (portas conhecidas) são utilizadas por serviços padrões, normalmente inicializados por um usuário privilegiado do sistema, como o root em sistemas UNIX como por exemplo no sistema operacional Linux.

Algumas portas padronizadas são:  

  • Porta 20,21: Utilizada pelo protocolo FTP para transferência de arquivos;
  • Porta 25: Utilizada pelo protocolo SMTP para serviços de envio de e-mail;
  • Porta 631: Utilizado pelo protocolo IPP para compartilhamento de dispositivos de impressão;

Portas acima de 1.024 até 49.151 podem ser registradas por meio de solicitação a organização controladora, a IANA (Internet Assigned Numbers Authority) para que então as portas possam ser utilizadas por usuários com privilégios, porém vale ressaltar que as aplicações podem escolher as portas que irão ser utilizadas.

No modelo TCP é o software quem decide qual será o tamanho do TCP, portanto ele pode fragmentar os seguimentos podendo assim gerar tanto segmentos pequenos quanto segmentos grandes, no entanto de qualquer forma será entregue ao final da transmissão será o conjunto total de bytes. Por exemplo, se 2048 bytes forem enviados em 4 segmentos de 512 bytes, no final da transmissão serão recebidos os 2048 bytes de qualquer maneira, portanto seria equivalente a enviar um único segmento constituído de 2048 bytes. O tamanho do segmento é limitado devido a duas razões, cada segmento não pode ultrapassar a carga útil do endereço de IP (65.515 bytes), e também não pode exceder o MTU (Maximum Transfer Unit), cada segmento deve possuir um tamanho apropriado com a unidade máxima de transferência (MTU) tanto do transmissor quanto do receptor.

Protocolo UPD[1][editar | editar código-fonte]

O protocolo UDP é o protocolo não orientado a conexões, o UDP não realiza uma conexão antes de enviar os dados, ele apenas encapsula e faz o envio dos datagramas de IP.

O UDP envia segmentos por meio de um cabeçalho que conterá as portas do transmissor e do receptor juntamente com o tamanho do segmento e também uma verificação (checksum). As portas podem ser imaginadas como se fossem caixas de recebimento do correio, então uma maneira de se pensar é como se uma porta fosse o remetente (faz o envio) e a outra o destinatário (faz o recebimento), portanto, se as portas não forem informadas, a camada de transporte não saberá onde entregar o pacote. O checksum é utilizado como forma de confiabilidade extra, ele é utilizado para fazer a verificação de erros nos cabeçalhos e nos dados transmitidos, caso não seja utilizado será preenchido por zeros.

O tamanho do UDP deverá estar entre 8 bytes e 65.515 bytes que é o tamanho mínimo em um número que conterá em 16 bits e o limite máximo de tamanhos dos pacotes de IP.  

É de suma importância destacar que o UDP não faz nenhum tipo de controle, não controla fluxo de transmissão e nem mesmo faz a retransmissão de um segmento que tenha sido enviado de maneira incorreta ou então a confirmação de que os dados foram entregues. Portanto, o protocolo UDP diferentemente do protocolo TCP é um protocolo não confiável pois não há garantia de que os dados serão entregues ao destinatário, ou que chegarão de maneira ordenada.

Comunicação ponta a ponta[editar | editar código-fonte]

A comunicação ponta a ponta, funciona para garantir que os dados que estão sendo enviados de um cliente ao servidor, sejam os mesmo dados esperados, por exemplo, quando um cliente DHCP deseja se comunicar com o servidor DHCP remoto, ele sempre solicita na porta número 67. Quando um cliente DNS deseja se comunicar com o servidor DNS remoto, ele sempre solicita na porta número 53 (UDP).

  1. 1,0 1,1 1,2 1,3 1,4 1,5 1,6 1,7 TANENBAUM, A. WETHERALL, D. Redes de Computadores. 5 ed.