
232 Глава 3. Уровень передачи данных
В настоящее время применяются два подхода. При первом, называющемся
управлением потоком с обратной связью, получатель отсылает отправителю
информацию, разрешающую последнему продолжить передачу или, по крайней
мере, сообщающую о том, как идут дела у получателя. При втором подходе, управ-
лении потоком с ограничением, в протокол встраивается механизм, ограничи-
вающий скорость, с которой передатчики могут передавать данные. Обратная связь
с получателем отсутствует. В этой главе мы рассмотрим только подход с обрат-
ной связью, поскольку второй подход никогда не применяется на уровне переда-
чи данных (впрочем, мы вернемся к нему в главе 5).
Известны различные схемы контроля потока с обратной связью, но большин-
ство из них используют один и тот же принцип. Протокол содержит четко оп-
ределенные правила, определяющие, когда отправитель может посылать следую-
щий кадр. Эти правила часто запрещают пересылку кадра до тех пор, пока
получатель не даст разрешения, либо явно, либо неявно. Например, при установ-
ке соединения получатель может сказать: «Вы можете послать мне сейчас п кад-
ров, но не посылайте следующие кадры, пока я не попрошу вас продолжать».
В данной главе мы рассмотрим различные механизмы, основанные на этом
принципе.
Обнаружение и исправление ошибок
Как было показано в главе 2, телефонная система состоит из трех частей — ком-
мутаторов, межкоммутаторных магистралей и местных телефонных линий. Пер-
вые две части являются сегодня почти полностью цифровыми. Местные теле-
фонные линии до сих пор представляют собой аналоговые медные витые пары и
останутся такими еще в течение нескольких лет, поскольку их замена стоит очень
дорого. И хотя в цифровой части телефонной системы ошибки случаются редко,
в местных телефонных линиях вероятность ошибки очень велика. Кроме того,
в последнее время все большее распространение получает беспроводная связь,
в которой уровень ошибок на несколько порядков выше, чем в соединяющих те-
лефонные станции магистралях. Отсюда следует вывод: ошибки при передаче
данных останутся важным фактором еще на долгие годы. Сейчас мы приступаем
к изучению методов их обнаружения и устранения.
Вследствие особенностей физических процессов, порождающих их, ошибки
в некоторых типах носителей (например, радио) чаще бывают не единичными,
а групповыми. В этом есть как положительные, так и отрицательные стороны. По-
ложительные связаны с тем, что компьютеры всегда посылают данные битовыми
блоками. Представьте себе блок размером в 1000 бит при вероятности ошибки
0,001 на бит. Если бы ошибки были независимыми, то очень большой процент
блоков содержал бы ошибки. Однако если ошибки приходят пакетами, искажая
по 100 бит подряд, то из 100 блоков будут испорчены в среднем только один или
два. Неудобством групп ошибок является то, что их значительно труднее испра-
вить, чем изолированные ошибки.
Обнаружение и исправление ошибок 233
Корректирующее кодирование
Разработчики сетей создали две основные стратегии для борьбы с ошибками. Ка-
ждый метод основывается на добавлении к передаваемым данным некоторой из-
быточной информации. В одном случае этой информации должно быть достаточно,
чтобы выявить, какие данные должны были прийти. В другом случае избыточной
информации должно быть достаточно только для того, чтобы получатель понял,
что произошла ошибка (без указания ее типа) и запросил повторную передачу.
Первая стратегия использует коды, называющиеся корректирующими, или кода-
ми с исправлением ошибок. Вторая — код с обнаружением ошибок. Использова-
ние кода с обнаружением ошибок часто называют прямым исправлением оши-
бок.
Каждая стратегия занимает свою, так сказать, экологическую нишу. В высо-
конадежных каналах, таких как оптоволокно, дешевле использовать код с обна-
ружением ошибок и просто заново передавать случайные поврежденные блоки.
Однако, скажем, беспроводные соединения, в которых может возникать множе-
ство ошибок, чаще используют коды с избыточностью, достаточной для того, чтобы
приемник мог определить, какие данные должны были прийти. Это надежнее,
чем полагаться на повторную передачу, которая тоже, возможно, не сможет прой-
ти без ошибок.
Чтобы понять, как могут обнаруживаться и исправляться ошибки, необходи-
мо рассмотреть подробнее, что же представляет собой ошибка. Обычно кадр со-
стоит из т битов данных (то есть информационных битов) и г избыточных или
контрольных битов. Пусть полная длина кадра равна п (то есть п = т + г). Набор
из п бит, содержащий информационные и контрольные биты, часто называют
«-битовым кодовым словом или кодовой комбинацией.
Если рассмотреть два кодовых слова, например 10001001 и 10110001, можно
определить число различающихся в них соответствующих разрядов. В данном
/примере различаются 3 бита. Для нахождения этого числа нужно сложить два
кодовых слова по модулю 2 (операция «исключающее или») и сосчитать количе-
ство единиц в результате, например:
10001001
10110001
00111000
Количество битов, которыми различаются два кодовых слова, называется ко-
довым расстоянием, или расстоянием между кодовыми комбинациями в смысле
Хэмминга (Hamming, 1950). Смысл этого числа состоит в том, что если два кодо-
вых слова находятся на кодовом расстоянии d, то для преобразования одного ко-
дового слова в другое понадобится d ошибок в одиночных битах.
В большинстве приложений передачи данных все 2
т
возможных сообщений
являются допустимыми, однако благодаря использованию контрольных битов
не все 2" возможных кодовых слов используются. Зная алгоритм формирования
контрольных разрядов, можно построить полный список всех допустимых кодо-
вых слов и в этом списке найти такую пару кодовых слов, кодовое расстояние