Электронная библиотека книг Александра Фролова и Григория Фролова.
Shop2You.ru Создайте свой интернет-магазин
Библиотека
Братьев
Фроловых

Программирование модемов

© Александр Фролов, Григорий Фролов
Том 4, М.: Диалог-МИФИ, 1993, 236 стр.

[Назад] [Содеожание] [Дальше]

6.1. Протоколы коррекции ошибок нижнего уровня

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

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

Общая форма передачи данных по протоколам с коррекцией ошибок следующая: данные передаются отдельными блоками (пакетами) по 16 - 20000 байт, в зависимости от качества связи. Каждый блок снабжается заголовком, в котором указана проверочная информация, например контрольная сумма блока. Принимающий компьютер самостоятельно подсчитывает контрольную сумму каждого блока и сравнивает ее с контрольной суммой из заголовка блока. Если эти две контрольные суммы совпали, принимающая программа считает, что блок передан без ошибок. В противном случае принимающий компьютер передает передающему запрос на повторную передачу этого блока.

Протоколы коррекции ошибок могут быть реализованы как на аппаратном уровне, так и на программном. Аппаратный уровень реализации более эффективен. Быстродействие аппаратной реализации протокола MNP примерно на 30% выше, чем программной.

Мы рассмотрим наиболее распространненные протоколы MNP1-10, V.24, V.24bis, Xmodem, Ymodem, Zmodem, Kermit, UUPC.

MNP-протоколы

MNP (Microcom Network Protocols) - серия наиболее распространенных аппаратных протоколов, впервые реализованная на модемах фирмы Microcom. Эти протоколы обеспечивают автоматическую коррекцию ошибок и компрессию передаваемых данных.

На момент написания книги известны десять протоколов MNP1 - MNP10. Приведем их описания.

MNP1. Протокол коррекции ошибок, использующий асинхронный полудуплексный метод передачи данных. Это самый простой из протоколов MNP.

MNP2. Протокол коррекции ошибок, использующий асинхронный дуплексный метод передачи данных.

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

Так как при асинхронной передаче используется десять бит на байт - восемь бит данных, стартовый бит и стоповый бит, а при синхронной только восемь, то в этом кроется возможность ускорить обмен данными на 20%.

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

Эффективность этого метода состовляет около 20% по сравнению с простой передачей данных.

MNP5. Дополнительно к методам MNP4, MNP5 использует простой метод сжатия передаваемой информации. Символы часто встречающиеся в передаваемом блоке кодируются цепочками битов меньшей длины, чем редко встречающиеся символы. Дополнительно кодируются длинные цепочки одинаковых символов. Обычно при этом текстовые файлы сжимаются до 35% своей исходной длины. Вместе с 20% улучшениями в MNP4 это дает повышение эффективности до 50%.

Заметим, что если вы передаете уже сжатые (например, архиватором ARJ) данные, а в большинстве случаев это так и есть, дополнительного увеличения эффективности за счет сжатия данных модемом не происходит.

MNP6. Дополнительно к методам протокола MNP5 автоматически переключается между дуплексным и полудуплексным методами передачи в зависимости от типа информации. Протокол MNP6 также обеспечивает совместимость с протоколом V.29.

MNP7. По сравнению с ранними протоколами использует более эффективный метод сжатия данных.

MNP8. Нет информации.

MNP9. Использует протокол V.32 и соответствующий метод работы, обеспечивающий совместимость с низкоскоростными модемами.

MNP10 предназначен для обеспечения связи на сильно зашумленных линиях, таких, как линии сотовой связи, междугородные линии, сельские линии. Это достигается при помощи следующих методов:

  • Многократного повторения попытки установить связь;
  • Изменения размера пакетов в соответствии с изменением уровня помех на линии;
  • Динамического изменения скорости передачи в соответствии с уровнем помех линии.

При использовании модемов с аппаратной поддержкой протокола MNP, как правило, можно установить скорость работы последовательного порта вдвое выше скорости модема.

Все протоколы MNP совместимы между собой снизу вверх. При установлении связи происходит установка наивысшего возможного уровня MNP-протокола. Если же один из связывающихся модемов не поддерживает протокол MNP, то MNP-модем работает без MNP-протокола.

Режимы MNP-модемов

MNP-модем обеспечивает следующие режимы передачи данных:

  • Стандартный режим. Обеспечивает буферизацию данных, что позволяет работать с различными скоростями передачи данных между компьютером и модемом и между двумя модемами. В результате для повышения эффективности передачи данных вы можете установить скорость обмена компьютер - модем выше, чем модем - модем. В стандартном режиме работы модем не выполняет аппаратной коррекции ошибок.
  • Режим прямой передачи. Данный режим соответствует обычному модему, не поддерживающему MNP-протокол. Буферизация данных не производится и аппаратная коррекция ошибок не выполняется.
  • Режим с коррекцией ошибок и буферизацией. Это стандартный режим работы при связи двух MNP-модемов. Если удаленный модем не поддерживает протокол MNP, связь не устанавливается и модем освобождает телефонную линию.
  • Режим с коррекцией ошибок и автоматической настройкой. Режим используется, когда заранее не известно, поддерживает ли удаленный модем протокол MNP. В начале сеанса связи после определения режима удаленного модема устанавливается один из трех других режимов.

Команды модемов с протоколом MNP

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

\An Устанавливает максимальный размер блока, используемый протоколом MNP при передаче данных. Для увеличения скорости обмена по хорошим линиям увеличте размер блока. Если связь неустойчива и возникает много ошибок, используйте более короткие блоки, так как это может уменьшить число повторных передач ошибочных блоков.

  \A0 - максимальный размер блока - 64 байт.

  \A1 - максимальный размер блока - 128 байт.

  \A2 - максимальный размер блока - 192 байт.

  \A3 - максимальный размер блока - 256 байт.

%An Определяет код, используемый командой \Cn при переходе из режима передачи данных с буферизацией и режима автоматической настройки в стандартный режим. Символ может иметь код от 0 до 127.

\Bn Команда вызывает передачу сигнала прерывания (BREAK). Длительность сигнала прерывания определяется параметром n (n от 1 до 9) в десятых долях секунды. Режим обработки прерывания определяется параметром команды \K.

\Cn Установка размера буфера для режимов передачи данных с буферизацией и для режима с автоматической настройкой.

  \C0 - отменяет буферизацию и переходит в стандартный режим.

  \C1 - устанавливает размер буфера 200 байт.

  \C2 - разрешает переход в стандартный режим, если будет принят символ, определенный командой %An.

%Cn Управляет сжатием данных при передаче их по линии связи.

  %C0 - запрещает сжатие данных (MNP5).

  %C1 - разрешает сжатие данных (MNP5).

\En Управление эхо-печатью символов.

  \E0 - запрещает эхо-печать символов.

  \E1 - разрешает эхо-печать символов.

\Gn Устанавливает протокол обмена между модемами с использованием управляющих символов XON/XOFF. Осторожней используйте протокол XON/XOFF. Когда вы передаете двоичные файлы, после передачи символа XOFF передача данных приостановится до получения символа XON.

  \G0 - отменяет протокол XON/XOFF.

  \G1 - устанавливает протокол XON/XOFF.

\Jn Управляет скоростями передачи данных.

  \J0 - разрешает использование различных скоростей передачи данных между модемами и между модемом и компьютером. Это позволяет повысить эффективность MNP протоколов.

  \J1 - запрещает использование различных скоростей передачи данных между модемами и между модемом и компьютером.

\Kn Управляет процессом обработки прерывания после выполнения удаленным модемом команды \B. Подробности можно узнать из документации на ваш модем.

\Nn Устанавливает режим передачи данных.

  \N0 - стандартный режим с буферизацией.

  \N1 - режим прямой передачи.

  \N2 - режим передачи с коррекцией ошибок и с буферизацией.

  \N3 - режим передачи с коррекцией ошибок и автоматической настройкой.

\O Переводит модем из командного режима в режим передачи данных. Команда заставляет модем работать в режиме вызова независимо от того, является модем вызывающим или сам отвечает на вызов другого модема. В случае неудачи модем переходит в стандартный режим.

\P Команда производит запись телефонного номера в энергонезависимую память модема.

\Qn Команда устанавливает метод управления потоком между модемами и модемом и компьютером. В зависимости от возможностей оборудования такое управление может быть запрещено или разрешено. Если компьютер не поддерживает управление потоками данных, то такое управление запрещается; при этом скорость обмена данными через порт RS-232-C должна быть установлена равной или большей скорости обмена данными по линии. В противном случае допускается работа с различными скоростями. При пересылке двоичных данных рекомендуется использовать метод управления потоками данных с помощью сигналов CTS и RTS порта RS-232-C.

  \Q0 - управление потоками данных запрещается.

  \Q1 - определяет обмен данными с помощью протокола XON/XOFF, где посылка символа XOFF приостанавливает передачу данных до поступления символа XON, который возобновляет передачу.

  \Q2 - устанавливает управление потоком данных с помощью сигналов CTS и RTS порта RS-232-C.

\S Запрашивает получение от модема его активной конфигурации. Это очень полезная команда, позволяющая определить текущее состояние модема.

\Tn Установка таймаута. Значение n меняется в интервале от 0 до 90 минут. Если в течение этого времени данные не передавались, связь разрывается. Значение n, равное 0, запрещает данную функцию.

\U Переводит модем из командного режима в режим передачи данных. При этом модем переключается в режим ответа независимо от того отвечает модем на звонок или сам вызывает другой модем.

\Vn Модификация сообщений от модема. При n = 0 результат представляется в стандартной форме, а при n = 1 - в соответствии со стандартом MNP:

Стандартная форма   Стандарт MNP  
CONNECT (1) CONNECT 0300/REL (20)
CONNECT 1200 (5) CONNECT 1200/REL (22)
CONNECT 2400 (10) CONNECT 2400/REL (23)

%V Вывод информации, определенной фирмой - производителем модема.

\Xn Команда определяет, передавать или нет распознанные символы XON/XOFF между модемом и компьютером. При n = 0 символы не передаются, а при n = 1 - передаются.

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

\Z Переключение модема из режима с коррекцией ошибок и буферизацией в стандартный режим в момент установления связи. Заметим, что даные, находящиеся в буфере, будут утеряны.

Протоколы V.42 и V.42 bis

V.42. Протокол с коррекцией ошибок и преобразованием асинхронный-синхронный. Протокол использует метод компрессии, при котором определяется частота появления отдельных символьных строк и происходит их замена на последовательности символов меньшей длины (на токены). Этот метод компрессии носит название Lempel-Ziv. Данный метод компрессии обеспечивает 50% сжатие текстовых файлов. Вместе с 20% выигрышем от синхронного преобразования это увеличивает эффективность на 60%.

[Назад] [Содеожание] [Дальше]