segunda-feira, 22 de junho de 2020

Como funciona o Handshake 3-way do protocolo TCP

A pilha de protocolos TCP/IP usa como protocolo de transporte (ver modelo OSI ou DoD TCP/IP) dois  protocolos, a saber, o TCP e o UDP. Basicamente os dois diferem entre si pelo overhead adicionado à comunicação. Mas, esse é um outro assunto. Portanto, vamos nos concentrar apenas no TCP. O TCP é um protocolo orientado à conexão, e por isso, se utiliza de uma técnica chamada de 3-way handshake para fechar comunicação com o host remoto. A figura abaixo ilustra um resumo desta técnica:
TCP 3-Way Handshake (SYN, SYN-ACK,ACK)

Observe que o cliente, host X, envia ao servidor uma solicitação de conexão chamada SYN (sincronização) e espera dele um ACK (reconhecimento) indicando a recepção do datagrama. Chamamos este SYN ou ACK de flag. No momento em que o servidor responde, retorna neste datagrama o flag ACK indicando que recebeu o SYN inicial do cliente, e já aproveita para enviar o SYN dele solicitando o ACK do cliente. Isto se chama handshake em três vias. Observe que quando o cliente recebe o SYN+ACK do servidor, ele responde com ACK o que torna a comunicação à partir daí sempre sincronizada independente do tamanho da janela de dados estabelecida. Para garantir que cada flag recebido seja o correto, ou seja, não tenha sido perdido, o flag é acompanhado por um número e conferido na ponta remota como o número + 1 também ilustrado na figura. Isso justifica em parte o nome do protocolo TCP - Transmission Control Protocol. A outra justificativa veremos depois, que o janelamento (windowing). 

Ergue-se um novo paradigma na internet

A demanda atual de conteúdo na internet envolvendo voz e vídeo por aplicativo, stream de filmes e séries, mineração e sistema de criptomoeda...