Resumo

  • A opção Alternate Checksum Request, Kind 14, levava um número de algoritmo em cada SYN. Só dois números idênticos autorizavam a alternativa; ausência, divergência ou ignorância de um endpoint antigo mantinham o checksum TCP padrão durante toda a conexão.
  • SYN e RST continuavam sempre no padrão. O Fletcher de 32 bits exigia ainda a opção Kind 15 nos segmentos aplicáveis. Mais tarde, o RFC 4614 registrou falta de interesse, e o RFC 6247 tornou o mecanismo Historic e os dois kinds obsolete.

O primeiro sinal não era um voto pelo outro lado

O iniciador escrevia Kind 14 em seu SYN. A opção tinha três octetos: tipo, comprimento e o identificador do algoritmo. O valor 0 nomeava o checksum TCP padrão; 1, um Fletcher de 8 bits com resultado de 16 bits; 2, um Fletcher de 16 bits com resultado de 32 bits.

Esse campo declarava uma escolha local, não uma conclusão compartilhada. O receptor podia entender o número e ainda preferir outro. Podia não implementar o RFC. Podia sequer receber a opção por algum comportamento no caminho. Nenhuma dessas situações autorizava o iniciador a mudar sozinho o significado do campo de checksum.

O RFC 1146 exigia que o SYN na direção contrária também trouxesse Kind 14 com o mesmo número exato. O segundo sinal era uma ação própria do respondente. Apenas o par transformava uma preferência em estado da conexão.

Se um lado escolhesse 1 e o outro 2, não havia média nem escolha automática do menor resultado. A sessão usava o padrão. Se um SYN omitisse a opção, a consequência era a mesma. A igualdade era condição de entrada, não uma otimização.

O desacordo tinha uma única saída comum

O retorno ao checksum padrão abrangia toda a conexão. Não havia alguns segmentos experimentais enquanto os endpoints descobriam a divergência, nem uma mudança posterior baseada em preferência de configuração.

Essa regra evita o pior tipo de falha: cada lado acreditar que venceu a negociação e validar os mesmos bits por uma função diferente. O desacordo não gera um formato híbrido. Ele seleciona a gramática que já existia antes do SYN.

RFC 1122 tornou esse caminho útil para hosts antigos ao mandar ignorar, sem erro, uma opção TCP desconhecida cujo comprimento possa ser percorrido. Um stack antigo não precisava conhecer Kind 14 para continuar a conexão. Respondia normalmente, sem o número coincidente.

O stack novo lia a ausência como condição bilateral não satisfeita. Silêncio não era consentimento. Era um veto seguro produzido pelo comportamento padrão de um peer que não assumiu obrigação nova.

A mensagem de mudança continuava sob a regra antiga

RFC 793 definiu o checksum TCP como o complemento de um da soma de palavras de 16 bits sobre cabeçalho, dados e pseudoheader. RFC 9293 mantém a obrigação atual: o remetente deve gerar e o destinatário deve verificar.

Antes dos dois SYNs, essa era a única regra de detecção de erros compartilhada. Por isso, a própria solicitação Kind 14 era enviada dentro de um SYN protegido pelo checksum padrão. Usar o algoritmo proposto para proteger a proposta contra erros criaria um círculo: o receptor precisaria aceitar a regra antes de ler a mensagem que a estabelecia.

O algoritmo velho funcionava como cartório do novo. Confirmava que cada ato de escolha havia chegado em um segmento compreensível. Só depois das duas assinaturas os segmentos comuns podiam ser calculados de outro modo.

Essa sequência também organiza a prova operacional. Um Kind 14 isolado demonstra oferta. Dois SYNs coincidentes demonstram acordo conforme o RFC. Segmentos posteriores verificáveis demonstram uso. A simples presença de uma opção não permite saltar os três níveis.

Dois tipos de segmento ficaram fora da mudança

Mesmo com acordo, SYN e RST sempre usavam o checksum padrão. Para SYN, a razão é temporal: ele carrega a escolha antes de haver estado comum.

RST preserva outra fronteira. Um reset pode ser emitido por um host sem estado daquela conexão. Exigir o algoritmo alternativo significaria pedir a quem rejeita um fluxo desconhecido que reconstruísse uma negociação que talvez nunca tenha visto.

Assim, a conexão podia possuir uma regra privada para segmentos comuns, mas a entrada e a saída sem estado continuavam no idioma universal. A alternativa não se tornava uma reforma total do formato TCP.

Um analisador precisa conhecer essa exceção. Encontrar checksum padrão em um RST não refuta o acordo. Encontrá-lo em um SYN é esperado. Tipo do segmento, direção e fase valem tanto quanto o número no campo.

O resultado longo ocupou uma segunda opção

O algoritmo 1 produzia 16 bits e cabia no campo existente. O algoritmo 2 produzia 32. O RFC 1146 colocou a parte A no campo normal e a parte B na Alternate Checksum Data, Kind 15.

Kind 15 não era o segundo voto. Era a despesa recorrente da decisão já tomada: segmentos comuns aplicáveis precisavam carregar bytes extras de opção e todos os leitores do caminho precisavam preservar e interpretar esse formato conforme o estado do handshake.

O tratamento de erro era deliberadamente duro. Uma Kind 15 com comprimento errado ou em situação imprópria levava ao descarte do segmento, envio de RST e aborto da conexão. Antes do acordo, ignorar uma proposta desconhecida protegia compatibilidade. Depois dele, ignorar dados de integridade malformados destruiria a interpretação comum.

O custo do algoritmo de 32 bits, portanto, não era apenas computacional. Incluía espaço de cabeçalho, estado, testes, ferramentas de captura e um novo caminho de encerramento.

A vitória do fallback podia parecer vitória do recurso

Um rollout unilateral não derrubava serviço. O endpoint atualizado propunha; o antigo ignorava; ambos completavam o TCP padrão. Para experimentar sem dividir a rede, isso era uma qualidade importante.

Mas a pessoa usuária via apenas que a conexão abriu. Sem telemetria da negociação, era fácil contabilizar o rollout como bem-sucedido mesmo quando nenhum peer aceitava a alternativa. A compatibilidade retirava o sintoma que pressionaria pela atualização do segundo lado.

O benefício precisava de coincidência bilateral, passagem das opções e implementação correta. O custo de manter código e testes aparecia em cada stack atualizado, mesmo quando o efeito no fio permanecia zero.

Fallback seguro e fricção de adoção nasceram da mesma regra. A regra impedia falhas catastróficas, mas também fazia uma extensão não adotada desaparecer dentro de conexões saudáveis.

Experimental não era uma migração programada

O RFC 1146 foi publicado em março de 1990 como Experimental e dizia que o mecanismo não era recomendado para sistemas de produção. Ele especificava uma experiência interoperável, não uma substituição obrigatória do TCP.

RFC 1071 havia organizado propriedades e técnicas de implementação do Internet checksum. Isso oferece contexto para o baseline, mas exemplos de cálculo — alguns cercados por held errata — não demonstram adoção da negociação alternativa.

Em 2006, RFC 4614 registrou que Alternate Checksum não atraiu interesse. A frase não prova que nunca houve protótipo nem condena a matemática de Fletcher. Ela sustenta uma afirmação mais estreita sobre a trajetória do trabalho.

Em 2011, RFC 6247 moveu o RFC 1146 para Historic, observando que o mecanismo não teve implantação ampla, e determinou que IANA marcasse Kind 14 e 15 como obsolete. A discussão de segurança específica sobre spoofing no mesmo RFC pertence a T/TCP; não é uma explicação transferível para Alternate Checksum.

O encerramento formal transformou uma opção experimental sem adoção ampla em material histórico legível. Não apagou seus números nem autorizou uma narrativa causal que os documentos não sustentam.

O registro conservou as duas escolhas e o fim delas

O registro TCP Parameters da IANA mantém as opções 14 e 15 com indicação obsolete. Mantém também a tabela dos algoritmos 0, 1, 2 e 3, sendo o último Redundant Checksum Avoidance.

Essas linhas provam atribuição, significado e status atual. São essenciais para decodificar capturas antigas e impedir reutilização conflitante. Não são um contador de hosts ativos nem recomendação de implementação.

Uma evidência de IANA responde “qual foi o nome e em que estado normativo está?”. Evidência de tráfego precisa responder “quem ofereceu, quem coincidiu e que cálculo apareceu depois?”. Misturar as perguntas faz uma inscrição histórica parecer atividade presente.

Também não se deve usar obsolete como sinônimo de inexistente. Um equipamento legado ainda pode emitir os bits. O registro permite reconhecê-los justamente porque a história não foi apagada.

Duas escolhas iguais preservaram a liberdade de dizer não

O desenho não deu ao primeiro SYN poder de legislar para o peer. Deu-lhe poder de perguntar numa forma que o peer já podia validar. O segundo SYN podia responder igual, diferente ou sem opção; todas as possibilidades tinham resultado determinístico.

Quando o resultado foi diferente ou ausente, a sessão não tentou adivinhar intenção. Voltou à base. Essa recusa em inventar consenso era o mecanismo central de segurança de implantação.

O checksum novo precisava de dois sinais iguais porque os dois endpoints sofreriam as consequências de interpretar o campo de outro modo. E ambos precisavam produzir esses sinais sob a regra antiga porque, antes deles, nenhuma outra regra tinha autoridade compartilhada.

Fontes