Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
modem.pdf
Скачиваний:
27
Добавлен:
17.05.2015
Размер:
3.06 Mб
Скачать

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

Обнаружение и коррекция ошибок

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

Что мы делаем, когда голос в трубке едва слышен? Во первых, если мы не расслышали какое то слово, мы просим собе седника его повторить. Так же поступает, и модем. Он передает информацию не сплошным потоком^ а разделяя на блоки, и после передачи каждого такого блока ждет ответа от модема на другом конце линии — все ли понято правильно. Если принимающий модем не смог расслышать очередной блок, он просит его повторить. Вот почему при плохой связи скорость передачи снижается — часть информации приходится посылать по нескольку раз. Такой принцип коррекции ошибок называется ARQ (Automatic Repeat reQuest, автоматический запрос на повторение).

Во вторых, можно попросить собеседника говорить погромче. Модем не может говорить громче или тише1, но зато он может менять скорость передачи — снижение темпа речи помогает разобрать слова даже эффективнее, чем увеличение громкости. Поэтому почти все протоколы связи (их мы будем подробно рассматривать ниже) отслеживают количество ошибок и, если оно превышает некоторую величину, предлагают модему собеседнику перейти на более низкую скорость или уменьшить размер блоков (т. е. «говорить по буквам»).

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

— для него это просто последовательность битов.

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

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

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

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

У семи нянек...

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

Дело в том, что коррекция ошибок может осуществляться как минимум в двух местах — в коммуникационной программе, которая реализует какой то протокол передачи файлов (например, Xmodem), и в самом модеме, если в нем встроен аппаратный протокол коррекции ошибок (например, V.42). Друг другу эти две коррекции не мешают (хотя одна из них, если активна другая, явно лишняя), но пользователя они могут запутать довольно основательно.

Не меньшая путаница порождается и сжатием данных, о котором мы говорили выше. На сей раз есть уже три действующих лица, которые горят желанием сжать передаваемые данные, — кроме протокола передачи файлов и аппаратного протокола сжатия данных (например, V.42bis), сам пользователь тоже зачастую архивирует файлы перед посылкой! Понятно, что после программ архиваторов (например, arj или zip) другим компрессорам делать уже нечего — но так ли это очевидно для свежеиспеченного владельца модема?

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

Подключенный к компьютеру модем может находиться в одном из двух режимов — в режиме передачи данных или в режиме ко*

манд. Если вы работали когда нибудь с принтерами, то помните, что у них обычно есть кнопка (и лампочка) под названием «online». Когда эта лампочка горит, принтер не поддается ручному управлению: чтобы загрузить лист бумаги или настроить параметры печати с панели управления, нужно сначала вы ключить режим online.

Режим передачи данных модема напоминает режим online принтера (собственно, по английски это так и называется — «mo dem is online»). В этом режиме все, что посылает ему компьютер, модем воспринимает как данные, которые нужно преобразовать в аналоговый сигнал и послать по телефонной линии. Как говорят, модем в режиме передачи «прозрачен для данных».

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

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

Система команд модема

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

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

Сразу после включения модем находится в режиме команд, а переход в режим передачи данных осуществляется по команде снятия трубки и набора номера. Существует специальная команда (так называемая escape*последовательность), которая воспринимается модемом как команда и в режиме передачи данных — она как раз и служит для перехода обратно в режим команд. Это порождает специфическую проблему: если в самих данных, пред

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

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

АТ:команды

Большинство команд стандарта Hayes представляют собой строки символов, начинающиеся с двух букв AT (от англ. attention

— «внимание») и заканчивающиеся символом перевода каретки (клавиша Enter). Поэтому команды стандарта Hayes часто назы вают «АТ командами». Список стандартных АТ команд приведен

вприложении 2 на стр. 293.

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

Протоколы

Житейское употребление слова «протокол» (например, «протокол допроса») довольно точно отражает тот смысл, который в него вкладывается в мире телекоммуникаций. Разница лишь в том, что если протокол допроса пишется во время (или после) самого допроса, то протокол связи должен быть известен сторонам заранее — иначе связь будет невозможна.

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

протоколе связи.

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

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

Итак, в этом разделе мы рассмотрим:

телекоммуникационные стандарты вообще — кто, как и зачем их устанавливает;

коммуникационные параметры — стартовые и стоповые биты, контроль четности, управление потоком (стандарт V.14);

протоколы ^модемной связи — стандарты ITU T V.21, V.22, V.22bis, V.32, V.32bis, V.34, а также фирменные протоколы PEP, HST, V.FC, x2, K56Flex;

протоколы факсимильной связи;

протоколы коррекции ошибок и сжатия данных — MNP1 MNP5, V.42, V.42bis;

протоколы передачи файлов — Xmodem, Kermit, Zmodem и другие;

параметры эмуляции терминала.

Определимся с терминологией

Слово «протокол» в применении к модемам часто употребляют для обозначения трех совершенно разных вещей — протоколов связи (например, V.22), протоколов коррекции ошибок (например, MNP4) и протоколов сжатия данных (например, V.42bis). Помимо этого, существуют еще и протоколы высокого уровня, реализованные уже не в модеме, а в тех программах, которые с ним работают (в этой главе мы познакомимся только с одной их разновидностью — с протоколами передачи файлов, такими как Zmodem). Читатель должен хорошо понимать разницу между разными типами протоколов и не смешивать, скажем, сжатие данных в аппаратных протоколах сжатия и в протоколах передачи файлов. В тех местах, где вероятность запутаться наиболее велика, я буду обращать ваше внимание на эти различия.

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]