Контрольная сумма UDP-сегмента

Как было показано ранее, контрольная сумма UDP-сегмента предназначена для обнаружения ошибок, то есть определения, были ли какие-либо биты сегмента искажены в процессе передачи (например, в результате помех на линии связи или промежуточного хранения в маршрутизаторе). Протокол UDP на передающей стороне вычисляет дополнение до 1 суммы всех 16-разрядных слов сегмента, игнорируя происходящие при суммировании переполнения. Результат вычисления заносится в поле контрольной суммы сегмента. Материалы об эффективном вычислении контрольной суммы можно найти в RFC 1071, а для ознакомления со способами практической реализации вычислений рекомендуем обратиться к дополнительным источникам информации. В качестве примера рассмотрим три 16-разрядных слова:

0110011001100110
0101010101010101
0000111100001111

Сумма первых двух слов равна:

0110011001100110
0101010101010101
1011101110111011

Сложение полученной суммы с третьим словом дает результат:

1011101110111011
0000111100001111
1100101011001010

Дополнение до 1 вычисляется путем замены всех нулей суммы единицами и наоборот. Дополнением до 1 слова 1100101011001010 является слово 0011010100110101, которое и будет записано в поле контрольной суммы. На приемной стороне производится суммирование всех слов сегмента, включая поле контрольной суммы.

Если при передаче не произошло искажения ни одного из битов, результатом суммирования является 1111111111111111. Присутствие хотя бы одного нулевого бита в сумме свидетельствует о наличии ошибок в данных.

Возможно, вызывает удивление, что протокол UDP в первую очередь осуществляет проверку данных на наличие ошибок, поскольку известно, что эту функцию обычно осуществляют протоколы канального уровня (например, популярный протокол Ethernet). Причина заключается в том, что на самом деле не все протоколы физического уровня выполняют такую проверку, и, следовательно, существует вероятность, что при передаче искажение данных будет не обнаружено. Поскольку протокол IP может работать в сочетании практически с любым протоколом канального уровня, функция обнаружения ошибок на транспортном уровне необходима для повышения надежности передачи. Заметим, что протокол UDP способен лишь обнаруживать ошибки, однако не располагает средствами их исправления. Некоторые реализации UDP удаляют искаженный сегмент, а некоторые передают его прикладному уровню с соответствующим предупреждением.

На этом мы завершим рассказ о протоколе UDP. Далее в центре нашего внимания окажется протокол TCP, который предоставляет приложениям набор услуг, не поддерживаемых протоколом UDP. Заметим, что структура TCP при этом значительно сложнее. Перед тем как начать непосредственное знакомство с TCP, мы немного вернемся назад и вспомним основные принципы надежной передачи данных.

лазерная гравировка на laser-form.ru

Данная статья "Контрольная сумма UDP-сегмента" размещена на сайте Компьютерные сети и многоуровневая архитектура интернета (conlex.kz) в ознакомительных целях.

Уточнения, корректировки и обсуждения статьи "Контрольная сумма UDP-сегмента" - под данным текстом, в комментариях.

Ответственность, за все изменения, внесённые в систему по советам данной статьи, Вы берёте на себя.

Копирование статьи "Контрольная сумма UDP-сегмента", без указания ссылки на сайт первоисточника Компьютерные сети и многоуровневая архитектура интернета (conlex.kz), строго запрещено.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *