Что такое циклическая проверка избыточности и как она работает простым языком (в стиле "для чайников")?

StackOverflow https://stackoverflow.com//questions/9635561

  •  10-12-2019
  •  | 
  •  

Вопрос

У меня возникли проблемы с пониманием концепции и действия этого уродливо звучащего термина ".проверка циклического резервирования".Я посещаю в колледже курс по компьютерным сетям и уже начинаю теряться.

Проблема в том, что мое понимание математики очень ограничено (изучал математику давным-давно в школе и забыл большую ее часть), и я не могу понять, например, что такое, черт возьми, генераторный многочлен, какое отношение многочлены имеют к CRC и подводить итог - все это кажется мне совершенно непонятным.

Я прочитал статью в вики о CRC, но это мне не помогло, так как я плохо разбираюсь в математике, а все эти символы и математические термины для меня как китайские.

Я понимаю, что CRC используется для обнаружения ошибок при отправке данных по сети, но с этого момента я заблудился.

Кто-нибудь может помочь мне объяснить эту концепцию простыми словами и, возможно, привести пример?

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

Я был бы очень благодарен, если бы кто-нибудь мог помочь мне разобраться!

Это было полезно?

Решение

Если вы хотите, чтобы ответ был очень простым, вам нужно принять некоторое упрощение, если вы готовы с этим жить, вот оно:

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

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

Теперь, что, если бы вы могли вычислить некоторое значение, которое намного меньше самих данных, но зависит от них?Таким образом, если данные изменились по ходу дела (из-за ошибки), вычисленное значение больше не будет "соответствовать" данным, и вы будете знать, что произошла ошибка.Существует ли такой расчет?

Как насчет простого деления и принятия остатка в качестве этого значения?

Допустим, я хочу передать информацию / число 1000.Я делю его на выбранное число - например , на 6 ...это дает мне 166 и остаток от 4.Я беру остаток в качестве контрольного значения, которое намного меньше информации, которую я фактически передаю, поэтому я не трачу слишком много полосы пропускания и передаю 1000, за которыми следует 4.Получатель получает его, берет число 1000, делит его на 6, и если остаток равен 4, то предполагается, что ошибки не произошло.

Если произошла ошибка, и он получит 998 вместо 1000 из-за ошибки в ссылке - он разделит ее на 6, получит остаток от 2, который не соответствует 4, и, следовательно, он знает, что произошла ошибка.Это основной принцип КПР.

Конечно, это немного сложнее, потому что оно делится на многочлен, но принцип использования остатка как "короткого значения, представляющего данные", для проверки его на наличие ошибок таким же образом остается в силе.

Я надеюсь, это поможет вам разобраться в том, что происходит ;)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top