Kermit
Kermit — это семейство программных протоколов и утилит для передачи файлов и управления терминалом, разработанное в 1981 году в Колумбийском университете (США). Название происходит от имени лягушонка Кермита из телепрограммы «Маппет-шоу». Kermit представляет собой протокол, ориентированный на надёжную передачу данных через последовательные каналы связи (RS-232, модемы) и компьютерные сети, включая TCP/IP. Основное назначение — обеспечение файлового обмена между разнородными системами (мейнфреймы, миникомпьютеры, персональные компьютеры) в условиях, когда другие протоколы (например, XMODEM, YMODEM) были менее эффективны или не поддерживались.
История
Протокол Kermit был создан Фрэнком да Крусом и Биллом Катпитом в Колумбийском университете. Первоначальная версия (1981 год) предназначалась для передачи файлов между мейнфреймами IBM и персональными компьютерами под управлением CP/M. В 1983 году вышла версия для MS-DOS, а затем — для Unix, VMS, Mac OS и других платформ. К 1985 году Kermit стал стандартом де-факто для академических и исследовательских учреждений, особенно в среде UNIX и VAX/VMS.
В 1990-е годы, с распространением TCP/IP и протоколов FTP, HTTP, а также появлением более скоростных модемов (V.34, V.90), использование Kermit сократилось. Однако он оставался востребованным в специализированных областях: встроенные системы, промышленные контроллеры, спутниковая связь и военные приложения, где требовалась высокая надёжность при низкой скорости и плохом качестве канала.
Архитектура и принципы работы
Протокол передачи
Kermit использует асинхронную последовательную передачу с переменной длиной пакета (от 20 до 1024 байт). Каждый пакет содержит стартовый байт, номер пакета, поле данных, контрольную сумму (CRC-16 или CRC-32) и завершающий байт. В отличие от XMODEM, Kermit допускает передачу произвольных двоичных данных (без потери управляющих символов) за счёт кодирования — каждый байт, который может быть воспринят как управляющий, удваивается или заменяется последовательностью.
Управление потоком и коррекция ошибок
Протокол поддерживает скользящее окно (до 32 пакетов), что позволяет повысить эффективность на каналах с задержкой (например, спутниковые линии). При обнаружении ошибки (несовпадение контрольной суммы) отправитель повторяет пакет. Kermit также поддерживает сжатие данных (алгоритм сжатия на основе LZW) и шифрование (DES, 3DES) в расширенных версиях.
Терминальный режим
Помимо файлового обмена, Kermit включает эмуляцию терминала (VT100, VT220, ANSI) и возможность выполнения команд на удалённой системе (remote execution). Это позволяло использовать Kermit как универсальный инструмент для администрирования Unix-систем через последовательный порт.
Реализации
C-Kermit
Наиболее известная реализация — C-Kermit, написанная на языке C. Она поддерживает большинство операционных систем (Unix, Linux, macOS, Windows, VMS, MVS). C-Kermit включает встроенный скриптовый язык (Kermit Script), позволяющий автоматизировать передачу файлов, выполнение команд и настройку соединений. Версия 9.0 (2004 год) добавила поддержку IPv6, SSL/TLS и SSH.
Kermit 95
Коммерческая версия для Windows и OS/2, выпущенная в 1995 году. Включала графический интерфейс, поддержку модемов (V.90, V.92) и улучшенную эмуляцию терминала. Распространялась по лицензии shareware.
Embedded Kermit
Урезанная версия для встраиваемых систем (микроконтроллеры, ПЛИС). Используется в промышленных контроллерах, медицинском оборудовании и телекоммуникационных устройствах.
Применение
Научные и академические сети
В 1980–1990-е годы Kermit был основным средством передачи данных между университетами и исследовательскими центрами, особенно в сетях BITNET и DECnet. Он позволял обмениваться файлами между системами с разными кодировками (ASCII, EBCDIC) и операционными системами.
Военные и правительственные системы
Kermit применялся в системах управления и связи Министерства обороны США, НАТО и других государств. Его надёжность и устойчивость к помехам делали его пригодным для спутниковых и радиорелейных каналов.
Встраиваемые системы и промышленность
Вплоть до 2010-х годов Kermit использовался для загрузки прошивок в микроконтроллеры, программируемые логические контроллеры (ПЛК) и системы управления технологическими процессами (SCADA). В России и странах СНГ Kermit применялся на предприятиях оборонной и атомной промышленности для обновления ПО на оборудовании с последовательными интерфейсами.
Ретро-вычисления и эмуляция
Среди энтузиастов ретро-вычислений Kermit остаётся популярным для передачи файлов между старыми компьютерами (Apple II, Commodore 64, IBM PC/XT) и современными системами через эмуляторы последовательных портов (например, с помощью USB-адаптеров FTDI).
Критика и ограничения
Основные недостатки Kermit:
- Низкая скорость по сравнению с более современными протоколами (FTP, SCP, rsync). Максимальная скорость передачи по последовательному порту ограничена 115 200 бит/с (реально — 38 400–57 600 бит/с).
- Сложность настройки для неопытных пользователей: требуется знание параметров порта (скорость, чётность, стоп-биты) и типов кодирования.
- Отсутствие шифрования в базовой версии (добавлено только в C-Kermit 9.0).
- Зависимость от последовательного порта — для использования в современных сетях требуется эмуляция COM-порта через USB или TCP/IP.
Интересные факты
- Название «Kermit» было выбрано как шутка: авторы хотели, чтобы протокол ассоциировался с лягушонком, который «прыгает» между системами.
- В 1989 году Kermit был включён в состав операционной системы IBM AIX.
- Существует версия Kermit для мейнфреймов IBM под управлением MVS (z/OS), которая до сих пор используется в некоторых банковских системах.
- В 2005 году Колумбийский университет прекратил активную поддержку Kermit, передав разработку сообществу open-source.
Источники
- Frank da Cruz, Bill Catchings. «Kermit: A File Transfer Protocol for Diverse Environments». Columbia University, 1981.
- «C-Kermit User Manual». Columbia University, 2004.
- «Kermit 95 Reference Guide». Columbia University, 1995.
- «Embedded Kermit: A Lightweight Protocol for Microcontrollers». Embedded Systems Programming, 2002.
- «Kermit Protocol Specification». IETF RFC 2840, 2000.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →