ЗМОДЕМ


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

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

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

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

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

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