O Three-Way Handshake (aperto de mão de três vias) é o processo de sincronização em três etapas utilizado pelo protocolo TCP para estabelecer uma conexão confiável entre um cliente e um servidor antes da transmissão de qualquer dado. Regido atualmente pela RFC 9293, esse mecanismo garante que ambas as partes alinhem seus Números de Sequência Iniciais (ISN), aloquem recursos na memória e negociem parâmetros vitais de rede através da troca sequencial de pacotes com as flags SYN (Synchronize) e ACK (Acknowledge).
Principais Aprendizados
- Sincronização bidirecional: O handshake garante que cliente e servidor concordem com os números de sequência, prevenindo a perda ou duplicação de pacotes.
- Negociação crítica: Parâmetros de performance como Maximum Segment Size (MSS) e Window Scaling só podem ser definidos durante os pacotes SYN e SYN-ACK.
- Vetor de ataque: O processo é frequentemente abusado em ataques DDoS (SYN Flood), exigindo defesas modernas como a implementação de SYN Cookies.
Anatomia do Three-Way Handshake Passo a Passo
A comunicação na camada de transporte exige garantias de entrega e ordenação. Para que isso ocorra, o estabelecimento da sessão TCP segue uma coreografia matemática estrita, consumindo exatamente 1,5 RTT (Round-Trip Time) de latência.

Passo 1: O Pacote SYN (Sincronizar)
A conexão é iniciada pelo cliente, que envia um segmento TCP com a flag SYN ativada para o servidor. O objetivo principal deste pacote é informar ao servidor o Initial Sequence Number (ISN) do cliente. O ISN é um número gerado aleatoriamente (por questões de segurança contra sequestro de sessão) que servirá como base para rastrear a ordem dos bytes que o cliente enviará futuramente.
Passo 2: O Pacote SYN-ACK (Sincronizar e Reconhecer)
Ao receber o pacote SYN, o servidor aloca recursos em sua memória, criando um Transmission Control Block (TCB). Em resposta, ele envia um segmento com duas flags ativadas: SYN e ACK.
- A flag ACK reconhece o recebimento do pacote do cliente (o número de reconhecimento é o ISN do cliente + 1).
- A flag SYN transmite o próprio ISN gerado aleatoriamente pelo servidor.
Passo 3: O Pacote ACK (Reconhecer)
Finalmente, o cliente recebe o SYN-ACK, valida a resposta e envia um último pacote apenas com a flag ACK ativada. Este pacote reconhece o ISN do servidor (adicionando +1 ao valor). A partir do momento em que o servidor recebe este último ACK, a conexão está no estado ESTABLISHED e a transferência do payload da aplicação (como uma requisição HTTP) pode começar.
A Importância dos 40 Bytes Ocultos: Negociação de Parâmetros
Um mito comum na área de redes é a crença de que o handshake serve unicamente para "abrir a porta" de comunicação. Na realidade, o handshake é o único momento em que parâmetros críticos de performance são definidos. O cabeçalho TCP padrão possui 20 bytes, deixando um limite estrito de apenas 40 bytes para opções extras.
Para entender a fundo a anatomia de um segmento TCP, é vital notar que opções como Maximum Segment Size (MSS) (que define o tamanho máximo de dados por pacote) e Window Scaling (que permite janelas de recepção maiores que 64KB em conexões de banda larga) devem obrigatoriamente ser enviadas e aceitas nos pacotes SYN e SYN-ACK. Se omitidas nesta fase, não poderão ser ativadas no meio da conexão em andamento.
O Gargalo da Latência e o TCP Fast Open (TFO)
Em arquiteturas modernas de microsserviços e aplicações de tempo real, o custo fixo de 1,5 RTT do handshake tornou-se um gargalo. Em conexões seguras, isso se soma ao handshake do protocolo TLS, podendo atrasar a entrega do primeiro byte em até 3,5 RTTs.
Para mitigar esse atraso, a IETF publicou a RFC 7413, que introduz o TCP Fast Open (TFO). O TFO permite que clientes que já se conectaram anteriormente a um servidor enviem dados da aplicação (payload) anexados logo no pacote SYN inicial, utilizando um cookie criptográfico. Isso elimina 1 RTT inteiro de latência em conexões subsequentes.

Apesar de brilhante na teoria, a adoção prática do TFO enfrenta o desafio da ossificação de protocolo. Na prática, o consenso da área aponta que muitos firewalls corporativos, NATs e roteadores antigos descartam sumariamente pacotes SYN que contêm dados, obrigando a conexão a recuar para o handshake tradicional.
SYN Flood: Quando o Handshake Vira uma Arma DDoS
Além dos desafios de performance, o Three-Way Handshake continua sendo um dos vetores de ataque mais explorados na internet. Em um ataque de SYN Flood, o invasor envia milhares de solicitações SYN forjadas (spoofed), mas nunca responde com o ACK final. Isso faz com que o servidor esgote sua tabela de conexões pendentes (TCB), paralisando o atendimento a usuários legítimos.
Dados de inteligência de ameaças do 4º trimestre de 2025 revelam que ataques na camada de rede (Layer 3/4) representaram 78% de todos os ataques DDoS mitigados globalmente. A frequência atingiu uma média de 3.925 ataques por hora focados em abusar do handshake e protocolos similares, com campanhas hipervolumétricas recentes atingindo o recorde de 31,4 Tbps em apenas 35 segundos.
Para infraestruturas críticas que dependem de internet redundante e alta disponibilidade, a defesa padrão e unânime em sistemas operacionais modernos é a ativação de SYN Cookies. Com esta técnica, o servidor não aloca memória ao receber o primeiro SYN; em vez disso, ele codifica o estado da conexão dentro do próprio ISN enviado no pacote SYN-ACK. A memória só é consumida se o cliente provar ser legítimo ao retornar o ACK correto.
Perguntas Frequentes
1. O que acontece se o pacote ACK final for perdido na rede?
Se o pacote ACK final do cliente for descartado por congestionamento, o servidor presumirá que o pacote SYN-ACK anterior não chegou ao destino. O servidor então retransmitirá o SYN-ACK após um tempo limite (timeout) e aguardará novamente o ACK do cliente para completar a conexão.
2. É possível enviar dados da aplicação antes do handshake terminar?
Tradicionalmente, não. Porém, com a extensão TCP Fast Open (TFO), é possível enviar o payload (como uma requisição HTTP) junto com o pacote SYN inicial, desde que o cliente já possua um cookie criptográfico válido obtido em uma conexão anterior com aquele mesmo servidor.
3. O que são SYN Cookies e como eles protegem o servidor?
SYN Cookies são uma técnica de defesa contra ataques DDoS do tipo SYN Flood. Em vez de o servidor alocar memória imediatamente para cada pacote SYN recebido, ele gera um Número de Sequência Inicial (ISN) criptografado que contém os dados essenciais da conexão. A memória só é alocada quando o cliente retorna o pacote ACK válido contendo esse número, validando a legitimidade da requisição.
0 Comentários