Pular para o conteúdoHisnLabs
← TCP/IP: endereços, portas e conexões

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".

  1. SYN. O dispositivo que abre a conexão envia um segmento com a flag SYN ativada, carregando um número de sequência inicial.
  2. SYN-ACK. O outro lado responde com seu próprio SYN, mais um reconhecimento do primeiro número.
  3. 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. 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. 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. 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. 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.

Fontes

Coloque em prática no seu Mac

Teste todos os recursos grátis por 17 dias, sem cartão.

Baixar para Mac Docs