Resumo

  • A abertura simultânea ocorre quando os dois extremos fazem uma abertura ativa e recebem um SYN sem confirmação enquanto estão em SYN-SENT.
  • Ambos passam por SYN-RECEIVED, confirmam o espaço de sequência do outro e chegam a ESTABLISHED, criando uma conexão, não duas.
  • A RFC 9293 exige suporte a esse caminho e o registro da origem ativa ou passiva de SYN-RECEIVED.

O handshake antes dos papéis

O TCP costuma ser ensinado como uma conversa entre cliente e servidor. A RFC 793, porém, descreve primeiro a sincronização de uma conexão. Um iniciador e um respondente são o caso usual, mas dois TCP também podem iniciar ao mesmo tempo. Cliente e servidor são convenções da aplicação, não requisitos do estado de transporte.

Quando os SYNs se cruzam

Os dois extremos executam um active OPEN, escolhem seus números de sequência iniciais e enviam SYN. Os segmentos se cruzam enquanto ambos estão em SYN-SENT. Cada lado recebe o SYN do outro sem confirmação, registra seu número, entra em SYN-RECEIVED e envia SYN+ACK. Ao receber uma confirmação aceitável do próprio SYN, chega a ESTABLISHED. O cruzamento converge para uma conexão única.

O SYN consome um número de sequência; por isso a confirmação avança um valor.

A simetria ainda precisa de memória

A RFC 9293 exige que a implementação suporte a abertura simultânea e saiba se SYN-RECEIVED veio de um active ou passive OPEN. Essa origem altera o tratamento posterior de resets e erros. A máquina de estados é simétrica, mas o histórico local continua relevante.

O SYN antigo que parece uma batida

Um SYN duplicado antigo pode parecer parte de uma abertura simultânea. Validação de sequência e processamento de reset continuam necessários; nem todo SYN recebido em SYN-SENT é legítimo.

O que o padrão não promete

O padrão descreve o caminho quando os pacotes chegam aos dois TCP. Não garante roteamento, regras de firewall, mapeamentos NAT, APIs de socket ou suporte das aplicações atuais.

Fontes