ѕодпишитесь на наш Telegram-канал Ѕудьте в курсе последних новостей 👇 😉 ѕодписатьс€
ѕоддержим в трудное врем€ —пециальное предложение на техническую поддержку вашей »“ - инфраструктуры силами наших экспертов ѕодобрать тариф
ѕоставка оборудовани€ √аранти€ и помощь с настройкой. —кидка дл€ наших читателей по промокоду WIKIMERIONET  упить
»нтерфейс статистики Merion Mertics показывает ключевые диаграммы и графики по звонкам, а также историю звонков в формате, который легко поймет менеджер ѕопробовать бесплатно
¬недрение
офисной телефонии
Ўаг на пути к созданию доступных унифицированных коммуникаций в вашей компании ¬недрить
»нтеграци€ с CRM ѕомогаем навести пор€док с данными
и хранить их в единой экосистеме
ѕодключить
»“ Ѕезопасность ”мна€ информационна€ безопасность дл€ вашего бизнеса «аказать
ћерион Ќетворкс

12 минут чтени€

ƒев€та€ часть тут.

Ќи одна среда передачи данных не может считатьс€ совершенной. ≈сли среда передачи €вл€етс€ общей, как радиочастота (RF), существует возможность возникновени€ помех или даже столкновений дейтаграмм. Ёто когда несколько отправителей пытаютс€ передать информацию одновременно. –езультатом €вл€етс€ искаженное сообщение, которое не может быть пон€то предполагаемым получателем. ƒаже специализированна€ среда, така€ как подводный оптический кабель типа point-to-point (световолновой), может испытывать ошибки изЧза деградации кабел€ или точечных событий-даже, казалось бы, безумных событий, таких как солнечные вспышки, вызывающие излучение, которое, в свою очередь, мешает передаче данных по медному кабелю.

—уществует два ключевых вопроса, на которые сетевой транспорт должен ответить в области ошибок:

  •  ак можно обнаружить ошибки при передаче данных?
  • „то должна делать сеть с ошибками при передаче данных?

ƒалее рассматриваютс€ некоторые из возможных ответов на эти вопросы.


ќбнаружение ошибок

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

ѕроверка четности Ч это самый простой механизм обнаружени€. —уществуют два взаимодополн€ющих алгоритма проверки четности. ѕри четной проверке четности к каждому блоку данных добавл€етс€ один дополнительный бит. ≈сли сумма битов в блоке данных четна€Что есть если в блоке данных имеетс€ четное число битов 1, то дополнительный бит устанавливаетс€ равным 0. Ёто сохран€ет четное состо€ние четности блока. ≈сли сумма битов нечетна, то дополнительный бит устанавливаетс€ равным 1, что переводит весь блок в состо€ние четной четности. Ќечетна€ четность использует ту же самую дополнительную битную стратегию, но она требует, чтобы блок имел нечетную четность (нечетное число 1 бит). ¬ качестве примера вычислите четную и нечетную четность дл€ этих четырех октетов данных:

00110011 00111000 00110101 00110001

ѕростой подсчет цифр показывает, что в этих данных есть 14 Ђ1ї и 18 Ђ0ї. „тобы обеспечить обнаружение ошибок с помощью проверки четности, вы добавл€ете один бит к данным, либо дела€ общее число Ђ1ї в недавно увеличенном наборе битов четным дл€ четной четности, либо нечетным дл€ нечетной четности. Ќапример, если вы хотите добавить четный бит четности в этом случае, дополнительный бит должен быть установлен в Ђ0ї. Ёто происходит потому, что число Ђ1ї уже €вл€етс€ четным числом. ”становка дополнительного бита четности на Ђ0ї не добавит еще один Ђ1ї и, следовательно, не изменит, €вл€етс€ ли общее число Ђ1ї четным или нечетным. “аким образом, дл€ четной четности конечный набор битов равен:

00110011 00111000 00110101 00110001 0

— другой стороны, если вы хотите добавить один бит нечетной четности к этому набору битов, вам нужно будет сделать дополнительный бит четности Ђ1ї, так что теперь есть 15 Ђ1ї, а не 14. ƒл€ нечетной четности конечный набор битов равен:

00110011 00111000 00110101 00110001 1

„тобы проверить, были ли данные повреждены или изменены при передаче, получатель может просто отметить, используетс€ ли четна€ или нечетна€ четность, добавить число Ђ1ї и отбросить бит четности. ≈сли число Ђ1ї не соответствует используемому виду четности (четное или нечетное), данные повреждены; в противном случае данные кажутс€ такими же, как и первоначально переданные.

Ётот новый бит, конечно, передаетс€ вместе с оригинальными битами. „то произойдет, если сам бит четности каким-то образом поврежден? Ёто на самом деле нормально - предположим, что даже проверка четности на месте, и передатчик посылает

00110011 00111000 00110101 00110001 0

ѕриемник, однако, получает

00110011 00111000 00110101 00110001 1

—ам бит четности был изменен с 0 на 1. ѕриемник будет считать Ђ1ї, определ€€, что их 15. ѕоскольку даже проверка четности используетс€, полученные данные будут помечены как имеющие ошибку, даже если это не так. ѕроверка на четность потенциально слишком чувствительна к сбо€м, но в случае обнаружени€ ошибок лучше ошибитьс€ в начале.

≈сть одна проблема с проверкой четности: она может обнаружить только один бит в передаваемом сигнале. Ќапример, если даже четность используетс€, и передатчик отправл€ет

00110011 00111000 00110101 00110001 0

ѕриемник, однако, получает

00110010 00111000 00110101 00110000 0

ѕриемник подсчитает число Ђ1ї и обнаружит, что оно равно 12. ѕоскольку система использует четную четность, приемник будет считать данные правильными и обработает их в обычном режиме. ќднако оба бита, выделенные жирным шрифтом, были повреждены. ≈сли измен€етс€ четное число битов в любой комбинации, проверка четности не может обнаружить изменение; только когда изменение включает нечетное число битов, проверка четности может обнаружить изменение данных.

÷иклическа€ проверка избыточности (Cyclic Redundancy Check - CRC) может обнаруживать более широкий диапазон изменений в передаваемых данных, использу€ деление (а не сложение) в циклах по всему набору данных, по одной небольшой части за раз. –абота с примером - лучший способ пон€ть, как рассчитываетс€ CRC. –асчет CRC начинаетс€ с полинома, как показано на рисунке 1.

Ќа рис. 1 трехчленный многочлен x3 + x2 + 1 расширен, чтобы включить все члены, включа€ члены, предшествующие 0 (и, следовательно, не вли€ют на результат вычислени€ независимо от значени€ x). «атем эти четыре коэффициента используютс€ в качестве двоичного калькул€тора, который будет использоватьс€ дл€ вычислени€ CRC.

–ис. 1 ѕолином, используемый дл€ расчета CRC

„тобы выполнить CRC, начните с исходного двоичного набора данных и добавьте три дополнительных бита (поскольку исходный полином без коэффициентов имеет три члена; следовательно, это называетс€ трехбитной проверкой CRC), как показано здесь:

10110011 00111001 (оригинальные данные)
10110011 00111001 000 (с добавленными битами CRC)

Ёти три бита необходимы дл€ обеспечени€ того, чтобы все биты в исходных данных были включены в CRC; поскольку CRC перемещаетс€ слева направо по исходным данным, последние биты в исходных данных будут включены только в том случае, если эти заполн€ющие биты включены. “еперь начните с четырех битов слева (потому что четыре коэффициента представлены в виде четырех битов). »спользуйте операцию Exclusive OR (XOR) дл€ сравнени€ крайних левых битов с битами CRC и сохраните результат, как показано здесь:

10110011 00111001 000 (дополненные данные)
1101 ( онтрольные биты CRC)
----
01100011 00111001 000 (результат XOR)

XOR'инг двух двоичных цифр приводит к 0, если эти две цифры совпадают, и 1, если они не совпадают.  онтрольные биты, называемые делителем, перемещаютс€ на один бит вправо (некоторые шаги здесь можно пропустить), и операци€ повтор€етс€ до тех пор, пока не будет достигнут конец числа:

10110011 00111001 000
1101
01100011 00111001 000
 1101
00001011 00111001 000
    1101
00000110 00111001 000
     110 1
00000000 10111001 000
         1101
00000000 01101001 000
         1101
00000000 00000001 000
                1 101
00000000 00000000 101

CRC находитс€ в последних трех битах, которые были первоначально добавлены в качестве заполнени€; это "остаток" процесса разделени€ перемещени€ по исходным данным плюс исходное заполнение. ѕолучателю несложно определить, были ли данные изменены, оставив биты CRC на месте (в данном случае 101) и использу€ исходный делитель поперек данных, как показано здесь:

10110011 00111001 101
1101
01100011 00111001 101
 1101
00001011 00111001 101
    1101
00000110 00111001 101
     110 1
00000000 10111001 101
         1101
00000000 01101001 101
          1101
00000000 00000001 101
                1 101
00000000 00000000 000

≈сли данные не были изменены, то результат этой операции всегда должен быть равен 0. ≈сли бит был изменен, результат не будет равен 0, как показано здесь:

10110011 00111000 000
1101
01100011 00111000 000
 1101
00001011 00111000 000
    1101
00000110 00111000 000
     110 1
00000000 10111000 000
         1101
00000000 01101000 000
          1101
00000000 00000000 000
                1 101
00000000 00000001 000
CRC может показатьс€ сложной операцией, но она играет на сильных сторонах компьютераЧбинарных операци€х конечной длины. ≈сли длина CRC задаетс€ такой же, как у стандартного небольшого регистра в обычных процессорах, скажем, восемь бит, вычисление CRC-это довольно простой и быстрый процесс. ѕроверка CRC имеет то преимущество, что она устойчива к многобитовым изменени€м, в отличие от проверки четности, описанной ранее.

»справление ошибок

ќднако обнаружение ошибки Ч это только половина проблемы.  ак только ошибка обнаружена, что должна делать транспортна€ система? ≈сть, по существу, три варианта.

“ранспортна€ система может просто выбросить данные. ¬ этом случае транспорт фактически переносит ответственность за ошибки на протоколы более высокого уровн€ или, возможно, само приложение. ѕоскольку некоторым приложени€м может потребоватьс€ полный набор данных без ошибок (например, система передачи файлов или финансова€ транзакци€), у них, веро€тно, будет какой-то способ обнаружить любые пропущенные данные и повторно передать их. ѕриложени€, которые не забот€тс€ о небольших объемах отсутствующих данных (например, о голосовом потоке), могут просто игнорировать отсутствующие данные, восстанавлива€ информацию в приемнике, насколько это возможно, с учетом отсутствующей информации.

“ранспортна€ система может подать сигнал передатчику, что произошла ошибка, и позволить передатчику решить, что делать с этой информацией (как правило, данные при ошибке будут повторно переданы).

“ранспортна€ система может выйти за рамки отбрасывани€ данных, включив достаточное количество информации в исходную передачу, определить, где находитс€ ошибка, и попытатьс€ исправить ее. Ёто называетс€ ѕр€мой коррекцией ошибок (Forward Error Correction - FEC).  оды ’эмминга, один из первых разработанных механизмов FEC, также €вл€етс€ одним из самых простых дл€ объ€снени€.

 од ’эмминга лучше всего объ€снить на примере - дл€ иллюстрации будет использована таблица 1.

“аблица є 1 »ллюстраци€ кода ’эмминга

¬ “аблице є 1:

  •  аждый бит в 12-битном пространстве, представл€ющий собой степень двух (1, 2, 4, 6, 8 и т. д.) и первый бит, устанавливаетс€ в качестве битов четности.
  • 8-битное число, которое должно быть защищено с помощью FEC, 10110011, распределено по оставшимс€ битам в 12-битном пространстве.
  •  аждый бит четности устанавливаетс€ равным 0, а затем четность вычисл€етс€ дл€ каждого бита четности путем добавлени€ числа Ђ1ї в позиции, где двоичный бит имеет тот же бит, что и бит четности. ¬ частности:
    • P1 имеет набор крайних правых битов в своем битовом номере; другие биты в числовом пространстве, которые также имеют набор крайних правых битов, включены в расчет четности (см. вторую строку таблицы, чтобы найти все позиции битов в номере с набором крайних правых битов). ќни указаны в таблице с X в строке P1. ќбщее число Ђ1ї-нечетное число, 3, поэтому бит P1 устанавливаетс€ равным 1 (в этом примере используетс€ четна€ четность).
    • P2 имеет второй бит из правого набора; другие биты в числовом пространстве, которые имеют второй из правого набора битов, включены в расчет четности, как указано с помощью X в строке P2 таблицы. ќбщее число Ђ1ї-четное число, 4, поэтому бит P2 установлен в 0.
    • P4 имеет третий бит из правого набора, поэтому другие биты, которые имеют третий бит из правого набора, имеют свои номера позиций, как указано с помощью X в строке P3. ¬ отмеченных столбцах есть нечетное число Ђ1ї, поэтому бит четности P4 установлен на 1.

„тобы определить, изменилась ли кака€-либо информаци€, получатель может проверить биты четности таким же образом, как их вычисл€л отправитель; общее число 1s в любом наборе должно быть четным числом, включа€ бит четности. ≈сли один из битов данных был перевернут, приемник никогда не должен найти ни одной ошибки четности, потому что кажда€ из битовых позиций в данных покрыта несколькими битами четности. „тобы определить, какой бит данных €вл€етс€ неправильным, приемник добавл€ет позиции битов четности, которые наход€тс€ в ошибке; результатом €вл€етс€ положение бита, которое было перевернуто. Ќапример, если бит в позиции 9, который €вл€етс€ п€тым битом данных, перевернут, то биты четности P1 и P8 будут ошибочными. ¬ этом случае 8 + 1 = 9, так что бит в позиции 9 находитс€ в ошибке, и его переворачивание исправит данные. ≈сли один бит четности находитс€ в ошибкеЧнапример, P1 или P8Что это тот бит четности, который был перевернут, и сами данные верны.

¬ то врем€ как код ’эмминга гениален, есть много битовых шаблонов-перевертышей, которые он не может обнаружить. Ѕолее современный код, такой как Reed-Solomon, может обнаруживать и исправл€ть более широкий диапазон условий ошибки, добавл€€ меньше дополнительной информации в поток данных.

—уществует большое количество различных видов CRC и кодов исправлени€ ошибок, используемых во всем мире св€зи. ѕроверки CRC классифицируютс€ по количеству битов, используемых в проверке (количество битов заполнени€ или, точнее, длины полинома), а в некоторых случа€х - по конкретному применению. Ќапример, универсальна€ последовательна€ шина использует 5-битный CRC (CRC-5-USB); √лобальна€ система мобильной св€зи (GSM), широко используемый стандарт сотовой св€зи, использует CRC-3-GSM; ћультидоступ с кодовым разделением каналов (CDMA), другой широко используемый стандарт сотовой св€зи, использует CRC-6-CDMA2000A, CRC-6-CDMA2000B и CRC-30; и некоторые автомобильные сети (CAN), используемые дл€ соединени€ различных компонентов в автомобиле, используют CRC-17-CAN и CRC-21-CAN. Ќекоторые из этих различных функций CRC €вл€ютс€ не единственной функцией, а скорее классом или семейством функций со многими различными кодами и опци€ми внутри них.