DCN - обнаружение и исправление ошибок
Существует множество причин, таких как шум, перекрестные помехи и т. Д., Которые могут способствовать повреждению данных во время передачи. Верхние уровни работают на некотором обобщенном представлении сетевой архитектуры и не осведомлены об аппаратной обработке данных, поэтому ожидают безошибочной передачи данных между системами. Большинство приложений не будут работать должным образом, если будут получать ошибочные данные. Такие приложения, как голос и видео, могут не пострадать, и с некоторыми ошибками они могут работать нормально.
Уровень канала данных использует некоторый механизм контроля ошибок, чтобы гарантировать, что кадры (потоки битов данных) передаются с определенным уровнем точности. Но чтобы понять, как контролируются ошибки, важно знать, какие типы ошибок могут возникать.
Типы ошибок
Возможны три типа ошибок:
Single bit error
Однако в кадре есть только один бит, который поврежден.
Multiple bits error
Кадр получен с более чем одним битом в поврежденном состоянии.
Burst error
Кадр содержит более 1 поврежденных последовательных битов.
Механизм контроля ошибок может включать два возможных способа:
Обнаружение ошибок
Исправление ошибки
Обнаружение ошибок
Ошибки в полученных кадрах обнаруживаются с помощью проверки четности и циклической проверки избыточности (CRC). В обоих случаях отправляется несколько дополнительных битов вместе с фактическими данными, чтобы подтвердить, что биты, полученные на другом конце, такие же, как они были отправлены. Если контрпроверка на стороне получателя не удается, биты считаются поврежденными.
Проверка четности
Один дополнительный бит отправляется вместе с исходными битами, чтобы сделать количество единиц четным в случае четности или нечетным в случае нечетной четности.
Отправитель при создании кадра считает количество единиц в нем. Например, если используется четность и количество единиц четное, то добавляется один бит со значением 0. Таким образом, количество единиц остается четным. Если количество единиц нечетное, для четности добавляется бит со значением 1.
Приемник просто считает количество единиц в кадре. Если счетчик единиц является четным и используется четность, кадр считается неповрежденным и принимается. Если счетчик единиц нечетный и используется нечетная четность, кадр все еще не поврежден.
Если при передаче меняется один бит, приемник может обнаружить его, посчитав количество единиц. Но когда более одного бита ошибочны, приемнику очень трудно обнаружить ошибку.
Циклический контроль избыточности (CRC)
CRC - это другой подход к обнаружению, содержит ли полученный кадр действительные данные. Этот метод включает двоичное разделение передаваемых битов данных. Дивизор генерируется с помощью многочленов. Отправитель выполняет операцию деления с отправляемыми битами и вычисляет остаток. Перед отправкой фактических битов отправитель добавляет остаток в конце фактических битов. Фактические биты данных плюс остаток называются кодовым словом. Отправитель передает биты данных в виде кодовых слов.
С другой стороны, приемник выполняет операцию деления над кодовыми словами, используя тот же делитель CRC. Если остаток содержит все нули, биты данных принимаются, в противном случае считается, что при передаче произошло некоторое повреждение данных.
Исправление ошибки
В цифровом мире исправление ошибок может выполняться двумя способами:
Backward Error Correction Когда получатель обнаруживает ошибку в полученных данных, он просит отправителя повторно передать блок данных.
Forward Error Correction Когда приемник обнаруживает некоторую ошибку в полученных данных, он выполняет код исправления ошибок, который помогает ему автоматически восстанавливать и исправлять некоторые виды ошибок.
Первый, обратная коррекция ошибок, прост и может быть эффективно использован только там, где повторная передача не является дорогостоящей. Например, волоконная оптика. Но в случае беспроводной передачи ретрансляция может стоить слишком дорого. В последнем случае используется прямая коррекция ошибок.
Чтобы исправить ошибку в кадре данных, получатель должен точно знать, какой бит в кадре поврежден. Чтобы найти ошибочный бит, избыточные биты используются в качестве битов четности для обнаружения ошибок. Например, мы берем слова ASCII (7-битные данные), тогда нам может быть 8 видов информации, которые нам нужны: первые семь битов, чтобы сообщить нам, какой бит это ошибка и еще один бит, чтобы сказать, что ошибки нет.
Для m битов данных используется r избыточных битов. r битов могут предоставить 2r комбинаций информации. В кодовом слове битов m + r существует вероятность того, что сами r битов могут быть повреждены. Таким образом, количество используемых r битов должно указывать на m + r битовых местоположений плюс информацию об отсутствии ошибок, то есть m + r + 1.