ZMODEM - ZMODEM

ZMODEM
Протокол связи
Цельпротокол передачи файлов
Разработчики)Чак Форсберг
Введено1986; 34 года назад (1986)
Порт (ы)Никто
Аппаратное обеспечениемодемы

ZMODEM это протокол передачи файлов разработан Чак Форсберг в 1986 г. проект финансируется Telenet чтобы улучшить передачу файлов на их X.25 сеть. Помимо значительного повышения производительности по сравнению со старыми протоколами, ZMODEM предлагал перезапускаемые передачи, автоматический запуск отправителем, расширенный 32-разрядный CRC, и цитирование управляющих символов поддерживающий 8-битный чистый передает, что позволяет использовать его в сетях, в которых не будут передаваться управляющие символы.

В отличие от большинства протоколов передачи, разработанных для системы досок объявлений (BBS), ZMODEM не был напрямую основан на основополагающем XMODEM. Многие варианты XMODEM были разработаны для устранения одного или нескольких его недостатков, и большинство из них осталось обратная совместимость и успешно завершит передачу с «классическими» реализациями XMODEM. В этот список входят собственные разработки Форсберга. YMODEM.

ZMODEM отказался от обратной совместимости в пользу создания радикально улучшенного протокола. Он работал так же или лучше, чем любая из высокопроизводительных разновидностей XMODEM, работал над ссылками, которые раньше вообще не работали, например X.25, или имели низкую производительность, например Телебит модемы, а также полезные функции, которые можно найти в немногих других протоколах или вообще не найти. ZMODEM стал чрезвычайно популярным на системы досок объявлений (BBS) в начале 1990-х, став таким же широко распространенным стандартом, как XMODEM до него.

Улучшения

Потоковое

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

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

XMODEM использовал 128-байтовые полезные данные с трехбайтовым заголовком и однобайтовой контрольной суммой, всего 132 байта на пакет. В эпоху модемов со скоростью 300 бит / с отправка пакета занимала около четырех секунд, а типичные задержки были порядка110 секунды, поэтому накладные расходы на производительность не были значительными. По мере увеличения скорости проблема становится все более проблематичной; на скорости 2400 бит / с пакет занимает около12 отправить, так о15 доступной полосы пропускания тратится на ожидание ACKс. На скорости 9600 бит / с для отправки пакета требуется всего 0,13 секунды, так что примерно12 пропускной способности тратится впустую.

Одним из решений этой проблемы является использование раздвижное окно. Эти протоколы устраняют задержку, позволяя отправителю продолжать посылать несколько пакетов, не дожидаясь ACK. Число пакетов, которое он позволяет продолжить, является «окном», которое обычно составляло от двух до шестнадцати пакетов в большинстве реализаций. Ряд новых версий XMODEM с поддержкой скользящего окна появился в начале 1980-х годов.

Скользящие окна полезны для задержек порядка нескольких длин пакетов, что характерно для XMODEM на обычных телефонных линиях. Однако этого недостаточно для устранения более длительных задержек, обнаруживаемых при международных телефонных звонках или службах X.25, таких как PC Pursuit, где задержки порядка секунды или больше. В других случаях, когда обратный канал был намного медленнее, чем отправляющий, как в случае с Телебит или же Робототехника США модемы, даже небольшое количество ACKs может привести к перегрузке обратного канала и приостановке передачи.

ZMODEM решил эти проблемы, устранив необходимость в ACKs вообще, позволяя отправителю отправлять данные непрерывно, пока получатель не обнаружил ошибок. Только НАКs должны были быть отправлены, если и только если возникла проблема. Поскольку ZMODEM часто использовался для ссылок со встроенным исправлением ошибок, таких как X.25, получатель часто не отправлял отправителю ни одного сообщения. В результате система будет отправлять весь файл в непрерывном потоке, и ZMODEM называл себя «потоковым протоколом».

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

Перезапуск

XMODEM и большинство протоколов, основанных на нем, управляли порядком пакетов, добавляя к данным префикс номера пакета от 1 до 255. Оконные версии использовали этот номер пакета, чтобы указать, какие пакеты были получены правильно, или указать тот, который не получил. Поскольку пакеты имели длину 128 байт, это означало, что максимальный объем данных, который мог быть передан до того, как номера пакетов были перенесены, составлял 32 кБ.

ZMODEM заменил номер пакета на фактическое местоположение в файле, обозначенное 32-битным числом. Это позволило отправить НАК сообщения, которые повторно запускают передачу до точки отказа, независимо от того, как долго файл может быть. Эта же функция также использовалась для перезапуска передач, если они были неудачными или были намеренно прерваны. В этом случае получатель посмотрит, сколько данных было получено ранее, а затем отправит НАК с этим местом, автоматически запускает отправителя с этого места.

Автоматический старт

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

Вариации

Появился ряд модифицированных версий ZMODEM. ZedZap был вариантом ZMODEM с блоками 8 кбайт для лучшей производительности на высокоскоростных модемах. Пиявка был озорным вариантом ZMODEM (среди аналогичных производных XMODEM и YMODEM), который обманул BBS скачать квоты. Обратно совместимое расширение ZMODEM с длиной блока 32 кбайт и 64 кбайт было создано ADONTEC в 2002 и 2007 годах для повышения производительности высокоскоростных безошибочных соединений, таких как сети ISDN или TCP / IP.

Наиболее известные реализации ZMODEM были от Omen Technology, Inc. Чака Форсберга. Они включали DSZ (DOS Send ZMODEM), GSZ (Graphical Send ZMODEM) и вездесущий (l) rzsz для вариантов Unix.

В настоящее время разработчики Synchronet создали современную реализацию X / Y / ZMODEM под названием SEXYZ, основанную на пакете zmtx / zmrx, который изначально работает в вариантах Windows и Unix, поддерживает длинные имена файлов и более быструю и надежную передачу данных. Реализация ZMODEM от SEXYZ также была включена в проект SyncTERM. Synchronet, SEXYZ и SyncTERM - это кроссплатформенные проекты с открытым исходным кодом, ориентированные на BBS.

Сам Форсберг собрал в ЗМОДЕМ-90 ряд улучшений. Первым из них является MobyTurbo, в котором было удалено контрольное квотирование для дальнейшего повышения производительности примерно на 15%. Даже в сетях, которые «поедают» управляющие символы, ZMODEM-90 может быть настроен так, чтобы цитировать только те символы, которые сеть фактически ест, а не все возможные. Подобное улучшение позволяет ZMODEM-90 работать в 7-битных сетях, тогда как более ранние протоколы (за заметным исключением Кермит ) все в той или иной степени требовали 8-битных. Наконец, ZMODEM-90 включает базовый кодирование длин серий система сжатия для дальнейшего повышения производительности несжатых файлов.

Ограничения

  • Некоторые пакеты ZMODEM (например, ZACK, ZRPOS) включают смещение байта в переданный файл как 32-битное целое число без знака. Такая конструкция ограничивает возможности ZMODEM надежно передавать только файлы размером менее 4 ГБ.
  • Несмотря на то, что протокол может это допускать, реализация reference (l) rzsz не может кодировать произвольные неуправляющие символы (например, '~'), которые часто используются программами подключения TCP / IP, такими как telnet и ssh, в качестве клиентского "выхода из терминала" символы. Пользователи должны отключить функцию выхода из терминала, чтобы обеспечить надежную передачу по таким ссылкам, например ssh -e none пользователь @ имя хоста.

Рекомендации

внешняя ссылка