Resumo

  • O checksum IPv4 de 16 bits cobre somente o cabeçalho, que contém as informações usadas no processamento do datagrama.
  • Como campos do cabeçalho mudam no caminho, cada ponto de processamento precisa verificá-lo e recalculá-lo.

A decisão de encaminhamento primeiro

O RFC 791 define o checksum como o complemento de um da soma em complemento de um de todas as palavras de 16 bits do cabeçalho. Durante o cálculo, o próprio campo é tratado como zero.

Destino, comprimento, fragmentação, tempo de vida e protocolo orientam o tratamento do datagrama. Por isso, o RFC 791 diz que o checksum verifica as informações de processamento, embora os dados ainda possam conter erros. Quando a verificação falha, a entidade que detecta o problema deve descartar o datagrama imediatamente.

O IPv4 não oferece integridade de ponta a ponta para a carga útil. O checksum também não revela se algum outro mecanismo protege esses dados.

Um valor que muda legitimamente

O TTL é reduzido pelos roteadores. Fragmentação e alterações de endereço ou de opções também podem mudar o cabeçalho. O RFC 791 exige verificação e recálculo em cada ponto que o processa.

Uma implementação pode recalcular tudo ou atualizar o checksum de forma incremental. O RFC 1624 deixa claro que a alternativa rápida precisa ser exatamente equivalente ao cálculo completo.

O caso especial do zero

A aritmética em complemento de um tem zero positivo e zero negativo. A fórmula incremental do RFC 1141 podia produzir uma representação diferente em um caso limite. O RFC 1624 corrigiu o procedimento sem alterar a largura do campo nem seu escopo restrito ao cabeçalho.

Fontes