"Системы ДЭС"

2. Модемы в системах ДЭС

2.1. Общие принципы компьютерной телекоммуникации. Основные понятия и термины

В простейшем случае система передачи данных между точками А и Б состоит из следующих основных частей:

- Оконечного оборудования данных в точке А
- Интерфейса (или стыка) между оконечным оборудованием данных и аппаратурой канала данных
- Аппаратуры канала данных в точке А
- Канала передачи между точками А и Б
- Аппаратуры канала данных в точке Б
- Интерфейса (или стыка) аппаратуры канала данных
- Оконечного оборудования данных в точке Б

Рис. 2.1. Типовая система передачи данных

Основные понятия и термины:

- Скорость передачи данных
- Управление потоком
- Установление соединений для передачи данных
- Телекоммуникационное программное обеспечение
- Синхронный и асинхронный режимы

## 2.2. Классификация модемов

По области применения:

- для коммутируемых телефонных каналов;
- для выделенных (арендуемых) телефонных каналов;
- для физических соединительных/абонентских линий (xDSL-модемы);
- для цифровых систем передачи;
- для сотовых систем связи;
- для пакетных радиосетей;
- для спутниковых каналов связи;
- для локальных радиосетей;
- для телевизионных кабельных сетей.

По методу передачи:

- асинхронные;
- синхронные;
- асинхронно-синхронные.

По интеллектуальным возможностям:

- без системы управления;
- поддерживающие набор АТ-команд;
- с поддержкой команд протокола V.25bis;
- с фирменной системой команд;
- поддерживающие протоколы сетевого управления.

По конструкции:

- внешние;
- внутренние;
- портативные;
- групповые.

Модемы также можно классифицировать в соответствии с реализованными в них протоколами. Все протоколы, регламентирующие те или иные аспекты функционирования модемов, могут быть отнесены к двум большим группам:

- международные;
- фирменные.

#### Рекомендация V.22bis

Дуплексный модем на скорость 2400 бит/с с применением метода частотного разделения, стандартизированный для использования на коммутируемой телефонной сети общего пользования и двухточечных двухпроводных арендованных каналах телефонного типа.

#### Рекомендация V.42

МККТТ в качестве стандарта на защиту от ошибок в модемах принял в Рекомендации V.42 протокол LAPM (Line Access Protocol for Modems).

#### Рекомендация V.42bis

Сжатие данных, наряду с защитой от ошибок, является той функцией, введение которой в модемы позволило значительно повысить их эффективность и, тем самым, продлить существование модемов на этапе перехода к полностью цифровым сетям. В то время, как протокол MNP (класс 5) стал фактическим промышленным стандартом на сжатие данных в модемах, МККТТ в качестве Рекомендации V.42bis принял метод сжатия данных BTLZ (British Telecom Lempel-Ziv), разработанный компанией British Telecom.

## 2.3. Устройство модемов

Рис. 2.3. Структурная схема модема

## 2.4. Интерфейсы модемов

Разводка разъемов DB25 и DB9 со стороны последовательного асинхронного адаптера (COM-порта):

Номер контакта | Назначение контакта и сигналы интерфейса RS-232 | Вход или выход
DB25 | DB9
1 | - | Защитное заземление (Frame Ground, FG) | -
2 | 3 | Передаваемые данные (Transmitted Data, TD) | Выход
3 | 2 | Принимаемые данные (Received Data, RD) | Вход
4 | 7 | Запрос для передачи (Request to Send, RTS) | Выход
5 | 8 | Сброс для передачи (Clear to Send, CTS) | Вход
6 | 6 | Готовность данных (Data Set Ready, DSR) | Вход
7 | 5 | Сигнальное заземление (Signal Ground, SG) | -
8 | 1 | Детектор принимаемого с линии сигнала (Data Carrier Detect, DCD) | Вход
9-19 | - | Не используется | -
20 | 4 | Готовность выходных данных (Data Terminal Ready, DTR) | Выход
21 | - | Не используется | -
22 | 9 | Индикатор вызова (Ring Indicator, RI) | Вход
23-25 | - | Не используется | -

Интерфейс RS-232 (Recommended Standard - 232 ) определяет обмен между устройствами двух типов: DTE (Data Terminal Equipment - терминальное устройство) и DCE (Data Communication Equipment - устройство связи). Разработан ассоциацией EIA (Electronic Industries Association of America).

### Индикаторы внешнего модема

MR Modem Ready - Модем готов к обмену данными

HS High Speed - Модем работает на максимально возможной для него скорости

АА Auto Answer - Модем находится в режиме автоответа

CD Carrier Detect - Индикатор зажигается, когда модем обнаруживает несущую частоту на линии

ОН Off-Hook - Индикатор горит, если трубка снята (линяя занята)

SD Send Data - Индикатор мигает, когда модем передает данные в линию

RD Receive Data - Индикатор мигает, когда модем принимает данные с линии

TD Terminal Ready - Компьютер готов к обмену данными с модемом

## 2.5. Интеллектуальные возможности модемов. Команды управления модемами (АТ-язык)

Все команды, передаваемые компьютером модему, должны начинаться префиксом AT (ATtention - внимание) и заканчиваться символом возврата каретки (<CR>). Команда А/ и Escape-последовательность "+++" не требуют для себя префикса AT.

После префикса AT могут идти одна или несколько команд.

При передаче модему команд они сначала заносятся во внутренний буфер, который, как правило, имеет размер 40 символов. Команды, записанные в буфер модема, исполняются после поступления символа возврата каретки.

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

### Примеры команд модема

AT - Начало (префикс) командной строки. После получения этой команды модем автоматически подстраивает скорость передачи и формат данных к параметрам компьютера.

А - Автоответ. Если режим автоматического ответа выключен (S0=0), команда используется для ответа на звонок от удаленного модема. Команда заставляет модем снять трубку (подключиться к линии) и установить связь с удаленным модемом.

А/ - Модем повторяет последнюю введенную команду.

Ds - Команда используется для набора номера. Команда состоит из префикса AT, символа D и телефонного номера, в состав которого могут входить следующие управляющие модификаторы: P или T. Эти модификаторы производят выбор между импульсной и тональной системой набора (в зависимости от типа конкретной АТС).

S - Модем набирает телефонный номер, записанный в его памяти. Эта команда выполняется только для модемов, имеющих встроенную энергонезависимую память и возможность записи в нее номеров телефонов.

En - Управление эхо-выводом команд, передаваемых модему. После команды Е1 модем возвращает каждый знак, передаваемый ему, обратно компьютеру, что позволяет узнать, как работает связь модема и компьютера. Команда Е0 запрещает эхо-вывод.

Hn - Эта команда используется для управления телефонной линией. Если n=0, то происходит отключение модема от линии, если n=1, модем подключается к линии.

In - Выдает идентификационный код модема и контрольную сумму содержимого памяти модема- Если n=0, модем сообщает свой идентификационный код, если n=1, модем проводит подсчет контрольной суммы EPROM и передает ее компьютеру, n=2 - модем проверяет состояние внутренней памяти ROM и возвращает сообщение ОК или CHECKSUM ERROR (ошибка контрольной суммы). При n=3 выдаётся состояние модема.

Ln - Установка громкости сигнала внутреннего динамика: n=0,1 соответствует низкой громкости, n=2 - средней и n=3 - максимальной.

Мn - Управление внутренним динамиком. При n=0 динамик выключен. При n=1 динамик включен только во время набора номера и выключен после обнаружения несущей. При n=2 динамик включен все время. При n=3 динамик включается после набора последней цифры номера и выключается после обнаружения несущей отвечающего модема.

Qn - Управление ответом модема на АТ-команды. При n=0 ответ разрешен, при n=1 ответ запрещен. Независимо от состояния Q0 или Q1 модем всегда сообщает содержание S-регистров, свой идентификационный код, контрольную сумму памяти и результаты теста.

On - Команда переводит модем из командного режима в режим передачи данных. При этом модем отвечает CONNECT. Команда O и O0 переводят модем в режим передачи данных без инициирования последовательности сигналов проверки линии связи. Команда O1 переводит модем в режим передачи данных и заставляет модем передать последовательности сигналов проверки линии связи, т.е. производить повторное квитирование с удалённым модемом.

Sr? - Чтение содержимого регистра модема, имеющего номер r.

Sr=n - Запись в регистр модема с номером r числа n. Число n может иметь значения от 0 до 255. Все команды модифицируют содержимое одного или более S-регистров. Некоторые S-регистры содержат временные параметры, которые можно поменять только командой S.

Vn - Производит выбор вида ответа модема на АТ-команды При n=0 ответ происходит цифровым кодом, а при n=1 модем отвечает в символьном виде на английском языке. Использование цифровой формы ответа облегчает обработку результатов выполнения команды при написании собственных программ управления модемом.
Примеры ответов модема

ОК | 0 | Модем выполнил команду без ошибок
RING | 2 | Модем обнаружил сигнал звонка
NO CARRIER | 3 | Модем потерял несущую частоту
ERROR | 4 | Ошибка в командной строке
NO DIALTONE | 6 | Отсутствие сигнала станции при снятии трубки
BUSY | 7 | Модем обнаружил сигнал "занято"
NO ANSWER | 8 | Нет ответа после ожидания сигнала
CONNECT 2400 | 10 | Модем установил связь со скоростью 2400 bps

Yn - Способ отключения модема от линии. Существуют два способа отключения модема от линии: стандартный, когда модем получает неактивный сигнал DTR от компьютера, и принудительный, когда модем получает от удаленного модема сигнал перерыва BREAK. Команда АТН0 направляет удаленному модему сигнал перерыва BREAK, который длится 4с. При n=0 модем отключается стандартно, при n=1 модем отключается после получения из линии сигнала BREAK.

Z - Сбрасывает конфигурацию модема. При этом во все регистры загружаются значения, принятые по умолчанию. Значения регистров, принятые по умолчанию берутся из энергонезависимой памяти модема или, если модем такой памяти не имеет, из постоянной памяти или определяется исходя из переключателей на плате модема.

+++ - Escape-последовательность, используемая для перехода в командный режим работы модема. Благодаря этой команде можно перейти из режима передачи данных модемом в командный режим работы без разрыва связи. Модем требует тишины перед и после направления этой Escape-последовательности. Величина этого промежутка тишины определена в регистре S12.

&Cn - Данная команда управляет сигналом DCD порта RS-232-C. При n=0 сигнал DCD всегда активен, а при n=1 сигнал DCD устанавливается только тогда, когда модем обнаруживает несущую частоту от удаленного модема.

&Dn - Управление сигналом DTR. При n=0 модем игнорирует DTR, n=1 - при потере сигнала DTR модем переходит в командный режим работы, n=2 - при потере сигнала DTR модем прекращает связь, отключается от линии, отключает режим автоответа и переходит в командный режим работы, n=3 - при потере сигнала DTR автоматически сбрасывается конфигурация модема, как при выполнении команды ATZ. Модем обнаруживает потерю сигнала DTR, если сигнал DTR отсутствует дольше времени, определенного в регистре модема S25.

&F- модем устанавливает конфигурацию, записанную в постоянную память.

&Ln - Вид линии связи. При n=0 передача по обычным (коммутируемым) линиям связи, n=1 передача по выделенным каналам.

&Mn - Установка асинхронно/синхронного режима работы. При n=0 устанавливается асинхронный режим, при n=1,2,3 устанавливается синхронный режим.

&Pn - Установка импульсного коэффициента набора номера в соответствии с различными стандартами. При n=0 - коэффициент заполнения замыкание/интервал 39/61 (Америка), при n=1 - 33/67 (Англия).

&Rn - Управление сигналом CTS: n=0 - сигнал переходит в активное состояние после получения сигнала RTS. Данные, передаваемые модему до поступления сигнала RTS, игнорируются. Если n=1 модем игнорирует RTS.

&Sn - Управление сигналом DSR порта RS-232-C. При n=0 сигнал DSR активен всегда, а при n=1 сигнал DSR активизируется только после окончания этапа установления связи между модемами.

&Tn - Тестирование модема. От n зависит вид теста.

&V - Модем показывает свою текущую конфигурацию и телефонные номера, записанные в энергонезависимой памяти.

&W - Модем записывает свою текущую конфигурацию в энергонезависимую память. При сбросе модема будет загружена именно эта конфигурация.

&Zn - Используется для записи телефонного номера в энергонезависимую память модема. Количество телефонов зависит от модели модема.

### Режимы работы модема

## 2.6. Протоколы передачи файлов

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

Основными задачами протоколов передачи файлов являются:
> обеспечение безошибочной передачи данных;
> управление потоком передаваемых данных;
> передача вспомогательной информации;
> защита соединения.

Перед непосредственной передачей файла необходимо установить соединение на уровне канала данных (уровень 2 модели OSI), передать информацию о имени файла, его размере, дате последней его модификации и т.п., а после передачи — произвести разъединение канала данных. Все это осуществляется при помощи вспомогательной служебной информации, передаваемой по каналу связи.

Среди протоколов, рассчитанных на отсутствие аппаратной защиты от ошибок, можно выделить широко распространенные протоколы XModem, XModem-CRC, XModem-1 К, YModem, Kermit, ZModem и ряд других.

Если же применяются модемы с аппаратной коррекцией ошибок (поддерживающие протоколы типа MNP или V.42), то предпочтительнее использовать протоколы передачи файлов типа YModem-g и ZModem. В этом случае исключается потеря времени на повторный запрос данных, переданных с ошибками. Протокол Zmodem допускает оба варианта применения.

### Протокол XModem

Один из первых протоколов передачи файлов между ПК. Разработан в 1977 году Вардом Христенсеном. Протокол XModem широко использовался в справочных службах, вводился в недорогие связные программы для ПК и фактически стал стандартом для связи между ПК с использовнием модемов.

Последовательность действий, выполняемых при передаче файла с помощью протокола XModem, показана на рисунке.

ПЕРЕДАТЧИК |  | Направление передачи |  | ПРИЕМНИК
|  | <===== |  | < NAK >
< SOH > 01 FE <данные> < CS > |  | =====> |  |
|  | <===== |  | < ACK >
< SOH > 02 FD <данные> < CS > |  | =====> |  | (помеха в канале связи)
|  | <===== |  | < NAK >
< SOH > 02 FD <данные> < CS > |  | =====> |  |
|  | <===== |  | < ACK >
< SOH > 03 FC <данные> < CS > (знак ACK искажен) |  | =====> |  |
|  | <===== |  | < ACK >
< SOH > 03 FC <данные> < CS > |  | =====> |  |
|  | <===== |  | < ACK >
< EOT > |  | =====> |  |
|  | <===== |  | любой знак кроме < ACK >
< EOT > |  | =====> |  |
|  | <===== |  | < ACK >
Передача файла завершена |  |  |  |

Передающий ПК начинает передачу файла только после приема от принимающего ПК знака NAK (Negative AcKnowledge). Принимающий ПК передает этот знак до тех пор, пока не начнется передача файла. Если передано девять знаков NAK, а передача файла не началась, то процесс должен быть возобновлен вручную.

После приема знака NAK передающий ПК посылает знак начала блока SON (Start Of Header), два номера блока (сам номер и его двоичное дополнение по "единицам"), блок данных из 128 байт и контрольную сумму CS (Check Sum). Блоки нумеруются по модулю 256. Контрольная сумма (1 байт) представляет собой остаток от деления на 255 суммы значений кодов знаков, входящих в блок данных.

Принимающий ПК тоже вычисляет контрольную сумму и сравнивает ее с принятой. Если сравниваемые значения различны или если прошло 10 с и не завершен прием блока, принимающий ПК посылает передатчику знак NAK, означающий запрос на повторную передачу последнего блока. Если блок принят правильно, приемник передает знак ACK, а если следующий блок не поступил в течение 10 с, то передача знака ACK повторяется до тех пор, пока блок не будет правильно принят. После девяти неудачных попыток передачи блока связь прерывается.

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

Перерыв в передаче блока свыше 1 с считается разрывом связи.

Преимуществами данного протокола по сравнению с другими являются:

- его доступность для разработчиков программных средств;
- простота реализации на языках высокого уровня;
- малый объем приемного буфера (256 байт);
- возможность передачи не только символьных (коды ASCII), но и исполняемых файлов (с расширением .COM и .EXE).
  Последнее возможно вследствии того, что конец файла определяется подсчетом переданных байтов и вместо знака файлового маркера (Ctrl-Z) используется специальный сигнал завершения. Эффективность обнаружения ошибок данным протоколом составляет 99,6% - выше, чем при обычной асинхронной проверке четности (95%).

  К основным недостаткам этого протокола можно отнести:

- низкое быстродействие;
- большая вероятность необнаруженных ошибок;
- необходимость задания имени файла при приеме;
- относительно большой объем передаваемой служебной информации.

  Последующие модифакации протокола XModem были направлены на устранение этих и некоторых других его недостанков.

  ### Протокол YModem

  Протокол YModem - это протокол XModem-CRC, в котором реализована групповая передача файлов. Его появление было вызвано необходимостью устранения недостатков протокола XModem.

  Все программы, реализующие протокол YModem, должны выполнять следующие функции:

- передачу имени и пути файла в блоке 0 в виде строки знаков кода ASCII, завершающейся знаком "нуль";
- их использование на приемном конце файла в качестве имени и пути принятого файла, если иная реализация не оговорена специально;
- применение проверки CRC-16 при приеме знаков С, в противном случае - использование 8-битовой контрольной суммы;
- прием любой комбинации из 128- и 1024-байтовых блоков внутри каждого принимаего файла; возможность переключения длины блоков в конце файла (файлов) и/или в случае частых повторных передач;
- исключение изменения длины неподтвержденного блока на передающем конце канала;
- передачу в конце каждого файла знака EOT до десяти раз, пока не будет принят знак ACK (часть спецификации протокола XModem);
- обозначение конца сеанса связи нулевым (пустым) именем пути.

  Протокол YModem поддерживается большинством связных программ общего пользования.

  ### Протокол ZModem

  Этот протокол, введенный в большинство связных программ, получил сейчас самое широкое применение. Представляя собой фактически развитие протоколов XModem и YModem, протокол ZModem устраняет их недостатки и, будучи совместимым с ними, имеет ряд преимуществ:

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