Aula 3 de 4 · 7 min
O aperto de mão TCP e a vida de uma conexão
Como dois computadores concordam em conversar antes de qualquer um enviar dados de fato, como encerram a conversa, e o que um firewall observando no meio realmente vê.
Antes de seu Mac enviar um único byte de um pedido de página web, ele já trocou três mensagens curtas com o servidor. Essa troca, o aperto de mão de três vias do TCP, é o que transforma as promessas de confiabilidade do TCP da aula anterior em uma conexão real e rastreável entre duas máquinas.
Três mensagens antes da primeira palavra
A RFC 9293, a especificação atual do TCP, descreve o processo como uma troca sincronizada: "a sincronização exige que cada lado envie seu próprio número de sequência inicial e receba uma confirmação dele em um reconhecimento do par TCP remoto".
- SYN. O dispositivo que abre a conexão envia um segmento com a flag SYN ativada, carregando um número de sequência inicial.
- SYN-ACK. O outro lado responde com seu próprio SYN, mais um reconhecimento do primeiro número.
- ACK. O primeiro dispositivo reconhece essa resposta. A RFC 9293 observa que "porque os passos 2 e 3 podem ser combinados em uma única mensagem, isso é chamado de aperto de mão de três vias (ou três mensagens)". Uma vez completo, os dois lados contam a conexão como ESTABELECIDA e começam a enviar dados de fato.
O Learning Center da Cloudflare dá uma versão em linguagem simples da mesma ideia, usando um e-mail como exemplo: "primeiro, a origem envia um pacote SYN de 'pedido inicial' para o servidor de destino para começar o diálogo. Depois o servidor de destino envia um pacote SYN-ACK para concordar com o processo. Por fim, a origem envia um pacote ACK ao destino para confirmar o processo, depois do qual o conteúdo da mensagem pode ser enviado".
Encerrando uma conexão de forma limpa
Encerrar é mais deliberado do que abrir. A RFC 9293 explica que "a sequência normal de fechamento do TCP entrega de forma confiável os dados em buffer nas duas direções" antes de a conexão terminar: cada lado envia um segmento FIN assim que não tem mais dados para enviar, o outro lado o reconhece, e só quando as duas direções terminaram é que a conexão se fecha por completo. Um curto período de espera (TIME-WAIT) vem em seguida, para que qualquer pacote perdido e atrasado da conexão antiga não seja confundido com parte de uma nova.
O que um firewall no meio vê
Um firewall com estado, o tipo integrado na maioria dos roteadores e no próprio macOS, não precisa inspecionar cada pacote para tomar uma decisão. A explicação da Cloudflare sobre firewalls coloca assim: ele "guarda informações sobre conexões abertas e usa essas informações para analisar o tráfego de entrada e saída, em vez de inspecionar cada pacote". Na prática, isso significa que ele observa o SYN que abre uma conexão, lembra que esse aplicativo pediu uma resposta, e então silenciosamente permite que o SYN-ACK correspondente volte; uma resposta que não corresponde a nenhum SYN de saída é descartada. É assim também que um firewall consegue distinguir uma resposta normal de uma tentativa de conexão não solicitada chegando do nada, o que é a base do bloqueio de tráfego de entrada indesejado.
Nada nessa troca é criptografado pelo próprio TCP; SYN, SYN-ACK e ACK são visíveis em forma simples para qualquer coisa observando o caminho da rede, incluindo seu roteador Wi-Fi. O que fica escondido ou não depende da camada acima do TCP, como o TLS para um site HTTPS, o que o curso de como a internet funciona aborda separadamente.
Para lembrar
- As conexões TCP abrem com um aperto de mão de três vias: SYN, depois SYN-ACK, depois ACK, segundo a RFC 9293.
- Só depois que o aperto de mão termina é que os dois lados começam a trocar dados de fato.
- Encerrar uma conexão é uma troca em duas direções de segmentos FIN, para que os dados em buffer sejam entregues antes de a conexão terminar.
- Um firewall com estado acompanha quais SYNs saíram, para reconhecer e permitir as respostas correspondentes, e descartar as não solicitadas.
- O próprio aperto de mão não é criptografado; ele é visível para qualquer coisa no caminho da rede.
Teste seus conhecimentos
1. Qual é a ordem correta do aperto de mão de três vias do TCP?
- ACK, SYN, SYN-ACK
- SYN, SYN-ACK, ACK — Certo.
- SYN-ACK, SYN, ACK
- FIN, SYN, ACK
A RFC 9293 descreve o lado que se conecta enviando SYN primeiro, o outro lado respondendo com SYN-ACK, e o lado que se conecta confirmando com ACK.
2. Quando os dados reais da aplicação começam a fluir por uma conexão TCP?
- Antes de o SYN ser enviado
- Só depois que o aperto de mão de três vias termina — Certo.
- Durante o passo do SYN-ACK
- Os dados fluem continuamente, sem aperto de mão
O aperto de mão existe para sincronizar os números de sequência antes que qualquer um dos lados confie o suficiente na conexão para enviar dados de fato.
3. Como um firewall com estado decide permitir um pacote de resposta de entrada?
- Ele permite todos os pacotes de entrada por padrão
- Ele verifica se o pacote corresponde a uma conexão que esse dispositivo abriu, lembrada a partir do SYN de saída anterior — Certo.
- Ele inspeciona o conteúdo do pacote em busca de palavras-chave
- Ele só olha para a porta de destino, nunca para o estado da conexão
A Cloudflare descreve um firewall com estado como um que "guarda informações sobre conexões abertas" para reconhecer respostas legítimas, em vez de inspecionar cada pacote do zero.
4. O próprio aperto de mão TCP é criptografado?
- Sim, sempre
- Não, ele é simples e visível para qualquer coisa no caminho da rede — Certo.
- Só o SYN é criptografado
- Só em conexões HTTPS
O TCP fornece ordenação e confiabilidade, não confidencialidade. A criptografia, quando presente, vem de uma camada acima do TCP, como o TLS.
Praticar com o FireAI
Coloque esta lição em prática no seu próprio Mac.
- Descubra para onde um app envia dados, no Mapa-múndi — Veja exatamente com que empresa e país um app está conversando em silêncio.
- Regras: app, site, domínio, IP ou uma faixa, para sempre ou até reiniciar — Escreva uma regra tão precisa quanto um único endereço ou tão ampla quanto um domínio inteiro.
- Inspeção profunda, sem descriptografar nada — Tenha detalhes reais sobre uma conexão segura sem que o FireAI leia nunca o que tem lá dentro.
Fontes
- RFC 9293: Transmission Control Protocol (TCP)
- Cloudflare Learning: What is TCP/IP?
- Cloudflare Learning: What is a Firewall?
Coloque em prática no seu Mac
Teste todos os recursos grátis por 17 dias, sem cartão.