A camada de transporte tem muita responsabilidade, pois precisa manter a integridade das informações, por isso, deve haver um controle de fluxo para dar aos usuários uma confiabilidade no transporte das informações ponto a ponto. Para que essa comunicação seja confiável é preciso que haja uma comunicação orientada a conexão e os protocolos envolvidos devem assegurar-se de:
- Os seguimentos transmitidos são confirmados quando recebidos (acknowledged).
- Qualquer segmento não confirmado é retransmitidos.
- Os segmentos são reconstruídos em sua sequencia original.
- Uma gerencia do fluxo de dados é mantida para evitar congestionamento, sobrecarga e perda de dados.
A imagem abaixo ilustra esse mecanismo:
Operação de controle de Fluxo
Depois de enviar a solicitação para iniciar a comunicação e receber (se possível) uma confirmação positiva, as máquinas verificam a conexão periodicamente para ter a segurança de que as informações estão sendo enviadas e recebidas.
Pode haver congestionamento de dados devido a heterogeneidade das máquinas (uma máquina potente pode gerar dados mais rápido do que a infra-estrutura da rede pode transmitir ou a rede pode transmitir mais rápido do que máquinas lentas podem processar) ou porque vários computadores querem acessar um mesmo destino, fazendo com que o caminho para esse destino fique congestionado (como uma estrada cheia de carros causa congestionamento do trânsito).
Quando uma máquina recebe mais dados do que pode processar ela enviar o excedente para uma memória chamada buffer, esse processo é conhecido como bufferização. Mas esse processo ocorre apenas se houver uma pause no recebimento dados, se a transferência for ininterrupta a memória de buffer se esgotará e qualquer dado que estiver chegando após o esgotamento será descartado, causando perda das informações.
Graças a camada de transporte evitamos que problemas como esse aconteçam, quando a memória buffer da máquina está cheia e não está pronta para receber, ela manda um sinal que não está pronta (not ready), fazendo com que a máquina que está enviando aguarde e não envie mais dados. Após o receptor ter processado os dados da memória buffer ele manda um sinal de transmissão (ready) para que a máquina que está enviando volte a transmissão da onde tinha parado.
Como dissemos para a comunicação ser confiável é necessário que haja uma confirmação de que os seguimentos (datagramas) enviados foram recebidos. Mas se formos aguardar a confirmação de cada datagrama enviado haveria um atraso gigantesco da chegada dessa informação, resultando numa transmissão de dados baixíssima. Portanto, uma vez que haja tempo, o transmissor envia segmentos antes de finalizar o processamento de cada confirmação.
A quantidade de dados que o transmissor pode enviar antes de receber a confirmação é chamada de Janela (window). O processo chamado Windowing controla a quantidade de informação transferida antes que haja a confirmação.
Exemplo do processo Windowing: Se a janela tiver tamanho 1, a máquina transmissora espera a confirmação de cada segmento para poder enviar. Se o tamanho da janela for 2, a máquina transmissora pode enviar 2 segmentos antes de receber uma confirmação, e assim sucessivamente.
Para finalizar o tópico de camada de transporte, não podemos esquecer da Confirmação (Acknowledgement), é a técnica que implica em enviar uma mensagem de confirmação da máquina destino para a máquina origem, caso o recebimentos dos dados tenha sido realizado com sucesso. Podemos comparar com o serviço de correio, assim que o destinatário recebe o produto, ele tem que assinar um protocolo que é enviado ao remetente, garantindo que a correspondência chegou com sucesso!
Nenhum comentário:
Postar um comentário