Resumo

  • O checksum obrigatório do TCP cobre o cabeçalho e os dados TCP, além de um pseudo-cabeçalho conceitual derivado do IP.
  • O pseudo-cabeçalho não é transmitido como bytes TCP; cada ponta o reconstrói para calcular e verificar o valor.
  • Ele ajuda a detectar erros e algumas entregas incorretas, mas não autentica o remetente nem prova a rota.

O segmento TCP parece começar nos campos de porta, mas seu checksum depende também do contexto da camada IP. O emissor inclui conceitualmente os endereços de origem e destino, a identidade do protocolo e o comprimento TCP. O receptor recompõe esses valores antes de verificar o segmento.

No IPv4, a RFC 793 descreve um pseudo-cabeçalho de 96 bits. Ele contém os dois endereços, um byte zero, o número do protocolo e o comprimento TCP calculado. Como esses dados já pertencem ao contexto IP, o TCP não os duplica no segmento. Eles atravessam a interface entre as camadas.

A decisão resolve um problema específico de evidência. Uma soma calculada apenas sobre portas, números de sequência e dados poderia continuar válida mesmo que os endereços ou a identidade do protocolo fossem alterados. Ao incluir esse contexto selecionado, o TCP consegue revelar certas corrupções e entregas em um contexto diferente daquele previsto.

O cálculo usa a soma em complemento de um de palavras de 16 bits, seguida pelo complemento de um do resultado. O campo do checksum é tratado como zero durante o cálculo. Quando o material coberto tem número ímpar de octetos, acrescenta-se um octeto zero somente para completar a última palavra; ele não é enviado. O comprimento TCP conta o cabeçalho e os dados TCP, excluindo os doze octetos do pseudo-cabeçalho IPv4.

A RFC 9293 mantém esse desenho e exige que o emissor gere e o receptor verifique o checksum. Qualquer protocolo inferior usado com TCP deve oferecer endereços, identidade do protocolo e uma forma de determinar o comprimento TCP.

No IPv6, o pseudo-cabeçalho tem 320 bits. Inclui os endereços IPv6, o comprimento do pacote da camada superior, três bytes zero e um valor Next Header que identifica TCP. Com cabeçalhos de extensão, deve-se usar o valor que identifica TCP ao fim da cadeia, não necessariamente o valor imediatamente presente no cabeçalho IPv6 fixo. Em roteamento pela origem, entram a origem inicial e o destino final, não os endereços intermediários.

Um checksum coincidente mostra apenas que os valores cobertos foram reconstruídos de modo compatível. Não confirma a identidade do remetente, autorização ou caminho, e não impede um atacante capaz de alterar o tráfego e recalcular o valor. O pseudo-cabeçalho é, portanto, um acordo entre camadas: o IP fornece o contexto, o TCP o incorpora à verificação e nenhum cabeçalho adicional aparece no fio.

Fontes