Кратко

  • 16-битная контрольная сумма IPv4 охватывает только заголовок, содержащий сведения, необходимые для обработки дейтаграммы.
  • Поскольку поля заголовка меняются в пути, контрольную сумму проверяют и пересчитывают в каждой точке обработки.

Защита данных для пересылки

RFC 791 определяет контрольную сумму как дополнение до единицы суммы в дополнении до единицы всех 16-битных слов заголовка. При вычислении само поле суммы считается нулевым.

Адрес назначения, длина, фрагментация, время жизни и идентификатор протокола определяют обработку дейтаграммы. Поэтому RFC 791 говорит, что сумма проверяет сведения, используемые при обработке, тогда как данные всё ещё могут содержать ошибки. При неудачной проверке обнаружившая её сторона должна немедленно отбросить дейтаграмму.

IPv4 не предоставляет сквозную целостность полезной нагрузки. По корректной сумме заголовка также нельзя определить, защищает ли данные какой-либо другой механизм.

Сумма, которая меняется в пути

Маршрутизаторы уменьшают TTL. Фрагментация и изменения адресов или опций также меняют заголовок. Поэтому RFC 791 требует проверки и пересчёта в каждой точке его обработки.

Вместо полного пересчёта можно использовать инкрементальное обновление. RFC 1624 требует, чтобы быстрый способ давал в точности тот же результат, что и полный расчёт.

Особенность двух нулей

В арифметике дополнения до единицы существуют положительный и отрицательный ноль. Формула RFC 1141 в редком случае могла дать представление, отличное от полного расчёта. RFC 1624 исправил процедуру, не меняя размер поля и его область, ограниченную заголовком.

Источники