Redes de Computadores - TCP SACK
Com o desenvolvimento dos computadores e da internet o fluxo do tráfego de dados na rede foi se tornando cada vez maior, e só os meios físicos não dão segurança necessária para termos a certeza da integridade destes dados transmitidos. Com o objetivo de garantir o transporte confiável de dados e a obtenção de um único protocolo de propósito geral foi criado o protocolo TCP.
O protocolo TCP visa principalmente oferecer um serviço confiável para a transferência de dados na camada de transporte. Este protocolo pode suportar o fluxo de dados nas duas direções, facilitando a comunicação entre remetente e o receptor. Possui também uma série de conceitos fundamentais, tais como: confirmação de recebimento (ACK), controle de congestionamento, controle de fluxo, entre outros.
O protocolo TCP é o mais complexo, completo e seguro, pois o receptor envia uma confirmação de recebimento dos pacotes ao emissor, diferente do protocolo UDP, que simplesmente descarta o pacote corrompido, e ignora a falha na mensagem. O UDP é muito usado no streaming de vídeo e voz, e o TCP nas várias outras aplicações, como páginas web, webmails e etc...
Há vários modos e propostas para o controle de congestionamento usando o protocolo TCP. Em muitas dessas implementações, o transmissor só percebe que perdeu um pacote na transmissão quando o temporizador expirar, ou receber um ACK duplicado. No protocolo padrão pode haver um grande desperdício de tempo, e em alguns casos é necessário reenviar todos os pacotes a partir daquele que foi detectado como perdido. Essa solução acaba aumentando o tráfego na rede, podendo gerar ainda mais congestionamento.
Uma melhor solução para este problema é o uso do reconhecimento seletivo (selective acknowledgement – SACK). Ele foi detalhado na RFC2018, no ano de 1996. No cabeçalho TPC há um campo “options”, e é nele onde são inseridas as informação sobre o uso do SACK.
A figura ao lado demonstra como o receptor informa ao transmissor quais são os