Протокол XModem-CRC


Протокол XModem-CRC представляет собой модификацию протокола XModem, в котором обнаружение ошибок производится с использованием циклического кода. Длина проверочной последовательности составляет 16 бит (CRC-16). Благодаря этому гарантируется обнаружение практически всех одиночных и двойных ошибок, всех нечетных ошибок, всех пакетов ошибок длиной до 16 знаков, а также всех 17-битовых ошибок с вероятностью 0,999969 и более длинных пакетов ошибок с вероятностью 0,999984.

В начале соединения вместо знака NAK приемник передает последовательность знаков "с" (63h). Если передатчик не поддерживает протокол XModem-CRC, он игнорирует эти знаки. Не получив ответа на передачу трех знаков "с", приемник переходит на работу по протоколу XModem и передает знаки NAK.

Протокол XModem-IK

Протокол XModem-IK представляет собой модификацию протокола XModem-CRC с блоками длиной 1024 байт. Использование блоков длиной 1 Кбайт позволяет снизить задержки при передачи файлов по системам связи с временным уплотнением, с использованием современных модемов и в сетях с коммутацией пакетов, где длина пакета, как правило, равна величине 1024 байт либо кратна ей. Кроме того, по сравнению с обычным протоколом Xmodem, уменьшена относительная доля заголовков в общем объеме передаваемой информации.

Таблица 9.2. Передача файла с помощью протокола XModem-lK

ПЕРЕДАТЧИК Направление передачи ПРИЕМНИК
  *- <s —kdoom.wad>
<doom wad open x.x minutes > (файл doom.wad открыт в x.x минут)    
    <с>
<STX>01 РЕ<данные[1024]хСНС-16> -*  
  *- <АСК>
<STX> 02 FD <данные[1024]хСРС-16>    
  «- <АСК>
<STX> 03 FC <данные[1000]> <CPMEOF [24]> <CRC-16>  
    <АСК>
<ЕОТ>  
  «— <АСК>
Передача файла завершена


Для передачи приемнику сообщения об увеличении длины передаваемого блока вместо знака SOH (Olh) в начале блока ставится знак STX (02h). Номер блока, передаваемый во втором и третьем бантах увеличивается на единицу независимо от его длины.

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

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

Таблица 9.3. Передача блоков по 1024 и 128 байтов с помощью протокола XModem-lK применяться при групповой или одиночной передаче файлов. Для сохранения целостности передаваемых данных с протоколом Х Modem-1 К необходимо использовать CRC-16.

ПЕРЕДАТЧИК Направление передачи ПРИЕМНИК
  ^ <s—kdoom.wad>
<doom,wad open x.x minutes > - -»  
    <с>
<STX> 01 FE <данные[1024]хСРС-16> -*  
  <- <АСК>
<STX> 02 FD <данные[1024]хСНС-16> -*  
    <АСК>
<STX> 03 FC <данные[128]хСПС-16>    
    <АСК>
<STX> 04 FB <данные[100]> <CPMEOF [24]> <CRC-16>  
    <АСК>
<EOT>  
    <АСК>
Передача файла завершена


Процесс передачи блоков и управляющих сигналов между передатчиком и приемником при использовании протокола XModem-lK иллюстрируется табл. 9.2 и 9.3.

Протокол 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 и ряд других.

Протокол YModem-g

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

Вариант g протокола YModem обеспечивает высокую эффективность передачи данных. Он используется приемником, который инициирует групповую передачу путем посылки знака "g" вместо "с". Передатчик, распознавший этот знак, прекращает ожидание обычных подтверждений по каждому переданному блоку и передает последовательные блоки на полной скорости с использованием метода управления потоком, такого как XON/XOFF.

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

При обнаружении ошибки в случае использования протокола YModem-g приемник прерывает передачу, посылая последовательность, состоящую из последовательности знаков CAN. Пример сеанса передачи с использованием протокола YModem-g приведен на табл. 9.6. '

Расширение YModem-g протокола YModem позволяет значительно повысить скорость передачи данных в каналах, защищенных от ошибок. То есть при использовании модемов со встроенными протоколами защиты от ошибок. Это достигается за счет отказа от переспроса принятых с ошибками блоков — при обнаружении ошибки передача файла прерывается. Для повышения быстродействия в последующих модификациях протокола XModem (например, в протоколе ZModem) был применен так называемый "оконный" алгоритм (процедура GBN), при котором последующие блоки передаются подряд, без ожидания подтверждения правильного приема некоторого числа блоков.

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

ПЕРЕДАТЧИК Направление передачи ПРИЕМНИК
  *- <sb doom.'><CR>
"Передача в групповом режиме"    
    <д> (command:rb — д)
<SOH> <00 FF foo.C NUL[123]> <CRC-16>  
  <= <д>
<SOH>01 РЕ<данные[128]хСНС-16>    
<STX> 02 FD <данные[1024]><СРС-16>  
<STX>.03 FC <данные[128]><СПС-16> -^  
<SOH> 04 FB <данные[100]> <CPMEOF[28]> <CRC-16> ... . -».,..  
<EOT>    
  ^ <АСК>
  ———<=——— <д>
<SOH> <00 FF NUL[128]> <CRC-16>  
Передача файла завершена


Протокол ZModem

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

> высокое быстродействие благодаря использованию процедуры SBN;

> динамическая адаптация к качеству канала связи посредством изменения в широких пределах размера передаваемых блоков;

> возможность возобновления прерванной передачи файла с того места, на котором произошел сбой;

> повышенная достоверность передачи благодаря использованию 32-разрядной проверочной комбинации (CRC);

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

> простота использования;

> обеспечение высокой пропускной способности;

> сохранение целостности информации;

> достижение высокой надежности передачи;

> простота реализации.



Дата добавления: 2016-05-30; просмотров: 3060;


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

Воспользовавшись поиском можно найти нужную информацию на сайте.

Поделитесь с друзьями:

Считаете данную информацию полезной, тогда расскажите друзьям в соц. сетях.
Poznayka.org - Познайка.Орг - 2016-2024 год. Материал предоставляется для ознакомительных и учебных целей.
Генерация страницы за: 0.015 сек.