Завадостійке кодування (Лікнеп)

Кочевник

Ховрах-Терорист
Команда форуму
Реєстрація
30.01.08
Місто
Галичина
Телефон
Sams Note 20 Ultra + S8
Как и обещал, открою новую тему, где можно будет обсудить все прелести борьбы с ошибками в каналах передачи данных.
Как известно, во время передачи данных по любым каналам связи, в передаваемые данные вносятся ошибки, что приводит к искажению передаваемой информации. Причины ошибок могут быть самыми ращличными, начиная от помех и сбоев оборудования и заканчиая некомпетентностью/плохим настроением персонала, использующего эти средства связи.

Для борьбы с вносимыми искажениями используются различные способы, которые в общем можно разбить условно на две большие группы:
1. Автоматический запрос повторной передачи (ARQ — Automatic Repeat reQuest)
2. Непосредственное исправление ошибок (FEC - Forward Error Correction)

ARQ При автоматическом запросе повторной передачи передаваемые данные разбиваются на блоки. На принимающей стороне проверяется отсутствие ошибок в переданном блоке. Если в блоке данных обнаружена ошибка, отправляется запрос на передающую сторону для повторной передачи данных. В ответ на этот запрос передающая сторона повторяет передачу.
Таким образом, для этого метода достаточно использовать лишь обнаружение ошибок.
FEC Для непосредственного исправления ошибок используются специальные коды (Рида-Соломона, турбокоды, БЧХ, и т.д.). Данные коды за счет своей структуры позволяют не только обнаружить, но исправить ошибки в полученных данных. Но исправление возможно лишь в том случае, если число ошибок не превышает исправляющую способность кода.

Основы проверки и справления ошибок
Существующие методы проверки и исправления ошибок основаны на добавлении к информационным данным дополнительных данных, т.н. проверочой части. Таким образом в передаваемые данные вносится избыточность, что приводит к уменьшению скорости передачи именно информации.
В результате внесения избыточности, множество А всех возможных информационных слов превращается во множество всех разрешенных кодовых слов B+, которое является подмножеством B. Поскольку в информационные данные добавили проверочные (дополнительные) данные, то мощность множества B больше мощности множества А. См рисунок ниже.
При передаче информации, информационное слово aиз множества А дополняется проверочными данными. В результате получаем разрешенное кодовое слово из множества B+. На приемной стороне, принятое кодовое слово a_, которое может отличаться от переданного, проверяется на входимость в множество B+. Итак, если оно пренадлежит этому множеству, то принимается решение, что информация передана правильно и производится преобразование по получению информационной части кодового слова. Если же полученное слово не принадлежит множеству B+, то принимается решение, что в ходе передачи были внесены ошибки, и если код позволяет исправлять ошибки, проводится их исправление.
Стоит заметить, что в процессе передачи данных, в передаваемое кодовое слово внесуться такие ошибки, что оно все равно будет принадлежать множеству B+ и ошибки не обнаружатся. Это говорит о том, что у используемого метода слабая исправляющая/проверочная способность.
 

Вкладення

  • sets.JPG
    sets.JPG
    14.3 КБ · Перегляди: 164

Кочевник

Ховрах-Терорист
Команда форуму
Реєстрація
30.01.08
Місто
Галичина
Телефон
Sams Note 20 Ultra + S8
Проверка на ошибки пакетов данных (CRC, CheckSum, ParityCheck)

Очень часто используются методы проверки пакета данных на наличие в них ошибок. Для этого пакет данных дополняется проверочной частью (см рисунок).
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
| информационная часть пакета | проверочная часть пакета|
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
При этом информационная часть пакета может быть переменной длины, однако проверочная часть всегда постоянной длины и расположена в строго определенном месте пакета.
Самые распространенные првоерки:
CheckSum - контрольная сумма;
CRC (Cyclic Redundancy Check) - контроль циклическим кодом;
ParityCheck - проверка на четность.

На передающей стороне из информационной части по определенному алгоритму высчитывается проверочная часть, добавляется в пакет и передается в канал. На приемной стороне пакет разделяется на информационную и проверочную часть, из информационной части по тому же алгоритму, что и на передающей высчитывается проверочная часть. Если принятая и вычисленная проверочные части совпадают, то принимается решение, что пакет передан без ошибок.
Следует уточнить, что любой последовательности информационных данных соответствует единственная! проверочная часть, однако же разным информационнным данным может соответствовать одинаковые проверочные части.

Добавлено через 9 минут
В связи с тем, что
что любой последовательности информационных данных соответствует единственная! проверочная часть
такого
Также, если ошибка попала на на контрольную сумму и исказила ее, то в таком пакете ошибка не будет обнаружена.
Быть не может.
Т.е., если информационная часть в ходе передачи не была искажена, а ошибки лишь попали на проверочную часть, то на приемной стороне из правильной информационой части будет вычислена проверочная часть (контрольная сумма), которая не совпадет с принятой контрольной суммой (на которую попали ошибки). На основе этого, на принимающей стороне принимается решение, что пакет содержит ошибки.

Тоесть вы предлагаете использовать одновременно несколько кодов для обнаружения ошибок?
Реально на практике используются одновременно как минимум два исправляющих кода, кроме того на каждом уровне передачи данных по мимо этого приминяют проверку на ошибки в пакетах (или их частях) передаваемых данных.

одиночные пакеты ошибок.
А вот это так и не понял? Что имелось ввиду?
 
Останнє редагування:
Реєстрація
31.07.10
Місто
Донецк
Re: Проверка на ошибки пакетов данных (CRC, CheckSum, ParityCheck)

такого

Цитата:





Сообщение от Dry_Run


Также, если ошибка попала на на контрольную сумму и исказила ее, то в таком пакете ошибка не будет обнаружена.




Быть не может.
Т.е., если информационная часть в ходе передачи не была искажена, а ошибки лишь попали на проверочную часть, то на приемной стороне из правильной информационой части будет вычислена проверочная часть (контрольная сумма), которая не совпадет с принятой контрольной суммой (на которую попали ошибки).

Естественно, для возникновения необнаруженных ошибок, ошибки ТОЛЬКО в контрольной сумме недостаточно. Мне следовало написать так:-"Также, если ошибка попала и на контрольную сумму и исказила ее, то в таком пакете ошибка возможно не будет обнаружена." Сообщение писал в 2 часа ночи. Сами понимаете...

Реально на практике используются одновременно как минимум два исправляющих кода

На практике использутся два кода. Один только обнаруживает ошибки(один из этих: CheckSum - контрольная сумма; CRC (Cyclic Redundancy Check) - контроль циклическим кодом; ParityCheck - проверка на четность), а второй обнаруживает и исправляет ошибки(код Хэмминга или коды Рида-Соломона, а также много других).

на каждом уровне передачи данных по мимо этого приминяют проверку на ошибки в пакетах (или их частях) передаваемых данных.

Согласен. А вообще ошибки ловятся на канальном уровне.

Сообщение от Dry_Run


одиночные пакеты ошибок.




А вот это так и не понял? Что имелось ввиду?

Пакет ошибок - это непрерывная последовательность ошибочных бит.
 

Кочевник

Ховрах-Терорист
Команда форуму
Реєстрація
30.01.08
Місто
Галичина
Телефон
Sams Note 20 Ultra + S8
Re: Проверка на ошибки пакетов данных (CRC, CheckSum, ParityCheck)

"Также, если ошибка попала и на контрольную сумму и исказила ее, то в таком пакете ошибка возможно не будет обнаружена."
Совершенно в дырочку. :kruzhki:
На практике использутся два кода. Один только обнаруживает ошибки(один из этих: CheckSum - контрольная сумма; CRC (Cyclic Redundancy Check) - контроль циклическим кодом; ParityCheck - проверка на четность), а второй обнаруживает и исправляет ошибки(код Хэмминга или коды Рида-Соломона).
Я имел ввиду два кода исправляющих ошибки. Комбинация сверточного кода и блочных кодов (типа Рида-Соломона).
Согласен. А вообще ошибки ловятся на канальном уровне.
Ловятся, но кроме того еще и на сеансовом (яркий пример - проверка CRC заголовка IP-пакета), и на транспортном (CRC-16 всего TCP пакета), и т.д.

Пакет ошибок - это непрерывная последовательность ошибочных бит.
Теперь понял. Обнаружение двух и более пакетов ошибок возможно, но при определенных условиях. Т.е. вероятность необнаружения сохраняется. На данный момент точные условия обнаружения не вспомню.
 
Реєстрація
01.08.09
Місто
Киев
В сетевых контроллерах чипсетов Nvidia nForce 2/3 при установке прилагаемой программы Nvidia Network Management принятые архивные файлы часто не распаковываются из-за ошибок. В чем там проблема?
 

Кочевник

Ховрах-Терорист
Команда форуму
Реєстрація
30.01.08
Місто
Галичина
Телефон
Sams Note 20 Ultra + S8
В сетевых контроллерах чипсетов Nvidia nForce 2/3 при установке прилагаемой программы Nvidia Network Management принятые архивные файлы часто не распаковываются из-за ошибок.
Можно поподробнее? Откуда и куда отправляются архивы. Какое отношение имеет к этому программа Nvidia Network Management?
 

EricX

Morpheus
Реєстрація
26.10.07
Місто
Івано-Франківськ
Более простой пример использования контрольных сумм:
15-й проверочный разряд в кодах IMEI мобильных телефонов
5-й контрольный разряд реквизите банковских счетов украинских банков
и многие другие...
Благодаря чему ошибки можно отловить уже на этапе ручного ввода подобной информации.
 
Зверху