Контрольная сумма Интернета используется в стандартных интернет-протоколах, таких как IP, UDP и TCP. Это значение используется для проверки целостности данных после передачи по сети. Клиент включает значение контрольной суммы в заголовок сегмента, чтобы получатель мог использовать это значение для прямой проверки целостности данных.
Как рассчитываются контрольные суммы Интернета?
Средства вычисления контрольной суммы Интернета описаны в RFC1071 1988 г. и могут быть обобщены следующим образом:
- Преобразование данных в серию 16-битных целых чисел;
- Вычислить сумму всех 16-битных целых чисел с учетом переноса битов;
- Возьмите дополнение до 1 окончательной суммы (переверните биты)
Для чего используются контрольные суммы в Интернете?
Затем это значение помещается в заголовок сегмента данных, отправляемого по сети. Когда сегмент достигает своего конечного пункта назначения, принимающая машина может проверить целостность, используя контрольную сумму как таковую:
- Преобразование сегмента данных в серию 16-битных целых чисел;
- Вычислить сумму всех 16-битных целых чисел с учетом переноса битов;
- Добавьте контрольную сумму к итоговой сумме;
- Если окончательная сумма состоит из единиц, данные проверяются;
- Если обнаружены какие-либо 0, данные были повреждены.
Как проверяются контрольные суммы Интернета?
Вычисление контрольной суммы является очень простым средством проверки передаваемых данных. Использование двоичной арифметики также обеспечивает некоторую дополнительную гибкость, как указано в исходном RFC:
- Вычисление суммы может быть выполнено одинаково независимо от машины endian-ness;
- можно использовать замену байтов, чтобы избежать проблем с границами слов;
- возможно параллельное суммирование на 32-битных машинах (в то время 32 было современно)
- Отсрочка переноса битов
- Сочетание контрольной суммы и копирования данных;
- Инкрементальные обновления контрольной суммы
Примечание. Шаг № 6 был обновлен в более позднем RFC1141.
Пошаговая разбивка
Теория вычисления контрольной суммы учитывает множество вариантов использования и может показаться довольно сложной для тех, кто не знаком с ее последствиями. Ниже приведена простая иллюстрация того, как можно вычислить контрольную сумму для сегмента данных из 8 бит, разделенного на 2 4-битных слова.
Окончательное значение 1101 представляет собой дополнение до 1 общей суммы битов данных сегмента. Это значение вставляется в заголовок для использования при проверке на стороне получателя. Получатель проверяет целостность данных аналогично тому, как создавалась контрольная сумма; путем организации данных в 16-битные сегменты, добавления всех значений и размещения битов переноса с циклическим переносом.
Затем к этой сумме добавляется контрольная сумма; если результатом являются все единицы, целостность данных проверяется. Если есть 0, данные считаются поврежденными. На следующем рисунке показан процесс проверки контрольной суммы Интернета на стороне получателя:
Обсуждение
Контрольная сумма Интернета — это относительно легкий протокол, обеспечивающий надежную передачу данных. Этот элемент имеет решающее значение для гарантий, предоставляемых TCP. Контрольная сумма
Контрольная сумма статьи в Интернете: пошаговое руководство изначально была опубликована на веб-сайте Overcoded и опубликована здесь с разрешения.