Kermit — это компьютерный протокол передачи и управления файлами , а также набор коммуникационных программных инструментов, которые в основном использовались на заре персональных компьютеров в 1980-х годах. Он обеспечивает согласованный подход к передаче файлов, эмуляции терминала , программированию сценариев и преобразованию набора символов на различном компьютерном оборудовании и платформах операционных систем .
Протокол Kermit поддерживает передачу текстовых и двоичных файлов как по полнодуплексным, так и по полудуплексным 8-битным и 7-битным последовательным соединениям независимо от системы и среды и реализован на сотнях различных компьютерных и операционных системных платформ. В полнодуплексных соединениях используется протокол скользящего окна с выборочной повторной передачей, который обеспечивает превосходную производительность и характеристики устранения ошибок. В 7-битных соединениях блокирующие сдвиги обеспечивают эффективную передачу 8-битных данных. При правильной реализации, как в коллекции Kermit Software Колумбийского университета , ее авторы утверждают, что производительность равна или превосходит другие протоколы, такие как ZMODEM , YMODEM и XMODEM , особенно при плохом соединении. [1] При соединениях через статистические мультиплексоры RS-232 , где некоторые управляющие символы не могут быть переданы, Kermit можно настроить для работы, в отличие от таких протоколов, как XMODEM, которые требуют , чтобы соединение было прозрачным (т.е. все 256 возможных значений байта). быть передаваемым).
Kermit можно использовать как средство для загрузки другого программного обеспечения, даже самого себя. Для распространения Kermit через не 8-битные чистые сети Columbia разработала .boo , систему кодирования двоичного текста , аналогичную BinHex . Например, компьютеры, совместимые с IBM PC, и компьютеры Apple с установленной картой совместимости могут подключаться к несовместимым в противном случае системам, таким как мэйнфрейм, для получения MS-DOS Kermit в формате .boo. Затем пользователи могут ввести «малыш Кермит» на языке BASIC на своих персональных компьютерах, который загрузит Kermit и преобразует его в двоичный код. [2] [3]
Точно так же машины CP/M используют множество различных форматов гибких дисков , а это означает, что одна машина часто не может читать диски с другой машины CP/M, а Kermit используется как часть процесса передачи приложений и данных между машинами CP/M и другими машинами. машины с разными операционными системами. Программа копирования файлов CP/M PIP обычно имеет доступ к последовательному порту компьютера ( RS-232 ) и, если она настроена на использование очень низкой скорости передачи данных (поскольку она не имеет встроенной коррекции ошибок), может использоваться для передачи небольшого , простая версия Kermit с одной машины на другую по нуль-модемному кабелю, или, в случае неудачи, очень простая версия протокола Kermit может быть вручную закодирована в двоичном виде менее чем за 2 КБ с использованием DDT, инструмента динамической отладки CP/M. После этого простую версию Kermit можно будет использовать для загрузки полнофункциональной версии. Эту версию затем можно использовать для передачи любого приложения или данных CP/M. [4]
Новые версии Kermit включали язык сценариев и автоматизацию команд. [5] Язык сценариев Kermit произошел от командного языка, вдохновленного TOPS-20 EXEC [6] , и на него синтаксически и семантически повлияли ALGOL 60 , C , BLISS-10 , PL/I , SNOBOL и LISP . [7]
Корректность протокола Кермита проверена формальными методами. [8]
В конце 1970-х годов пользователи мэйнфреймов Колумбийского университета имели только 35 килобайт памяти на человека. Kermit был разработан в университете, чтобы студенты могли перемещать файлы между собой и дискетами на различных микрокомпьютерах по всему кампусу, [9] [10] [11] , таких как мэйнфреймы IBM или DEC DECSYSTEM-20 и Intertec Superbrains, работающие под управлением CP/M . Мэйнфреймы IBM использовали набор символов EBCDIC , а машины CP/M и DEC использовали ASCII , поэтому преобразование между двумя наборами символов было одной из первых функций, встроенных в Kermit. Первая передача файлов с помощью Кермита произошла в апреле 1981 года. Первоначально протокол был разработан в 1981 году Фрэнком да Крузом и Биллом Кэтчингсом. [12] [13]
Колумбийский университет координировал разработку версий Kermit для множества различных компьютеров в университете и других местах и распространял программное обеспечение бесплатно; Кермит для нового персонального компьютера IBM стал особенно популярен. В 1986 году университет основал проект Кермит, который взял на себя разработку и начал взимать плату за коммерческое использование; проект был финансово самодостаточным. [11] Для некоммерческого использования Колумбийский университет заявил, что [14]
Кермит доступен каждому, чтобы использовать и делиться им. Как только вы его получите, не стесняйтесь передать его своим друзьям и коллегам. Хотя оно защищено авторским правом и не является общественным достоянием, мы лишь просим вас не пытаться продать его с целью получения прибыли и использовать его только в мирных и гуманных целях.
К 1988 году Кермит был доступен более чем на 300 компьютерах и операционных системах. [15] Протокол стал де-факто стандартом передачи данных [16] для передачи файлов между разнородными компьютерными системами, и к началу 1990-х годов он мог преобразовывать многоязычные кодировки символов . Программное обеспечение Kermit использовалось во многих странах для решения самых разных задач: от простых студенческих заданий до решения проблем совместимости на борту Международной космической станции . [11] Он был перенесен на широкий спектр мэйнфреймов, мини-компьютеров и микрокомпьютерных систем, вплоть до карманных компьютеров и электронных карманных калькуляторов. Большинство версий имели пользовательский интерфейс, основанный на оригинальном TOPS-20 Kermit. Более поздние версии некоторых реализаций Kermit также поддерживают как сетевые, так и последовательные соединения.
В настоящее время поддерживаются реализации C -Kermit (для Unix и OpenVMS ) и Kermit 95 (для версий Microsoft Windows , начиная с Windows 95 и OS/2 ), но доступны и другие версии.
С 1 июля 2011 года Колумбийский университет прекратил хостинг этого проекта и выпустил его с открытым исходным кодом . В июне 2011 года проект Kermit Project выпустил бета-версию C-Kermit v9.0 под пересмотренной лицензией BSD из 3 пунктов . [17]
Помимо реализаций, разработанных и/или распространяемых Колумбийским университетом, протокол Kermit был реализован в ряде сторонних пакетов коммуникационного программного обеспечения, в том числе в ProComm и ProComm Plus . [18] [19] [20] [21] [22] Термин «SuperKermit» был придуман сторонними поставщиками для обозначения более высокоскоростных реализаций Kermit, предлагающих такие функции, как полнодуплексный режим, [23] раздвижные окна, [24] ] [25] [26] [27] [28] [29] и длинные пакеты; однако этот термин был отвергнут первоначальной командой Кермита в Колумбийском университете, которая считала это просто особенностями основного протокола Кермита. [30]
Кермит был назван в честь лягушки Кермита из «Маппет-шоу» с разрешения Henson Associates . [31] Иконка программы в версии для Apple Macintosh представляла собой изображение лягушки Кермита. Тем не менее , был создан бэкроним, возможно, чтобы избежать проблем с товарными знаками: K L10 Error - Free Reciprocal Microprocessor Interchange по линиям T TY . [32]
Kermit — это открытый протокол: каждый может создать на его основе свою собственную программу, однако авторские права на некоторые программы и исходный код Kermit принадлежат Колумбийскому университету. [33] [34] На последней странице лицензии было написано: [35]
Начиная с версии 9.0 (начиная с первого бета-тестирования), C-Kermit имеет лицензию с открытым исходным кодом, пересмотренную лицензию BSD из 3 пунктов. Каждый может использовать его по своему усмотрению для любых целей, включая перераспределение и перепродажу. Он может быть включен в любую операционную систему, в которой он работает, или может быть настроен для работы, включая как бесплатные, так и коммерческие версии Unix и Hewlett-Packard (ранее DEC) VMS (OpenVMS). Техническая поддержка будет доступна со стороны Колумбийского университета только до 30 июня 2011 года.