Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответы к экзамену Архитектура ЭВМ и ОС.docx
Скачиваний:
18
Добавлен:
15.04.2019
Размер:
5.19 Mб
Скачать

9.4. Протокол yModem

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

^ передавать информацию о имени и пути файла в-блоке 0 в виде строки знаков ASCII, завершающейся знаком NUL (Oh);

> использовать эту информацию на приемной стороне в качестве имени и пути принятого файла, если иная реализация не оговорена специально;

> применять проверку CRC-16 при приеме знаков "с", в противном случае использовать 8-битовую контрольную сумму;

> принимать любую комбинацию из 128- и 1024-байтных блоков внутри каждого принимаемого файла;

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

> передающая программа не должна изменять длину неподтвержденного блока;

> передавать в конце каждого файла знаки EOF до десяти раз, пока не будет принят знак АСК;

>• обозначать конец сеанса связи нулевым (пустым) именем пути.

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

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

Как и в случае передачи одного файла, приемник инициирует групповую передачу путем посылки знака "с" (для режима CRC-16).

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

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

Таблица 9.4. Групповая передача файлов с помощью протокола YModem

ПЕРЕДАТЧИК

Направление передачи

ПРИЕМНИК

 

<-

<sbdoom."xCR>

"Передача в групповом режиме!

-*

 

 

«-

<с> (command:rb)

<SOH> <00 FF doom.exe NUL[123]> <CRC-16>

->

 

 

*-

<с>

<SOH> 01 FE <данные[1281><СПС-16>

 

 

«- •

<АСК>

<SOH> 03 PC <данные[1024]хСРС-16>

 

 

 

<АСК>

<SOH> 04 FB <данные[1001> <СРМЕОР [28]> <CRC-16>

^

 

 

<-

<АСК>

<ЕОТ>

 

 

 

^

<NAK>

<ЕОТ>

 

 

*-

<АСК>

 

<-

<с>

<SOH> <00 FF NUL[128]> <CRC-16>

 

 

«-

<АСК>

Передача файла завершена

Имя файла (возможно с указанием пути) передается как строка кодов ASCII, завершаемая знаком NUL. Этот формат имени файла используется в функциях, ориентированных на операционные системы типа MS-DOS, и в функции fopen библиотеки языка Си. В имя файла не включаются пробелы. Обычно передается только само имя без префикса справочника. Имя диска источника (например, А:, В: и т.д.) не передается. Если передатчик не поддерживает передачу знаков в обоих регистрах, имя передается в строчном регистре. Если в имя файла включен каталог, его название должно ограничиваться знаками "/".

Обозначения длины файла и каждого последующего поля произвольны. Длина файла представляется в блоке как десятичная строка, обозначающая количество байт в файле. В нее не должны входить знаки EOF ("Z) или другие знаки (garbage characters), используемые для заполнения последнего блока. Если передаваемый файл увеличивается во время передачи, то параметр "Длина файла" должен иметь значение, соответствующее максимально ожидаемому размеру или не передаваться вовсе.

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

Таблица 9.5. Групповая передача файлов блоками по 1 Кбайт с помощью протокола YModem

ПЕРЕДАТЧИК

Направление передачи

ПРИЕМНИК

4

^

<sb —k doom.«><CR>

"Передача в групповом режиме!

-*

 

 

<-

<с> (corrimand:rb)

<SOH> <00 FF doom.exe NUL[123]> <CRC-16>

 

 

 

«-

<с>

<SOH> 01 FE <данные[12в]><СНС-16>

-*

 

 

«-

<АСК>

<SOH> 02 FC <данные[ 1024]><:CRC-16>

 

 

*-

<АСК>

<SOH> 03 FB <данные[100]> <CPMEOF [28]> <CRC-16>

 

 

 

^

<АСК>

<EOT>

 

 

*-

<NAK>

<ЕОТ>

-*

 

 

<-

<АСК>

 

«-

<С>

<SOH> <00 FF NUL[128]> <CRC-16>

 

 

 

<-

<АСК>

Передача файла завершена

последнего изменения файла, и измеряется в секундах по Гринвичу, начиная с 1 января 1970 г. Это время называется Универсальным Координационным Временем (Universal Coordinated Time). Дата 0 обозначает, что дата модификации неизвестна и должна быть оставлена дата приема файла. Этот формат используется для исключения неопределенности при передачах файлов между различными временными зонами. ,

Если передается параметр "Режим файла", то один пробел должен отделять этот параметр от даты модификации. Режим файла передается как восьмеричная строка. Во всех операционных системах, кроме UNIX, данный параметр устанавливается в "О".

Протокол YModem допускает возможность введения других полей заголовка без нарушения совместимости со своими прежними версиями. Оставшаяся часть блока устанавливается в "О". Это важно для сохранения совместимости "снизу вверх".

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

Далее приемник инициирует передачу содержимого файлов в соответствии с протоколом XModem-CRC. После того как содержимое файла передано, приемник запрашивает имя следующего файла.

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

По умолчанию приемник запрашивает CRC-16.

Протокол YModem поддерживается большинством связных программ общего пользования, например YAM (в операционных системах СР/М, СР/М-86, СРРМ) или rz/sz (в операционных системах UNIX, Xenix, VMS). Из коммерческих приложений его содержат программы MTEZ, Telix и ряд других.