# Camada de transporte

A camada de transporte, Modelo TCP/IP, é a camada responsável pela transferência de dados entre duas máquinas, independente da aplicação usada e do tipo, topologia ou configuração das redes físicas existentes entre elas. A camada de transporte reúne protocolos de transporte end-to-end entre máquinas, isto é, uma entidade (hardware/software) que utilize os protocolos desta camada só se comunica com a sua entidade destino, sem comunicação com máquinas intermediárias na rede, como pode ocorrer com as camadas inferiores. Dois dos principais protocolos desta camada são o UDP e o TCP.
A camada de transporte oferece para o nível de aplicação um conjunto de funções e procedimentos para acesso ao sistema de comunicação de modo a permitir a criação e a utilização de aplicações de forma independente da implementação da rede. As interfaces dos sistemas operativos, como socket ou TLI (ambiente Unix) e Winsock (ambiente Windows) fornecem um conjunto de funções-padrão para permitir tal acesso.
A camada de transporte fica entre as camadas de nível de aplicação (camadas 5 a 7) e as de nível físico (camadas de 1 a 3). As camadas de 1 a 3 estão preocupadas com a maneira com que os dados serão transmitidos pela rede. Já as camadas de 5 a 7 estão preocupadas com os dados contidos nos pacotes de dados, enviando ou entregando para a aplicação responsável por eles. A camada 4, Transporte, faz a ligação entre esses dois grupos.
A transferência de dados pode ser realizada usando o serviço com conexão como com o serviço sem conexão (datagrama). Os protocolos desta camada podem ou não oferecer confiabilidade, garantia de entrega, controle de fluxo, entre outros.

## Serviços para as camadas superiores

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.
Existem dois tipos de serviços de transporte, orientado a conexões e não orientado a conexões, ambos os serviços 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.
Como citado anteriormente, os serviços fornecidos pela camada de transporte podem ser orientados ou não orientados a conexão dependendo do protocolo utilizado, se o protocolo utilizado for TCP será uma rede orientada a conexão e se for UDP não será uma rede orientada a conexão. Os principais fatores de cada protocolo são:
* TCP: É um protocolo confiável pois faz controle de fluxo a fim de evitar congestionamentos na transmissão dos dados, refaz a transmissão de datagramas falhos e faz a ordenação dos pacotes que foram transmitidos desordenadamente ao destino. Ou seja, este protocolo garante que todos os dados transmitidos cheguem corretamente ao receptor;
* UDP: É um protocolo não confiável pois diferentemente do TCP ele não faz nenhum tipo de controle, não controla fluxo, não faz o reenvio de segmentos que falharam na transmissão, também não realiza a ordenação de pacotes que chegaram ao destino desordenados e não retorna a confirmação de que os dados foram entregues. Ou seja, o UDP não garante que os dados serão entregues de forma correta ao destino.

## Questões de desempenho

A camada de transporte junto com a camada de rede e de enlace são responsável por um fator fundamental nas Redes de computadores, o desempenho. Porém pouco sabemos sobre ele, pois a maior parte das teorias que possuímos ainda não é aplicável praticamente. Por esses fatores, a análise de desempenho se torna mais uma arte do que uma ciência.
Redes de computadores possuem interações, e sempre quando há um grande número de usuários conectados a elas podem ocorrer as chamadas interações complexas, as principais responsáveis pela depreciação do desempenho. A melhor forma de se aprender a analisar o desempenho de uma rede, é através da observação de casos em cenários reais e o conhecimento de alguns fatores que, empiricamente, sabemos que fazem total diferença.