Como funciona o three-way handshake do TCP

O three-way handshake do TCP é um processo de três etapas usado para estabelecer uma conexão confiável entre um cliente e um servidor em uma rede. Ele funciona através da troca de três pacotes específicos: o cliente envia um pacote SYN (solicitando conexão), o servidor responde com um SYN-ACK (aceitando a solicitação) e, por fim, o cliente envia um ACK (confirmando o recebimento). Esse mecanismo garante que ambas as partes estejam prontas para transmitir dados e tenham sincronizado seus números de sequência.

Principais Aprendizados

  • O handshake sincroniza os números de sequência iniciais (ISN) entre cliente e servidor antes de qualquer envio de dados.
  • É o mecanismo que garante a entrega confiável, diferenciando o protocolo de alternativas não orientadas a conexão.
  • Foi definido originalmente na década de 1980 e continua sendo a base de quase toda a comunicação web moderna.

O que é o Three-Way Handshake?

Imagine que você está ligando para um amigo. Você diz 'Alô?' (SYN). Seu amigo ouve, responde 'Alô, estou ouvindo, você me ouve?' (SYN-ACK). Você então responde 'Sim, te ouço perfeitamente' (ACK). A partir desse momento, a conversa real pode começar. É exatamente assim que o Transmission Control Protocol (TCP) opera na camada de transporte do modelo OSI.

Segundo a documentação oficial da RFC 793 da IETF, que especificou o protocolo original, o objetivo primário desse aperto de mãos triplo é garantir que ambas as extremidades da comunicação estejam prontas para transferir informações, evitando que pacotes de dados sejam enviados para um destino que não pode recebê-los.

Diagrama do Three-Way Handshake TCP

O Passo a Passo Técnico do Handshake

Para entender profundamente como funciona o three-way handshake do TCP, precisamos olhar para os bastidores, especificamente para as flags (sinalizadores) presentes no cabeçalho do pacote TCP.

Passo 1: SYN (Synchronize)

O processo começa quando o dispositivo cliente deseja iniciar uma conexão com o servidor. O cliente envia um segmento TCP com a flag SYN ativada. Neste pacote, o cliente também envia um Número de Sequência Inicial (ISN) aleatório. Isso serve para dizer ao servidor: 'Quero me conectar a você e minha contagem de pacotes começará no número X'.

Passo 2: SYN-ACK (Synchronize-Acknowledge)

Quando o servidor recebe o pacote SYN, ele precisa confirmar o recebimento e também iniciar sua própria sincronização. Para isso, o servidor responde com um pacote que tem duas flags ativadas: SYN e ACK. O servidor define o número de reconhecimento (Acknowledgment Number) como o número de sequência do cliente mais um (X + 1), e também envia seu próprio Número de Sequência Inicial aleatório (Y).

Passo 3: ACK (Acknowledge)

Finalmente, o cliente recebe o SYN-ACK do servidor. Para concluir o processo, o cliente envia um último pacote com a flag ACK ativada. O número de reconhecimento deste pacote será o número de sequência do servidor mais um (Y + 1). Neste ponto, a conexão está oficialmente estabelecida e a transferência de dados da aplicação pode começar.

Terminal mostrando conexão TCP estabelecida

Por que 3 passos e não 2?

Muitos estudantes de redes se perguntam por que um handshake de duas vias (como um simples 'Olá' e 'Olá de volta') não é suficiente. A resposta está na confiabilidade bidirecional. Como as redes IP podem atrasar, duplicar ou perder pacotes, ambos os lados precisam ter a certeza absoluta de que o outro lado está ativo e sincronizou os números de sequência corretamente.

Se fosse apenas um handshake de duas vias, o servidor poderia aceitar conexões fantasmas de pacotes atrasados na rede, esgotando seus recursos rapidamente (um conceito que, inclusive, é explorado em ataques cibernéticos como o SYN Flood, conforme detalhado em análises de segurança da Cloudflare).

O que acontece depois do Handshake?

Uma vez que o three-way handshake do TCP é concluído, o canal está aberto. É aqui que os protocolos da camada de aplicação (como HTTP, FTP ou SSH) começam a enviar sua carga útil (payload). Ao avaliar TCP vs UDP, fica claro que todo esse trabalho inicial do TCP adiciona uma pequena latência no início da conexão, mas garante que nenhum byte de dado seja perdido ou entregue fora de ordem durante a transmissão.

Perguntas Frequentes

O que significam as siglas SYN e ACK?

SYN significa 'Synchronize' (Sincronizar), usado para iniciar a sincronização de números de sequência. ACK significa 'Acknowledge' (Reconhecer), usado para confirmar o recebimento de pacotes anteriores.

O que é um ataque SYN Flood?

É um ataque de negação de serviço (DDoS) onde o atacante envia milhares de pacotes SYN para um servidor, mas nunca responde com o ACK final. Isso deixa o servidor com múltiplas conexões 'meio abertas', esgotando sua memória e recursos.

Como a conexão TCP é encerrada?

Enquanto a abertura usa um three-way handshake, o encerramento da conexão utiliza um processo de quatro etapas (four-way teardown) usando a flag FIN (Finish), garantindo que ambos os lados terminem a transmissão de dados de forma graciosa.

Postar um comentário

0 Comentários

Contact form