Resumo

  • A RFC 7413 permite que um cliente com um cookie emitido pelo servidor envie dados de aplicação no SYN e que o servidor os processe antes do fim do aperto de mão de três etapas.
  • O mecanismo pode economizar uma ida e volta, mas os dados do SYN podem chegar mais de uma vez à aplicação; operações intolerantes a repetição não devem usá-lo.
  • O caminho rápido depende de rotação de chaves, limite de pedidos pendentes, memória negativa por caminho e um fallback verificável para o TCP normal.

No TCP convencional, o primeiro pacote pede que uma conexão comece. Com o TCP Fast Open, ele também pode carregar a primeira solicitação da aplicação. Um servidor que reconhece o cookie consegue entregar esses bytes quando o aperto de mão ainda não terminou. A distância da rede não mudou; mudou o momento em que o trabalho passou a ser autorizado.

A RFC 7413 foi publicada em dezembro de 2014 como especificação Experimental, e não como norma da trilha de padrões. Ela descreve uma hipótese implementável e seus limites, sem provar adoção atual nem ganho em qualquer caminho. O benefício possível é de até um RTT quando o cliente já obteve um cookie, a primeira unidade cabe no segmento inicial e os equipamentos intermediários aceitam um SYN com dados.

O primeiro contato continua servindo para pedir o cookie. O cliente envia a opção Fast Open vazia; o servidor responde no SYN-ACK com uma etiqueta de autenticação opaca; o cliente a guarda. Numa conexão futura, o SYN traz cookie e dados. Se a validação for positiva, o servidor reconhece ambos, entrega os dados à aplicação e pode responder antes da conclusão do aperto de mão. Se falhar, descarta os dados antecipados, reconhece somente o SYN e segue o processo normal.

O cookie prova alcançabilidade anterior da origem; não identifica usuário nem autoriza transação. A RFC define de 4 a 16 bytes e recomenda uma MAC associada ao endereço IP de origem. O cliente não interpreta o conteúdo. O servidor escolhe geração, validação e expiração. Trocar a chave invalida cookies antigos; aceitar chaves antiga e nova por um intervalo pode suavizar a transição. Assim, a rotação também é uma decisão de disponibilidade.

A principal ruptura semântica é a repetição. O aperto de mão ajuda o TCP a separar uma conexão nova de SYNs antigos ou duplicados. Ao entregar dados antes de concluir essa fronteira, o Fast Open aceita que a primeira mensagem possa ser entregue novamente depois que o estado original desapareceu. Por isso, TFO não pode ser ativado por padrão e deve ser solicitado explicitamente pela aplicação para cada porta de serviço.

Idempotência deixa de ser detalhe do código e vira condição do transporte. Uma leitura costuma suportar repetição. Criar um recurso, efetuar cobrança ou processar um POST desprotegido não pode assumir execução única. Um identificador transacional na aplicação pode reconhecer duplicatas; o cookie do Fast Open não oferece exactly-once. Antecipar os bytes não antecipa a certeza.

O servidor também antecipa custo. Antes de confirmar a origem pelo aperto de mão completo, pode consumir CPU e memória ou gerar resposta. A RFC mantém um contador de solicitações Fast Open pendentes e exige desativar a via rápida para novos pedidos quando o limite é excedido. Os dados iniciais são então descartados e o TCP comum recupera o controle. Cookie sem limite de capacidade não basta.

O caminho pode recusar a otimização. Alguns firewalls ou middleboxes descartam SYN com carga útil ou opções desconhecidas. Após o temporizador expirar, o cliente deve retransmitir sem dados e sem a opção Fast Open. Resposta que não reconhece os dados, erro ICMP ou ausência de SYN-ACK precisa entrar numa memória negativa. A recomendação é suspender temporariamente TFO para aquela combinação de endereços e portas.

Essa memória evita pagar o mesmo timeout em toda conexão. Mas também precisa expirar: uma falha transitória não deve virar bloqueio permanente. Operar o Fast Open inclui definir quando tentar de novo e como distinguir incompatibilidade persistente de perda comum.

O ganho integral depende ainda do tamanho da primeira unidade. Opções TCP ocupam espaço, e o MSS em cache limita os bytes que cabem no SYN. Se o servidor precisar esperar o restante depois do aperto de mão, boa parte da vantagem desaparece. Reutilizar conexões estabelecidas continua importante; multiplicar conexões curtas pode terminar antes que o controle de congestionamento produza seu efeito completo.

A importância histórica do TCP Fast Open está nessa contabilidade. Um RTT economizado cria estado novo: quais origens foram alcançáveis, quais cookies ainda valem, quais operações podem se repetir, quanto trabalho não confirmado é aceito e em quais caminhos a experiência deve parar. O pedido antecipado só é realmente mais rápido quando esse estado pode ser observado, limitado e revertido.

Sources