Помощничек
Главная | Обратная связь


Археология
Архитектура
Астрономия
Аудит
Биология
Ботаника
Бухгалтерский учёт
Войное дело
Генетика
География
Геология
Дизайн
Искусство
История
Кино
Кулинария
Культура
Литература
Математика
Медицина
Металлургия
Мифология
Музыка
Психология
Религия
Спорт
Строительство
Техника
Транспорт
Туризм
Усадьба
Физика
Фотография
Химия
Экология
Электричество
Электроника
Энергетика

Работа протокола ZModem



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

Фаза начала сеанса

Для начала сеанса передачи файла с использованием протокола ZModem осуществляется вызов передающей программы с указанием имени требуемого файла (файлов) и варианта работы. Перед передачей послается соответствующая строка ("rz" с последующим возвратом каретки) приемной программе для запуска ее. Указанная строка активизирует приемную программу протокола. Затем передающая программа выводит сообщение для пользователя (например, список файлов для передачи).

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

Передающая программа ожидает команды начала передачи файлов от программы приема. Прием символов "с", "g" или знака NAK указывает на передачу файла в соответствии с протоколами XModem или Ymodem. В этом случае передача файла ведется с использованием протокола YModem.

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

При старте программы протокола ZModem передается кадр ZRINIT для начала передачи файла или кадр ZCHALLENGE для верификации передающей программы. Программа приема повторяет передачу кадра с интервалом 10 с (по умолчанию) и в течение 40 с.

При обнаружении кадра ZRQINIT программа приема повторно передает кадр ZRINIT. Передающая программа, приняв кадр ZCHALLENGE, помещает данные в байты ZPO—ZP3 ответного заголовка ZACK.

Получение программой приема кадра ZRINIT, являющегося эхо-возвратом означает, что программа передачи не функционирует. При приеме программой передачи кадра ZRINIT передатчик послает необязательный кадр ZSINIT для определения служебной последовательности "Внимание" (ATTN) программы приема или для задания полного варианта замены управляющих знаков. Если в кадре ZSINIT помещены знаки ESCCTL или ESC8, прежде чем считывать последующий пакет данных приемник активирует требуемые режимы использования управляющих знаков ESC.

В ответ приемник посылает заголовок ZACK, который может содержать номер программы приема, присвоенный изготовителем, или 0.

Фаза передачи файла

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

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

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

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

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

В случае временного отсутствия данных у передатчика для предотвращения тайм-аута приемника передатчик передает кадры нулевой длины.

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

Передатчик посылает кадр ZEOF, содержащий конечное значение смещения, равное числу знаков в файле. В приемнике производится сравнение этого числа с числом принятых знаков. Если принят весь файл, приемник закрывает файл. При удачном закрытии файла приемник отвечает кадром ZRINIT. Если принят не весь файл (продолжается поступление новых кадров ZDATA), приемник игнорирует кадр ZEOF. При невозможности правильного закрытия файла приемником посылается заголовок ZFERR.

 




Поиск по сайту:

©2015-2020 studopedya.ru Все права принадлежат авторам размещенных материалов.