Техническая часть

Содержание технической части

1. Введение

2. Последовательный асинхронный адаптер

   2.1. Аппаратная реализация

   2.2. Программирование адаптера

3. Типы модемов

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

5. Протоколы обмена данными

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

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

6. Телекоммуникационные программы

7. Использование модемов

   7.1. Электронная доска объявлений

   7.2. Факс-модемные платы

   7.3. Электронная почта

8. Программа поиска оптимального маршрута

   8.1. Разработка программы

   8.2. Краткий экономический анализ внедрения программы

1. Введение

В последнее время модемы становятся неотъемлемой частью компьютера. Установив модем на свой компьютер, вы фактически открываете для себя новый мир. Ваш компьютер превращается из обособленного компьютера в звено глобальной сети.

Модем позволит вам, не выходя из дома, получить доступ к базам данных, которые могут быть удалены от вас на многие тысячи километров, разместить сообщение на BBS (электронной доске объявлений), доступной другим пользователям, скопировать с той же BBS интересующие вас файлы, интегрировать домашний компьютер в сеть вашего офиса, при этом (не считая низкой скорости обмена данными) создается полное ощущение работы в сети офиса. Кроме того, воспользовавшись глобальными сетями (RelCom, FidoNet) можно принимать и посылать электронные письма не только внутри города, но фактически в любой конец земного шара. Глобальные сети дают возможность не только обмениваться почтой, но и участвовать во всевозможных конференциях, получать новости практически по любой интересующей вас тематике.

Существует три основных способа соединения компьютеров для обмена информацией:

- непосредственная связь, через асинхронный порт;

- связь с использованием модема;

- связь через локальные сети.

В работе рассматривается первые два типа соединений - непосредственное и соединение через модем.

2. Последовательный асинхронный адаптер

Практически каждый компьютер оборудован хотя бы одним последовательным асинхронным адаптером. Обычно он представляет собой отдельную плату или же расположен прямо на материнской плате компьютера. Его полное название - RS-232-C. Каждый асинхронный адаптер обычно содержит несколько портов, через которые к компьютеру можно подключать внешние устройства. Каждому такому порту соответствует несколько регистров, через которые программа получает к нему доступ, и определенная линия IRQ (линия запроса прерывания) для сигнализации компьютеру об изменении состояния порта. Каждому порту присваивается логическое имя (COM1,COM2,и т.д.).

Интерфейс RS-232-C разработан ассоциацией электронной промышленности ( EIA ) как стандарт для соединения компьютеров и различных последовательных периферийных устройств.

Компьютер IBM PC поддерживает интерфейс RS-232-C не в полной мере; скорее разъем, обозначенный на корпусе компьютера ка порт последовательной передачи данных, содержит некоторые из сигналов, входящих в интерфейс RS-232-C и имеющих соответствующие этому стандарту уровни напряжения.

В настоящее время порт последовательной передачи данных используется очень широко. Вот далеко не полный список применений:

- подключение мыши;

- подключение графопостроителей, сканеров, принтеров, дигитайзеров;

- связь двух компьютеров через порты последовательной передачи данных с использованием специального кабеля и таких программ, как FastWire II или Norton Commander;

- подключение модемов для передачи данных по телефонным линиям;

- подключение к сети персональных компьютеров;

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

Использование бита четности, стартовых и стоповых битов определяют формат передачи данных. Очевидно, что передатчик и приемник должны использовать один и тот же формат данных, иначе обмен не возможен.

Другая важная характеристика - скорость передачи данных.

Она также должна быть одинаковой для передатчика и приемника.

Скорость передачи данных обычно измеряется в бодах ( по фамилии французского изобретателя телеграфного аппарата Emile Baudot - Э.Бодо). Боды определяют количество передаваемых битов в секунду. При этом учитываются и старт/стопные биты, а также бит четности.

2.1. Аппаратная реализация

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

Бывают также платы, содержащие четыре или восемь портов последовательной передачи данных. Их часто используют для подключения нескольких компьютеров или терминалов к одному, центральному компьютеру. Эти платы имеют название "мультипорт".

В основе последовательного порта передачи данных лежит микросхема INTEL 8250 или ее современные аналоги - INTEL 16450,16550,16550A. Эта микросхема является универсальным асинхронным приемопередатчиком ( UART - Universal Asynchronous Receiver Transmitter). Микросхема содержит несколько внутренних регистров, доступных через команды ввода/вывода.

Микросхема 8250 содержит регистры передатчика и приемника данных. При передаче байта он записывается в буферный регистр передатчика, откуда затем переписывается в сдвиговый регистр передатчика. Байт "выдвигается" из сдвигового регистра по битам.

Программа имеет доступ только к буферным регистрам, копирование информации в сдвиговые регистры и процесс сдвига выполняется микросхемой UART автоматически.

К внешним устройствам асинхронный последовательный порт подключается через специальный разъем. Существует два стандарта на разъемы интерфейса RS-232-C, это DB-25 и DB-9. Первый имеет 25, а второй 9 выводов.

Разводка разъема DB25

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

Разводка разъема DB9

---------------------------------------------------------------
Номер | Назначение контакта | Вход или
контакта | (со стороны компьютера) | выход
---------------------------------------------------------------
1 Детектор принимаемого с линии сигнала
(Data Carrier Detect,DCD) Вход
2 Принимаемые данные (Received Data,RD) Вход
3 Передаваемые данные (Transmitted Data,TD) Выход
4 Готовность выходных данных
(Data Terminal Ready,DTR) Выход
5 Сигнальное заземление (Signal Ground,SG) -
6 Готовность данных (Data Set Ready,DSR) Вход
7 Запрос для передачи (Request to send,RTS) Выход
8 Сброс для передачи (Clear to Send,CTS) Вход
9 Индикатор вызова (Ring Indicator,RI) Вход

Интерфейс RS-232-C определяет обмен между устройствами двух типов : DTE (Data Terminal Equipment - терминальное устройство) и DCE (Data Communication Equipment - устройство связи). В большинстве случаев, но не всегда, компьютер является терминальным устройством. Модемы, принтеры, графопостроители всегда являются устройствами связи.

Сигналы интерфейса RS-232-C

Входы TD и RD используются устройствами DTE и DCE по-разному. Устройство DTE использует вход TD для передачи данных, а вход RD для приема данных. И наоборот, устройство DCE использует вход TD для приема, а вход RD для передачи данных. Поэтому для соединения терминального устройства и устройства связи выводы их разъемов необходимо соединить напрямую.

Подтверждение связи

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

Компьютер подает сигнал по линии DTR, чтобы показать модему, что он готов к проведению сеанса связи. В ответ модем подает сигнал по линии DSR. Когда модем произвел соединение с другим, удаленным модемом, он подает сигнал по линии DCD, чтобы сообщить об этом компьютеру.

Если напряжение на линии DTR падает, это сообщает модему, что компьютер не может далее продолжать сеанс связи, например из-за того, что выключено питание компьютера. В этом случае модем прервет связь. Если напряжение на линии DCD падает, это сообщает компьютеру, что модем потерял связь и не может больше продолжать соединение. В этом случае эти сигналы дают ответ на наличие связи между модемом и компьютером.

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

Стандарт RS-232-C определяет возможность управления потоком только для полудуплексного соединения, при котором в каждый момент времени данные могут передаваться только в одну сторону.

Фактически этот механизм используется и для дуплексных  соединений, когда данные передаются по линии связи одновременно в двух направлениях.

Управление потоком

В полудуплексных соединениях устройство DTE подает сигнал RTS, когда оно желает передать данные. DCE отвечает сигналом по линии CTS, когда оно готово, и DTE начинает передачу данных. До тех пор, пока оба сигнала RTS и CTS не примут активное состояние, только DCE может передавать данные.

При дуплексных соединениях сигналы RTS/CTS имеют значения противоположные тем, которые они имели для полудуплексных соединений.

Когда DTE может принять данные, он подает сигнал по линии RTS. Если при этом DCE готово для принятия данных, оно возвращает сигнал CTS. Если напряжение на линиях RTS и CTS падает, то это сообщает передающей системе, что получающая система не готова для приема данных.

Однако на практике не все так просто. Соединить компьютер и модем не составляет труда, т.к. интерфейс RS-232-C как раз для этого и предназначен. Но если вы захотите связать вместе два компьютера при помощи такого же кабеля, который вы использовали для связи модема и компьютера, то у вас возникнут проблемы. Для соединения двух терминальных устройств - двух компьютеров - как минимум необходимо перекрестное соединение линий TR и RD. Однако часто этого недостаточно, т.к. для устройств DTE и DCE функции, выполняемые линиями DSR, DTR, DCD, CTS, RTS асимметричны.

Устройство DTE подает сигнал DTR и ожидает получения сигналов DSR и DCD. В свою очередь, устройство DCE подает сигналы DSR, DCD и ожидает получения сигнала DTR. Таким образом, если соединить вместе два устройства DTE кабелем, который вы использовали для соединения устройств DTE и DCE, то они не смогут договориться друг с другом.

Теперь перейдем к сигналам RTS и CTS, управления потоком данных. иногда для соединения двух устройств DTE эти линии соединяют вместе на каждом конце кабеля. В результате получаем то, что другое устройство всегда готово для получения данных. Поэтому, если при большой скорости передачи принимающее устройство не успевает принимать и обрабатывать данные, возможна потеря данных.

Чтобы решить все эти проблемы для соединения двух устройств типа DTE используется специальный кабель, в обиходе называемый нуль-модемом.

Технические параметры интерфейса RS-232-C

При передаче данных на большие расстояния без использования специальной аппаратуры из-за помех, наводимых электромагнитными полями, возможно возникновение ошибок. Вследствие этого накладываются ограничения на длину соединительного кабеля между устройствами DTR-DTR и DTR-DCE.

Официальное ограничение по длине для соединительного кабеля по стандарту RS-232-C составляет 15,24 метра. Однако на практике это расстояние может быть значительно больше. Оно непосредственно зависит от скорости передачи данных.

     110бод - 1524м  / 914,4м
300бод - 1524м / 914,4м
1200бод - 914,4м / 914,4м
2400бод - 304,8м / 152,4м
4800бод - 304,8м / 76,2м
9600бод - 76,2м / 76,2м

Первое значение - скорость передачи в бодах, второе - максимальная длина для экранированного кабеля, третье - максимальная длина для не экранированного кабеля.

Уровни напряжения на линиях разъема составляют для логического нуля -15..-3 вольта, для логической единицы +3..+15 вольт. Промежуток от -3 до +3 вольт соответствует неопределенному значению.

2.2. Программирование адаптера

Порты асинхронного адаптера

На этапе инициализации системы, модуль POST BIOS тестирует имеющиеся асинхронные порты RS-232-C и инициализирует их. В зависимости от версии BIOS инициализируются первые два или четыре порта. Их базовые адреса располагаются в области данных BIOS начиная с адреса 0000:0400h.

Первый адаптер COM1 имеет базовый адрес 3F8h и занимает диапазон адресов от 3F8h до 3FFh. Второй адаптер COM2 имеет базовый адрес 2F8h и занимает адреса 2F8h..2FFh.

Асинхронные адаптеры могут вырабатывать прерывания:

     COM1,COM3 - IRQ4
COM2,COM4 - IRQ3

Имеется 7 основных регистров для управления портами:

а) Регистр данных

Регистр данных расположен непосредственно по базовому адресу порта RS-232-C и используется для обмена данными и для задания скорости обмена.

Для передачи данных в этот регистр необходимо записать передаваемый байт данных. После приема данных от внешнего устройства принятый байт можно прочитать из этого же регистра.

В зависимости от состояния старшего бита управляющего регистра ( расположенного по адресу base_adr+3, где base_adr соответствует базовому адресу порта RS-232-C) назначение этого регистра может изменяться. Если старший бит равен нулю, регистр используется для записи передаваемых данных. Если же старший бит равен единице, регистр используется для ввода значения младшего байта делителя частоты тактового генератора. Изменяя содержимое делителя, можно изменять скорость передачи данных.

Старший байт делителя записывается в регистр управления прерываниями по адресу base_adr+1.

Максимальная скорость обмена информацией, которую можно достичь при использовании асинхронного адаптера, достигает 115200 бод, что примерно соответствует 14 Кбайт в секунду.

б) Регистр управления прерываниями

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

в) Регистр идентификации прерывания

Считывая его содержимое, программа может определить причину прерывания

г) Управляющий регистр

Управляющий регистр доступен по записи и чтению. Этот регистр управляет различными характеристиками UART : скоростью передачи данных, контролем четности, передачей сигнала BREAK, длиной передаваемых слов(символов).

д) Регистр управления модемом

Регистр управления модемом управляет состоянием выходных линий DTR, RTS и линий, специфических для модемов - OUT1 и OUT2, а также запуском диагностики при соединенных вместе входе и выходе асинхронного адаптера.

е) Регистр состояния линии

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

ж) Регистр состояния модема

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

Инициализация асинхронного адаптера

Первое, что должна сделать программа, работающая с асинхронным адаптером - установить формат и скорость передачи данных. После загрузки операционной системы для асинхронных адаптеров устанавливается скорость 2400 бод, не выполняется проверка на четность, используются один стоповый и восьмибитовая длина передаваемого символа. Можно изменить этот режим командой MS-DOS MODE.

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

Если вам надо задать новое значение скорости обмена данными, перед записью байта режима установите старший бит этого байта в 1, при этом регистр данных и управляющий регистр используются для задания скорости обмена. Затем последовательно двумя командами ввода загрузите делитель частоты тактового генератора. Младший байт запишите в регистр данных, а старший - в регистр управления прерываниями.

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

Современные микросхемы UART

Фактически микросхема UART 8250 в ее исходном виде использовалась только в старых моделях компьютеров IBM PC. Современные микросхемы - UART 16450, 16550, 16550A изготовленные по новой технологии, позволяют достичь более высокой скорости обмена данными, а также обладают новыми аппаратными возможностями.

Основные возможности различных микросхем UART:

- 8250 (8250-B) : Использовался на первых моделях IBM PC - 16450 (8250-A) : Эта микросхема имеет большую производительность по сравнению с 8250. Фактически это 8250, но изготовленный с использованием новой технологии. Микросхема дополнена регистром расширения (scratch register). Устранены ошибки в регистре разрешения прерываний и добавлена возможность перевода линии OUT2 в высокоимпедансное состояние во время проведения тестов, когда выход данных замкнут на вход.

- 16550 : Фактически соответствует 16450. Добавлена возможность внутренней буферизации передаваемых и принимаемых данных. Буфера выполнены по схеме FIFO (First In First OUT - первый вошел, первым вышел) или, другими словами в виде очереди. При использовании буферизации возможно заметно уменьшить число прерываний, вырабатываемых асинхронным портом. Однако из-за ошибки в микросхеме эту возможность лучше не использовать - можно потерять отдельные символы. В общем случае микросхема 16550 более быстрая, чем 16450. Дополнительно 16550 дает возможность использовать несколько каналов прямого доступа ( DMA channels).

- 16550A (16550AN) Соответствует 16550, исправлены ошибки реализации FIFO. Эта микросхема дает возможность использования программисту нескольких каналов прямого доступа. 16550А, как правило, используется в компьютерах с процессорами 80386/486 и в компьютерах с RISC-архитектурой. Если вы хотите работать на скоростях больших, чем 9600 бод, желательно использовать именно эту микросхему.

3. Типы модемов

В настоящее время выпускается огромное количество всевозможных модемов, начиная от простейших, обеспечивающих скорость передачи около 300 бит/сек, до сложных факс-модемных плат, позволяющих вам послать с вашего компьютера факс или звуковое письмо в любую точку мира.

В работе будет рассказано только о так называемых hayes-совместимых модемов. Эти модемы поддерживают разработанный фирмой Hayes набор АТ-команд управления модемами. В настоящее время такие модемы широко используются во всем мире для связи персональных компьютеров IBM PC/XT/AT, PS/2 через телефонные линии.

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

Типичный модем содержит следующие компоненты: специализированный микропроцессор, управляющий работой модема, оперативную память, хранящую значения регистров модема и буферизующие входную/выходную информацию, постоянную память, динамик, позволяющий выполнять звуковой контроль связи, а также другие вспомогательные элементы ( трансформатор, резисторы, конденсаторы, разъемы). Если у вас достаточно современный модем, то он скорее всего дополнительно содержит электрически перепрограммируемую постоянную память, в которой может быть сохранена конфигурация модема даже при выключении питания.

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

CCITT V.21 - 300 bps. Модем, регламентированный данной рекомендацией, предназначен для передачи данных по выделенным и коммутируемым линиям.

Он работает в асинхронном дуплексном режиме. Для передачи и приема данных используется способ частотной модуляции.

CCITT V.22 - 1200 bps. Модем, работающий в соответствии с данной рекомендацией, использует асинхронно-синхронный дуплексный режим передачи. Асинхронно-синхронный режим означает, что компьютер передает модему данные в асинхронном режиме. Модем удаляет из потока данных компьютера стартовые и стоповые биты. И уже в синхронном виде передает их удаленному компьютеру. Для модуляции передаваемого сигнала применяется метод дифференциальной фазовой модуляции.

CCITT V.22bis - 2400 bps. Дуплексный модем, со скоростью передачи данных 2400 bps. При передаче со скоростью 2400 bps используется метод квадратурной модуляции, а при скорости 1200 - метод дифференциальной фазовой модуляции. На скорости 1200 bps модем CCITT V.22bis совместим с CCITT V.22.

CCITT V.23 - 600/1200 bps. Асинхронный модем, использующий метод частотной модуляции. Модем может работать в дуплексном режиме со скоростью передачи данных по прямому каналу - 600/1200 bps, а по обратной - только 75 bps. Этот стандарт не совместим с CCITT V.21, V.22, V.22bis.

Bell 103 - 300 bps, Bell 212A - 1200 bps.

Bell - это американский стандарт, не совместимый со стандартами CCITT.

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

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

Со времени выпуска первых AT-совместимых модемов набор их команд несколько расширился, но все основные команды остались без изменения.

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

После префикса AT могут идти одна или сразу несколько команд. Для ясности эти команды могут быть отделены друг от друга символами пробела, тире, скобками. В большинстве случаев команды могут быть написаны как заглавными, так и строчными буквами.

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

Команды, записанные в буфер модема, исполняются после поступления символа возврата каретки. Вследствие ограниченности размера буфера не следует передавать модему слишком длинные команды ( больше размера буфера). Длинные команды можно разбивать на части и передавать в несколько заходов. При этом каждая часть должна начинаться префиксом АТ и заканчиваться символом возврата каретки.

Если вы допустили ошибку при наборе команды, то ее можно исправить, используя клавишу BackSpace.

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

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

MR Modem Ready - Модем готов к обмену данными. Если этот индикатор не горит, то надо проверить линию питания модема.

TR Terminal Ready - Компьютер готов к обмену данными с модемом. Этот индикатор горит, когда модем получил от компьютера сигнал DTR.

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

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

RD Receave Data - Индикатор мигает, когда модем передает данные к компьютеру

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

AA Auto Answer - Модем находится в режиме автоответа. То есть модем автоматически будет отвечать на приходящие звонки.

Когда модем обнаружит звонок на телефонной линии, этот индикатор замигает.

OH Off-Hook - Этот индикатор горит, когда модем снял трубку ( занимает линию).

Основные команды модема

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

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

A/ - Модем повторяет последнюю введенную команду. Команда передается на модем без префикса AT и исполняется модемом немедленно, не ожидая прихода символа возврата каретки. Если вы передадите модему строку AT A/ <CR>, то модем укажет на ошибку и вернет слово ERROR.

Bn - Команда производит выбор стандарта, согласно которому будет происходить обмен данными между модемами. При скорости передачи 300 бит/с происходит выбор между стандартами BELL 103 и CCITT V.21, при скорости 1200 bps - между BELL 212A и CCITT V.22bis. При скорости 2400 bps эта команда игнорируется и используется стандарт CCITT V.22. Если n=0, устанавливаются стандарты CCITT V.21/V.22, а если n=1 - стандарты BELL 103/212A.

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

, - Символ запятой вызывает паузу при наборе номера. Длительность паузы определяется содержимым регистра S8.

; - Символ точки с запятой, если он находится в конце командной строки, переводит модем после набора номера в командный режим.

@ - Модем ожидает пятисекундной тишины на линии в течение заданного промежутка времени. Промежуток времени, в течение которого модем ожидает тишины, задается в регистре S7. Если в течение этого времени паузы тишины не было, модем отключается и отвечает NO ANSWER.

! - Если знак ! стоит перед знаками последовательности набора, модем переходит в состояние ON HOOK (кладет трубку) на 1/2 секунды, а затем снова переходит в состояние OFF HOOK ( снимает трубку).

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

R - После набора номера переводит модем в режим автоответа. Этот модификатор должен находиться в конце набираемого номера.

W - Перед дальнейшим набором телефонного номера модем ожидает длинный гудок из линии. Причем время ожидания гудка содержится в регистре S7. Если в отведенное время гудок не появился, модем прекращает набор номера и возвращает сообщение NO DIALTONE. Этот параметр может быть полезен при наборе междугородных номеров.

En - Управление эхо-выводом команд, передаваемых модему.

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

Fn - Переключение между дуплексным/полудуплексным режимами. При n=0 переход в полудуплексный режим, а при n=1 - в дуплексный.

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

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

Ln - Установка громкости сигнала внутреннего динамика:

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

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

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

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

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

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

Vn - Производит выбор вида ответа модема на AT-команды.

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

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

Yn - Способ отключения модема от линии. Существуют два способа отключения модема от линии: стандартный, когда модем получает неактивный сигнал DTR от компьютера, и принудительный, когда модем получает от удаленного модема сигнал перерыва BREAK. Команда ATH0 направляет удаленному модему сигнал прерыва 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 - модем устанавливает конфигурацию, записанную в постоянную память.

&Gn - Включение/выключение защитной частоты. n=0 - защитная частота выключена, n=1 - модем генерирует защитную частоту 550 Hz, n=2 - модем генерирует защитную частоту 1800 Hz.

Использование данной команды зависит от особенностей телефонной линии.

&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 - Используется для записи телефонного номера в энергонезависимую память модема. Количество телефонов зависит от модели модема.

Основные принципы программирования модемов

Доступ к модему происходит через последовательный асинхронный порт. При этом для передачи модему команд их необходимо просто записать в регистр данных COM-порта, на котором находится модем. Ответ от модема также поступает через последовательный порт.Передавая модему команды, его можно проинициализировать, перевести в режим автоответа или заставить набрать номер.

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

Итак, после установления связи с удаленным модемом, коммуникационная программа может начинать обмен данными. Обмен данными так же, как и передача команд, осуществляется через COM-порт. Затем при помощи специальной Escape-последовательности можно переключить модем из режима передачи данных обратно в командный режим и положить трубку, разорвав связь с удаленным модемом.

Последовательность действий для установления связи

а) Инициализация COM-порта

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

Чем скорость выше, тем быстрее будет происходить обмен данными с удаленным модемом.

Однако при увеличении скорости на плохих телефонных линиях сильно возрастает количество ошибок.

б) Инициализация модема

Передавая модему AT-команды через СОМ-порт, производим его инициализацию. При помощи АТ-команд можно установить различные режимы работы модема - выбрать протокол обмена, установить набор диагностических сообщений модема и т.д.

в) Соединение с удаленным модемом

Передаем модему команду набора номера (ATD). В этом случае модем набирает номер и пытается установить связь с удаленным модемом. Или передаем модему команду AT S0=1 для перевода его в режим автоответа. После этого модем ожидает звонка от удаленного модема, а когда он приходит, пытается установить с ним связь.

г) Ожидаем ответ от модема

В зависимости от режима, в котором находится модем, он может передавать компьютеру различные сообщения. Например, если модем производит вызов удаленного модема (АТ-команда ATD), то модем может выдать следующие сообщения:

     CONNECT       Успешное соединение
BUSY Номер занят
NO DIALTONE На линии отсутствует сигнал коммутатора
NO ANSWER Абонент не отвечает
NO CARRIER Неудачная попытка установить связь

Когда приходит звонок, модем передает компьютеру сообщение RING, если регистр модема S0 равен нулю. В этом случае для ответа на звонок надо послать модему команду АТА. Если модем находится в режиме автоответа и регистр модема S0 не равен нулю, то модем автоматически пытается ответить на звонок и может выдать следующие сообщения:

     CONNECT       Успешное соединение
NO DIALTONE Нет несущей частоты удаленного модема
NO CARRIER Неудачная попытка установить связь

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

Если модем передал компьютеру сообщения BUSY, NO DIALTONE, NO ANSWER, NO CARRIER значит, произвести соединение с удаленным модемом не удалось и надо попытаться повторить соединение.

д) Подключение модема в командный режим

После окончания работы коммуникационная программа должна перевести модем в командный режим и передать ему команду положить трубку (ATH0). Для перевода модема в командный режим можно воспользоваться Escape-последовательностью "+++". После того как модем перешел в командный режим, можно опять передавать ему АТ-команды.

е) Сбрасываем сигналы на линиях DTR и RTS

Низкий уровень сигналов DTR и RTS сообщает модему, что компьютер не готов к приему данных через COM-порт.

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

5.Протоколы обмена данными

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

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

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

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

Если эти две контрольный суммы совпали, принимающая программа считает, что блок передан без ошибок. В противном случае принимающий компьютер передает передающему запрос на повторную передачу этого блока.

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

MNP-протоколы

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

Сейчас известны 10 протоколов:

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

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

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

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

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

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

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

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

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

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

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

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

- многократного повторения попытки установить связь

- изменения размера пакетов в соответствии с изменением уровня помех на линии

- динамического изменения скорости передачи в соответствии с уровнем помех линии

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

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

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

- Стандартный режим. Обеспечивает буферизацию данных, что позволяет работать с различными скоростями передачи данных между компьютером и модемом и между двумя модемами. В результате для повышения эффективности передачи данных вы можете установить скорость обмена компьютер-модем выше, чем модем-модем. В стандартном режиме работы модем не выполняет аппаратной коррекции ошибок.

- Режим прямой передачи. Данный режим соответствует обычному модему, не поддерживающему MNP-протокол. Буферизация данных не производится и аппаратная коррекция ошибок не выполняется.

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

- Режим с коррекцией ошибок и автоматической настройкой.

Режим используется, когда заранее не известно, поддерживает ли удаленный модем протокол MNP. В начале сеанса связи после определения режима удаленного модема устанавливается один из трех других режимов.

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

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

Вместе с 20% выигрышем от синхронного преобразования это увеличивает эффективность на 60%.

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

В отличие от протоколов нижнего уровня данные протоколы позволяют организовать прием и передачу файлов.

ASCII.

ASCII протокол работает без коррекции ошибок. В результате при передаче файлов по телефонным каналам из-за шума принятый файл сильно отличается от передаваемого. Если вы передаете выполняемый файл, то ошибки при передаче могут стать роковыми - полученная программа не будет работать. Если вы передаете короткие текстовые сообщения, то ошибки легко могут быть исправлены.

XModem.

Наиболее распространены три разновидности протокола XModem:

- оригинальный протокол Xmodem
- Xmodem c CRC
- 1K Xmodem

Оригинальный протокол Xmodem разработал Вард Кристенсен (Ward Christensen) в 1977 году. Вард Кристенсен был одним из первых специалистов по протоколам обмена данными. В честь него этот протокол иногда называют также протоколом Кристенсена.

При передаче файлов с помощью протоколов Xmodem формат данных должен быть следующим: 8-битовые данные, один стоповый бит и отсутствие проверки на четность. Для передачи используется полудуплексный метод, т.е. данные могут передаваться в каждый момент времени только в одном направлении.

Протокол Xmodem Cheksum передает данные пакетами по 128 байт. Вместе с пакетом передается его контрольная сумма. При получении пакета контрольная сумма вычисляется снова и сравнивается с суммой, вычисленной на передающей машине. Пакет передан без ошибок, если суммы совпадают.

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

Xmodem c CRC. Более защищенным от ошибок является протокол Xmodem CRC (Cyclic Redundancy Check). Xmodem CRC - протокол с проверкой циклическим избыточным кодом. В нем 8-битовая контрольная сумма заменена на 16-битовый циклический избыточный код. Этот протокол гарантирует вероятность обнаружения ошибок, равную 99,9984%. Только один из 700 биллионов плохих пакетов будет иметь правильный CRC-код. Протокол Xmodem CRC также передает данные пакетами по 128 байт.

1K Xmodem. Если передача идет без ошибок, протокол 1К Xmodem увеличивает размер пакета с 128 до 1024 байт. При увеличении числа ошибок размер пакета снова уменьшается. Такое изменение длины пакета позволяет увеличить скорость передачи файлов. В остальном протокол 1K Xmodem совпадает с протоколом Xmodem CRC.

Ymodem.

Протокол Ymodem разработал Чак Форсберг в 1984-1985 годах.

Протокол Ymodem похож на протокол 1K Xmodem, но имеет одно отличие: протокол Ymodem может передавать или принимать за один заход несколько файлов.

Существует модификация протокола Ymodem - Ymodem G. Протокол Ymodem G предназначен для использования с модемами, автоматически осуществляющими коррекцию ошибок на аппаратном уровне.

Например, MNP-модемы с аппаратной реализацией MNP. В этом протоколе упрощена защита от ошибок, т.к. ее выполняет сам модем.

Не используете этот протокол, если ваш модем не осуществляет аппаратную коррекцию ошибок.

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

Zmodem.

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

Протокол Zmodem, так же как и протокол 1K Xmodem, может изменять длину пакета (блока) от 64 до 1024 байт в зависимости от качества линии.

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

Из всех протоколов верхнего уровня, описанных выше, этот протокол самый быстрый и удобный.

BiModem.

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

Kermit.

Широко известны две разновидности протокола Kermit - стандартный и Super Kermit. Этот протокол был разработан в Колумбийском университете в 1981 году для связи между различными типами компьютеров, включая большие компьютеры, мини-компьютеры и персональные компьютеры. В отличие от протоколов Xmodem и Zmodem он использует для передачи данных пакеты переменной длины и максимальным размером 94 байт.

Так же как и Ymodem, протокол Kermit может передавать или принимать несколько файлов за один сеанс.

Протокол Super Kermit предназначен специально для использования в сетях типа TeleNet или TymNet. Эти сети имеют очень большие задержки при передаче данных. Так что если ждать подтверждения для каждого пакета, это может привести к резкому снижению скорости обмена. В протоколе Super Kermit эта проблема решается следующим способом. Несколько пакетов передается за один раз. Все действия по контролю над ошибками остаются, за исключением того, что принимающий данные компьютер не передает сигнал подтверждения или сигнал на переспрос неправильного пакета, пока не получит все пакеты в окне.

В результате использования такого механизма происходит резкое сокращение времени задержки. Окно может содержать от одного до 31 пакета.

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

6.Телекоммуникационные программы

Существует огромное множество различных телекоммуникационных программ, предоставляющих пользователю удобное средство работы с модемом - MTE, Telix, Comit, Bitcom и т.д.

Основные параметры по которым оцениваются коммуникационные программы являются: программная эмуляция протоколов коррекции ошибок (MNP), наличие разнообразных протоколов обмена файлами, интерфейс с пользователем.

MTE.

Широко распространенная коммуникационная программа фирмы MagicSoft Inc. В MTE версии 2.10 программно реализован протокол MNP. Поэтому, если ваш модем не имеет аппаратной реализации протокола MNP, использование МТЕ позволяет установить устойчивую связь с MNP-модемами. МТЕ имеет следующие встроенные протоколы обмена файлами: ASCII, Xmodem CRC, Ymodem, Ymodem-G, Zmodem, Kermit.

Telix.

Telix, версия 3.12 - удобная коммуникационная программа, поддерживающая много протоколов обмена файлами.  В Telix реализованы следующие протоколы: Kermit, Modem7, SEAlink, Telink, Xmodem, Xmodem-1k, Ymodem, ymodem-G, Zmodem, HSlink, MobyTurbo, ASCII.

Однако Telix имеет один большой недостаток: эта программа не поддерживает программной эмуляции MNP. Вследствие этого ее невозможно использовать на сильно зашумленных линиях с модемами, не обеспечивающими аппаратную коррекцию ошибок.

Comit.

Comit, версии 1.27b - удобная коммуникационная программа, часто поставляется в комплекте с модемами, не имеющими аппаратной реализации MNP. Выполняет программную эмуляцию протоколов MNP2, MNP4, MNP5, MNP7.

К сожалению, эта коммуникационная программа имеет очень бедный набор протоколов для обмена файлами. Поддерживаются протоколы Xmodem, Xmodem CRC, Ymodem, Ymodem-G, ASCII.

Bitcom.

Bitcom, версии 3.584 - коммуникационная программа, часто поставляемая в комплекте с модемами, не имеющими аппаратной реализации MNP. Выполняет программную эмуляцию протоколов MNP (до MNP5 включительно).

Bitcom поддерживает следующие протоколы обмена файлами: ASCII, Xmodem CRC, Ymodem, Ymodem-G, Kermit, CompuServe Plus.

Следует также отметить, что в Bitcom неудачно реализован интерфейс с пользователем.

7. Использование модемов

7.1. Электронная доска объявлений

BBS ( Bulletin Board System ) - это компьютер, снабженный одним или несколькими модемами, на котором выполняется специальная программа. Эта программа дает возможность удаленным пользователям связываться с ней по телефонным линиям и выполнять обмен файлами и сообщениями.

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

Если вы успешно установили модем на своем компьютере, то у вас возникнет естественное желание куда-нибудь позвонить. Для этого вы можете воспользоваться любой телекоммуникационной программой - MTE, COMIT, BITCOM. Если ваш модем не имеет аппаратной коррекции ошибок, то лучше использовать MTE или другую программу, имеющую возможность эмуляции MNP (например COMIT).

Хотя различные BBS используют различные программы для организации своей работы - TPBoard, Allan's Kakboard, Remote Access, Opus, Phoenix, Maximus и т.д., фактически все они имеют одинаковый набор команд. Здесь мы рассмотрим станции BBS, использующие программу Maximus.

Maximus организует диалог с пользователем, позволяет пользователю получить адресованные ему сообщения (почту), отправить почту другим пользователям данной станции BBS или сети FidoNet (если данная станция входит в эту сеть).

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

Итак, вы звоните на BBS. В большинстве случаев после соединения с BBS на вашем дисплее появится следующее сообщение:

CONNECT 2400
FrontDoor 2.02; Noncommercial version
Press Escape twice for Maximus
Maximus is being loaded

Оно означает, что станция является узлом какой-либо сети, например FidoNet, и на ней выполняется специальная почтовая программа FrontDoor. Вам предлагается нажать два раза на клавишу ESC для загрузки программы Maximus, которая и будет далее поддерживать диалог с вами.

Если в это время станция работает только для обмена почтой в сети, то на экране появится другое сообщение:

CONNECT 2400
FrontDoor 2.02; Noncommercial version
Mail-only system. Please hang up.

Если BBS работает, то через некоторое время на ней запустится программа Maximus или аналогичная и на вашем экране появится заставка - информация о данной BBS, которая может включать номера телефонов, расписание работы, фамилию системного оператора.

Затем BBS попросит ввести вас свое имя и фамилию. Если вы входите на BBS первый раз, то у вас будут запрошены истинные имя и фамилия, рабочий и домашний телефоны, тип используемого вами терминала.

Под типом терминала понимается возможность распознавать те или иные управляющие символы. Обычно вам предоставляется выбор из двух возможных типов терминалов - TTY и ANSI.

TTY представляет собой наиболее простой тип терминала. Он не позволяет управлять цветом символов, выводимых на экран и устанавливать курсор в заданную позицию.

ANSI - это наиболее универсальный тип терминала. Он поддерживает управление положением курсора, а также цветом символов и фоном символов. Управление цветом и положением курсора обеспечивается специальными Escape-последовательностями.

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

Главное меню BBS

Когда система наконец признает в вас своего пользователя, на экран будет выведено основное меню:

     MAIN:
M)essage Areas F)ile Areas S)tatistics
C)hange Setup W)ho is on /)Chat Menu
Y)ell for Sysop R)egistration G)oodbye

Рассмотрим каждую из команд меню:

Message Areas

Выбрав этот элемент основного меню, вы переходите в область сообщений. На экране отобразится меню работы с сообщениями, из которого вы сможете просмотреть, послать или принять сообщения.

File Areas

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

Statistics

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

Change Setup

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

Who is on

Система сообщит вам, о том, кто еще подключился к BBS (если BBS имеет несколько телефонных линий).

Chat Menu

Если система имеет несколько телефонных линий, то вы сможете передать сообщение тому, кто находится на другой линии этой BBS.

Yell for Sysop

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

Registration

Система начнет задавать вам вопросы для вашей регистрации на BBS.

Goodbye

С помощью этой команды вы разорвете связь с BBS.

7.2. Факс-модемные платы

В последнее время на рынке появилось множество факсимильных и факс-модемных плат. Если вы подключите эту плату к вашему компьютеру, то вы получите факсимильный аппарат. Благодаря этим платам вы можете передать факс на любой факсимильный аппарат или на любую факс-модемную плату в мире.

Факс-модемные платы можно использовать и как обычные модемы.

Программное обеспечение, обслуживающее факс-модемные платы, позволяет преобразовывать данные в различных форматах к формату факсимильных аппаратов. Например, программа Quick Link II Fax позволяет передавать на факс-машины и другие факс-модемы следующие данные: текст, файлы в форматах TIFF, IMG подготовленные программой GEM Artline или Ventura Pablisher, BMP из Microsoft Windows, CUT из Dr.Halo и PCX из Paintbrush.

Некоторые модемы позволяют даже послать звуковое письмо.

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

7.3. Электронная почта

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

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

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

В зависимости от используемой вами сети электронный адрес может иметь различный формат.

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

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

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

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

В настоящее время в нашей стране самыми большими являются сеть Relcom и FidoNet. Relcom является подмножеством сети InterNet. Обе эти сети позволяют передавать данные не только внутри России, но и по всему миру.

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

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

Рассмотрим подробнее, как же все-таки устроена сеть электронной почты. Если представить схематически ее структуру, то мы увидим, что это ни что иное как обычный ориентированный граф.

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

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

Самым низким уровнем в этой классификации являются пользователи. Это основной источник доходов для узлов коммерческой сети.

В адресе каждого пользователя заложена вся необходимая информация о том, к какому узлу он прикреплен, в каком городе и в какой стране находится этот узел. Например по Relcom'овскому адресу "jim@jim.a2-link.msk.ru" можно точно сказать, что этот пользователь находится в России. Его узел находится в Москве и называется A2-LINK. Терминал пользователя имеет название JIM.

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

8. Программа поиска оптимального маршрута

8.1. Разработка программы

В связи с тем, что электронная сеть представляет собой очень сложный орграф, бывает очень сложно определить, каким образом наиболее экономично и быстро отправить письмо в адрес получателя. Исходя из начальных правил построения сети, письмо отправленное пользователем, например в другую страну, должно сначала пройти через его узел, затем дойти до центрального городского узла. После этого письмо направляется на станцию государственного уровня, откуда пересылается на станцию государства адресата. От туда письмо начинает спуск по иерархическому дереву, сначала до уровня города, потом попадает на узел пользователя, а затем на терминал, где его может прочитать получатель.

Как мы видим цепочка получается очень сложной и долгой. Однако даже при такой цепочке узлов время прохождения электронной почты по сети Relcom ограничивается одним или двумя днями. Поэтому для увеличения прибыли от поддержания узла электронной почты Релком, нам необходимо сократить путь прохождения письма исходя из критерия минимальной стоимости пересылки. При сокращении себестоимости пересылки, мы сможем снизить тарифную плату за пользование нашим узлом, и тем самым привлечь большее количество пользователей. А за счет этого, в свою очередь, увеличить прибыль от содержания узла. Итак задача сводится к нахождению минимального пути в нагруженном орграфе. Длиной дуги будем считать стоимость, необходимое для передачи единицы информации от одного узла к другому по данной дуге, т.е. телефонной линии.

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

Для построения модели фрагмента сети электронной почты нужно также знать, что в России существует альтернативная телефонная сеть называемая "Искра". Ее главное отличие от обычной телефонной сети в том, что качество линий на порядок лучше, что обеспечивает большую пропускную способность телефонного канала при том же техническом обеспечении.

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

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

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

8.2. Краткий экономический анализ внедрения программы

Запустив разработанную мной программу, получаем файл результатов (см. приложение). Из результата работы программы мы видим, что из узла 1 в узел 16 был найден путь стоимость 17 тыс.руб, в то время как обычный путь стоил бы 48 тыс.руб и состоял бы из 5 переходов.

Путь из 1 узла в 19 стоил 48 т.р. и состоял из 4 переходов. В результате работы программы был найден путь из 5 переходов, но стоимостью 17 т.р.

Путь из 1 узла в 42 узел состоял из 3х элементов и стоил 27 т.р., хотя есть более дешевый путь стоимостью 21 т.р.

Путь из 1 узла в 30 узел состоял из 3х элементов и стоил 24 т.р. Программа нашла более дешевый путь стоимостью 22 т.р.

В среднем общая стоимость передачи сократилась в 1.9 раза.

Посчитаем экономический эффект от внедрения программы.

По статистическим данным за один день через один узел проходит порядка 20 Мб информации. Из них 10% информации идет на междугородные узлы. Таким образом стоимость пересылки информации в другие города за один день составляет

20*0.1*147/4 = 73.5 тыс.руб.

За один год затраты на междугородную почту составят

73.5*12*30 = 26460 тыс.руб.

Таким образом мы получаем, что экономия от внедрения программы за год составит

26460/1.9 = 13926 тыс.руб.

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

                Исходные данные для программы NET-PATH
44
1 7 3 2 4 5 8 2 36 22 25 20 12 2 6 3
2 3 3 4 9 5 11 7
3 2 1 2 2 4
4 2 5 5 1 5
5 1 4 5
6 2 1 3 12 6
7 3 17 7 13 9 8 3
8 4 1 2 7 3 20 8 10 1
9 4 1 3 28 10 11 2 2 5
10 3 8 1 38 15 12 4
11 3 2 7 9 2 26 11
12 3 6 6 1 2 10 4
13 9 7 9 17 3 15 8 21 3 24 3 23 3 36 15 25 20 20 2
14 2 17 4 22 7
15 3 16 5 13 8 17 5
16 3 19 4 18 4 15 5
17 5 7 7 14 4 15 5 18 1 13 3
18 3 17 1 16 4 19 4
19 3 18 4 16 4 21 5
20 5 8 8 22 1 23 4 24 9 13 2
21 2 13 3 19 5
22 2 20 1 14 7
23 3 20 4 13 3 38 6
24 3 13 3 20 9 38 7
25 9 26 2 1 20 13 20 27 2 36 15 35 3 34 2 32 1 28 3
26 2 11 11 25 2
27 3 25 2 31 2 37 7
28 4 9 10 25 3 30 1 29 1
29 3 28 1 30 1 33 3
30 2 28 1 29 1
31 3 27 2 44 6 34 3
32 2 25 1 33 1
33 3 32 1 29 3 34 3
34 4 33 3 25 2 31 3 35 2
35 3 34 2 25 3 41 5
36 5 25 15 37 1 1 22 13 15 43 1
37 5 27 7 38 1 36 1 42 4 41 1
38 5 37 1 10 15 23 6 24 7 40 5
39 2 40 5 44 7
40 3 38 5 43 4 39 5
41 4 35 5 37 1 42 1 44 1
42 2 41 1 37 4
43 2 36 1 40 4
44 3 31 6 41 1 39 7