Lição 3 de 4 · 7 min
O cumprimento TCP e a vida de uma ligação
Como dois computadores combinam falar antes de qualquer um enviar dados reais, como terminam a conversa, e o que um firewall a observar no meio realmente vê.
Antes de o seu Mac enviar um único byte de um pedido de página web, já trocou três mensagens curtas com o servidor. Essa troca, o cumprimento em três vias do TCP, é o que transforma as promessas de fiabilidade do TCP da lição anterior numa ligaçã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 o seu próprio número de sequência inicial e receba uma confirmação dele em reconhecimento do par TCP remoto."
- SYN. O dispositivo que abre a ligação envia um segmento com a marca SYN ativada, transportando um número de sequência inicial.
- SYN-ACK. O outro lado responde com o seu próprio SYN, mais um reconhecimento do primeiro número.
- ACK. O primeiro dispositivo reconhece essa resposta. A RFC 9293 nota que "como os passos 2 e 3 podem ser combinados numa única mensagem, isto é chamado o cumprimento em três vias (ou três mensagens)." Assim que termina, ambos os lados contam a ligação como ESTABELECIDA e começam a enviar dados reais.
O Centro de Aprendizagem 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' ao servidor de destino para iniciar 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, após o qual o conteúdo da mensagem pode ser enviado."
Terminar uma ligação de forma limpa
Fechar é mais deliberado do que abrir. A RFC 9293 explica que "a sequência normal de fecho do TCP entrega de forma fiável os dados em memória temporária nas duas direções" antes de a ligação terminar: cada lado envia um segmento FIN assim que não tem mais dados para enviar, o outro lado reconhece-o, e só depois de ambas as direções terminarem é que a ligação fecha por completo. Segue-se um breve período de espera (TIME-WAIT), para que nenhum pacote perdido e atrasado da ligação antiga possa ser confundido com parte de uma nova.
O que vê um firewall no meio
Um firewall com estado, o tipo incorporado na maioria dos routers e no próprio macOS, não precisa de inspecionar cada pacote para tomar uma decisão. A explicação da Cloudflare sobre firewalls coloca-o assim: "guarda informação sobre ligações abertas e usa essa informação para analisar o tráfego de entrada e de saída, em vez de inspecionar cada pacote." Na prática, isto significa que vigia o SYN que abre uma ligação, lembra-se de que esta app pediu uma resposta, e depois deixa entrar silenciosamente o SYN-ACK correspondente; uma resposta que não corresponde a nenhum SYN de saída é descartada. É também assim que um firewall consegue distinguir uma resposta normal de uma tentativa de ligação não solicitada a chegar do nada, o que é a base do bloqueio de tráfego de entrada indesejado.
Nada nesta troca é encriptado pelo próprio TCP; o SYN, o SYN-ACK e o ACK são visíveis em forma simples para qualquer coisa que observe o percurso de rede, incluindo o seu router Wi-Fi. O que é ou não escondido depende da camada acima do TCP, como o TLS para um site HTTPS, que o curso sobre como a internet funciona aborda separadamente.
A reter
- As ligações TCP abrem com um cumprimento em três vias: SYN, depois SYN-ACK, depois ACK, segundo a RFC 9293.
- Só depois de o cumprimento terminar é que os dois lados começam a trocar dados reais.
- Fechar uma ligação é uma troca em ambos os sentidos de segmentos FIN, para que os dados em memória temporária sejam entregues antes de a ligação terminar.
- Um firewall com estado acompanha que SYNs saíram, para conseguir reconhecer e permitir as respostas correspondentes, e descartar as não solicitadas.
- O próprio cumprimento não está encriptado; é visível para qualquer coisa no percurso de rede.
Teste-se
1. Qual é a ordem correta do cumprimento em 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 liga a enviar primeiro o SYN, o outro lado a responder com SYN-ACK, e o lado que se liga a confirmar com ACK.
2. Quando começam a fluir dados reais da aplicação numa ligação TCP?
- Antes de o SYN ser enviado
- Só depois de o cumprimento em três vias terminar — Certo.
- Durante o passo do SYN-ACK
- Os dados fluem continuamente sem cumprimento
O cumprimento existe para sincronizar números de sequência antes de qualquer um dos lados confiar o suficiente na ligação para enviar dados reais.
3. Como decide um firewall com estado permitir um pacote de resposta recebido?
- Permite todos os pacotes recebidos por defeito
- Verifica se o pacote corresponde a uma ligação que este dispositivo abriu, lembrada do SYN de saída anterior — Certo.
- Inspeciona o conteúdo do pacote à procura de palavras-chave
- Só olha para a porta de destino, nunca para o estado da ligação
A Cloudflare descreve um firewall com estado como um que "guarda informação sobre ligações abertas" para reconhecer respostas legítimas em vez de inspecionar cada pacote de raiz.
4. O próprio cumprimento TCP está encriptado?
- Sim, sempre
- Não, é simples e visível para qualquer coisa no percurso de rede — Certo.
- Só o SYN está encriptado
- Só em ligações HTTPS
O TCP fornece ordenação e fiabilidade, não confidencialidade. A encriptação, quando presente, vem de uma camada acima do TCP, como o TLS.
Praticar com o FireAI
Ponha esta lição em prática no seu próprio Mac.
- Descubra para onde uma app envia dados, no Mapa-múndi — Veja exatamente com que empresa e país uma app está a falar em silêncio.
- Regras: app, sítio, domínio, IP ou um intervalo, para sempre ou até reiniciar — Escreva uma regra tão precisa como um único endereço ou tão ampla como um domínio inteiro.
- Inspeção profunda, sem decifrar nada — Obtenha detalhe real sobre uma ligação segura sem que o FireAI leia alguma vez o que está lá dentro.
Fontes
- RFC 9293: Transmission Control Protocol (TCP)
- Cloudflare Learning: What is TCP/IP?
- Cloudflare Learning: What is a Firewall?
Ponha em prática no seu Mac
Experimente todas as funcionalidades grátis durante 17 dias, sem cartão.