Методы вычисления контрольной суммы обрабатывают d разрядов данных (см. рис. 5.4) как последовательность ^-разрядных целых чисел. Наиболее простой метод заключается в простом суммировании этих ^-разрядных целых чисел и использовании полученной суммы в качестве битов определения ошибок. На этом методе основан алгоритм вычисления контрольной суммы, принятый в Интернете, — байты данных группируются в 16-разрядные целые числа и суммируются. Затем от суммы берется обратное значение (дополнение до 1), которое и помещается в заголовок сегмента. Как уже отмечалось в разделе «Протокол UDP — передача без установления соединения» главы 3, получатель проверяет контрольную сумму, вычисляя дополнение до 1 от суммы полученных данных (включая контрольную сумму), и сравнивает результат с числом, все разряды которого равны 1. Если хотя бы один из разрядов результата равен 0, это означает, что произошла ошибка. Принятый в Интернете алгоритм вычисления контрольной суммы и его реализация подробно описываются в RFC 1071. В протоколах TCP и UDP контрольная сумма вычисляется по всем полям (включая поля заголовка и данных). В других протоколах, например ХТР, вычисляются две контрольной суммы, одна для заголовка, а другая для всего пакета.
Читать далее »
Популярность: 0