6.4. Протокол YModem

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

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

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

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

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

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

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

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

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

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

6.5. Протокол YModem-g

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

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

6.6. Протокол ZModem

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

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

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

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

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

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

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

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

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

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

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

6.7. Протокол Kermit

Протокол Kermit предназначен для передачи файлов между компьютерами разных типов, включая большие и миникомпьютеры. Он рассчитан на работу в условиях сильных помех и при больших задержках в канале связи. В отличие от протоколов XModem и Ymodem, в протоколе Kermit используются блоки переменной длины, максимальное значение которых 94 байта. Также как протоколы YModem и Zmodem, протокол Kermit обеспечивает групповую передачу файлов.

Наряду со стандартным протоколом Kermit в ряде программ реализован более эффективный протокол Super Kermit, предусматривающий для уменьшения задержек передачи использовать механизм переменного "окна". В этом "окне" может содержаться от 1 до 32 блоков. На приемном конце канала осуществляется обнаружение ошибок, но повторная передача не запрашивается до тех пор, пока не будут переданы все блоки "окна". Кроме того, в протоколе реализован простой метод сжатия данных, позволяющий дополнительно сократить время передачи. Если удаленный компьютер поддерживает протокол Kermit, то переключение на работу с ним происходит автоматически.

6.8. Рекомендации по выбору протокола передачи файлов

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

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

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

Протокол XModem-lK (в ряде программ, например в Procomm, он называется YModem) аналогичен классическому протоколу XModem, отличаясь от него только объемом передаваемых блоков — 1 Кбайт вместо 128 байт. Благодаря большим размерам блока, уменьшается относительная доля передаваемой служебной информации, в том числе и обеспечивающей обнаружение ошибок. Однако, если обнаружена ошибка, требуется повторная передача большого объема данных. При хорошем качестве канала связи протокол XModem-1 К обеспечивает более высокую скорость передачи, чем XModem. Если же качество соединения плохое, то быстродействие протокола XModem оказывается выше.

Для передачи нескольких файлов необходимо использовать протокол YMo-dem, во многих коммуникационных программах называемый как YModem Batch.

При использовании модемов с аппаратной коррекцией ошибок следует применять протокол YModem-g (в ряде программ он называется YModem-g Batch). В этом потоковом протоколе передающая сторона не ожидает подтверждения правильного приема блока данных. В случае обнаружения ошибки принимающая сторона просто прерывает прием. Если установлено соединение с аппаратным исправлением ошибок (например, с помощью модема с протоколом MNP4 или V.42), то протокол YModem-g обеспечивает более высокую скорость передачи файлов, чем варианты протокола XModem или протокол YModem.

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

Благодаря своим свойствам протокол ZModem можно считать наилучшим выбором независимо от того, установлено ли модемом соединение с исправлением ошибок или нет. Кроме того, стоит иметь в виду, что данный протокол явился основой для большого числа других протоколов, улучшающих те или иные его свойства и, как правило, ориентированных на работу в определенных условиях. К таким протоколам относятся SeaLink, MEGALink, WXModem и ряд других. )