stringtranslate.com

Контрольная сумма Интернета

Контрольная сумма Интернета [1] [2] , также называемая контрольной суммой заголовка IPv4, — это контрольная сумма, используемая в версии 4 Интернет-протокола ( IPv4) для обнаружения повреждения заголовка пакетов IPv4. Она содержится в заголовке IP-пакета и представляет собой 16-битный результат суммирования слов заголовка. [3]

Протокол IPv6 не использует контрольные суммы заголовков. Его разработчики посчитали, что контрольные суммы всего пакета на уровне соединения, предоставляемые в протоколах, таких как PPP и Ethernet , в сочетании с использованием контрольных сумм в протоколах верхнего уровня, таких как TCP и UDP , достаточны. [4] Таким образом, маршрутизаторы IPv6 освобождаются от задачи пересчета контрольной суммы при каждом изменении пакета, например, путем снижения счетчика предела переходов на каждом переходе.

Контрольная сумма Интернета является обязательной для обнаружения ошибок в пакетах IPv6 UDP (включая полезную нагрузку данных).

Контрольная сумма Интернета используется для обнаружения ошибок в пакетах ICMP (включая полезную нагрузку данных).

Вычисление

Расчет контрольной суммы определяется следующим образом: [5]

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

Если нет никаких повреждений, результат суммирования всего заголовка IP, включая контрольную сумму, и последующего взятия его дополнения до единицы должен быть равен нулю. На каждом переходе контрольная сумма проверяется. Пакеты с несовпадением контрольной суммы отбрасываются. Маршрутизатор должен скорректировать контрольную сумму, если он изменяет заголовок IP (например, при уменьшении TTL). [6]

Процедура подробно описана в RFC 1071 «Вычисление контрольной суммы Интернета». [1] Оптимизации представлены в RFC 1624 «Вычисление контрольной суммы Интернета с помощью инкрементного обновления» [2] для случая маршрутизаторов, которым необходимо повторно вычислять контрольную сумму заголовка во время пересылки пакета, когда изменилось только одно поле.

Примеры

Расчет контрольной суммы заголовка IPv4

Возьмем следующий усеченный фрагмент пакета IPv4. Заголовок выделен жирным шрифтом, а контрольная сумма подчеркнута.

4500 0073 0000 4000 4011 b861 c0a8 0001
c0a8 00c7 0035 e97c 005f 279f 1e4b 8180

Для сложения с дополнением по единицам, каждый раз, когда происходит перенос, мы должны добавлять 1 к сумме. [7] Проверка и исправление переноса могут выполняться с каждым сложением или как пост-обработка после всех сложений. Если исправлением генерируется еще один перенос, к сумме добавляется еще одна 1.

Чтобы вычислить контрольную сумму, мы можем сначала вычислить сумму каждого 16-битного значения в заголовке, пропуская только само поле контрольной суммы. Обратите внимание, что эти значения указаны в шестнадцатеричном формате.

Первоначальное дополнение:4500 + 0073 + 0000 + 4000 + 4011 + c0a8 + 0001 + c0a8 + 00c7 = 2479c

Затем выполняется перенос путем прибавления пятой шестнадцатеричной цифры к первым четырем цифрам:2 + 479c = 479e

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

Контрольная сумма представляет собой поразрядное дополнение ( побитовое НЕ ) этого результата:NOT 479e = b861

Это значение контрольной суммы подчеркнуто в исходном заголовке IP-пакета выше.

Проверка контрольной суммы заголовка IPv4

При проверке контрольной суммы используется та же процедура, что и выше, за исключением того, что исходная контрольная сумма заголовка не опускается.
4500 + 0073 + 0000 + 4000 + 4011 + b861 + c0a8 + 0001 + c0a8 + 00c7 = 2fffd
Добавьте биты переноса:
fffd + 2 = ffff
Взятие дополнения до единиц (переворачивание каждого бита) дает 0000, что указывает на отсутствие ошибок. Контрольная сумма заголовка IP не проверяет правильный порядок 16-битных значений в заголовке.

Смотрите также

Ссылки

  1. ^ ab R. Braden ; D. Borman; C. Partridge (сентябрь 1988 г.). Вычисление контрольной суммы Интернета. Сетевая рабочая группа. doi : 10.17487/RFC1071 . RFC 1071. Информационное. Обновлено RFC 1141.
  2. ^ ab A. Rijsinghani, ed. (май 1994). Вычисление контрольной суммы Интернета с помощью инкрементного обновления. Сетевая рабочая группа. doi : 10.17487/RFC1624 . RFC 1624. Информационное. Обновления RFC 1141.
  3. ^ Общий формат IP-дейтаграммы
  4. ^ Ильич ван Бейнум (сентябрь 2006 г.). «Внутреннее устройство IPv6». Циско.
  5. ^ J. Postel , ред. (сентябрь 1981 г.). ПРОТОКОЛ ИНТЕРНЕТА - СПЕЦИФИКАЦИЯ ПРОТОКОЛА ПРОГРАММЫ ИНТЕРНЕТА DARPA. IETF . doi : 10.17487/RFC0791 . STD 5. RFC 791. IEN 128, 123, 111, 80, 54, 44, 41, 28, 26. Интернет-стандарт 5. Отменяет действие RFC 760. Обновлен RFC 1349, 2474 и 6864.
  6. ^ Ф. Бейкер , ред. (июнь 1995 г.). Требования к маршрутизаторам IP версии 4. Сетевая рабочая группа. doi : 10.17487/RFC1812 . RFC 1812. Предложенный стандарт. Отменяет RFC 1716 и 1009. Обновлен RFC 2644 и 6633.
  7. ^ "Вычислить 16-битную сумму в дополнительном коде". Архивировано из оригинала 2020-11-17.

Внешние ссылки