Kermit (protocol)

Last updated

Kermit
Communication protocol
Purpose File transfer
Developer(s)Columbia University
Introduction1981;43 years ago (1981)
Website www.kermitproject.org

Kermit is a computer file transfer and management protocol and a set of communications software tools primarily used in the early years of personal computing in the 1980s. It provides a consistent approach to file transfer, terminal emulation, script programming, and character set conversion across many different computer hardware and operating system platforms.

Contents

Technical

The Kermit protocol supports text and binary file transfers on both full-duplex and half-duplex 8-bit and 7-bit serial connections in a system- and medium-independent fashion, and is implemented on hundreds of different computer and operating system platforms. On full-duplex connections, a sliding window protocol is used with selective retransmission which provides excellent performance and error recovery characteristics. On 7-bit connections, locking shifts provide efficient transfer of 8-bit data. When properly implemented, as in the Columbia University Kermit Software collection, its authors claim performance is equal to or better than other protocols such as ZMODEM, YMODEM, and XMODEM, especially on poor connections. [1] On connections over RS-232 Statistical Multiplexers where some control characters cannot be transmitted,[ citation needed ] Kermit can be configured to work, unlike protocols like XMODEM that require the connection to be transparent (i.e. all 256 possible values of a byte to be transferable).

Kermit can be used as a means to bootstrap other software, even itself. To distribute Kermit through non 8-bit clean networks Columbia developed .boo, a binary-to-text encoding system similar to BinHex. For instance, IBM PC compatibles and Apple computers with a Compatibility Card installed can connect to otherwise incompatible systems such as a mainframe computer to receive MS-DOS Kermit in .boo format. Users can then type in a "baby Kermit" in BASIC on their personal computers that downloads Kermit and converts it into binary. [2] [3]

Similarly, CP/M machines use many different floppy disk formats, which means that one machine often cannot read disks from another CP/M machine, and Kermit is used as part of a process to transfer applications and data between CP/M machines and other machines with different operating systems. The CP/M file-copy program PIP can usually access a computer's serial (RS-232) port, and if configured to use a very low baud rate (because it has no built-in error correction) can be used to transfer a small, simple version of Kermit from one machine to another over a null modem cable, or failing that, a very simple version of the Kermit protocol can be hand coded in binary in less than 2K using DDT, the CP/M Dynamic Debugging Tool. Once done, the simple version of Kermit can be used to download a fully functional version. That version can then be used to transfer any CP/M application or data. [4]

Newer versions of Kermit included scripting language and automation of commands. [5] The Kermit scripting language evolved from its TOPS-20 EXEC-inspired command language [6] and was influenced syntactically and semantically by ALGOL 60, C, BLISS-10, PL/I, SNOBOL, and LISP. [7]

The correctness of the Kermit protocol has been verified with formal methods. [8]

History

In the late 1970s, users of Columbia University's mainframe computers had only 35 kilobytes of storage per person. Kermit was developed at the university so students could move files between them and floppy disks at various microcomputers around campus, [9] [10] [11] such as IBM or DEC DECSYSTEM-20 mainframes and Intertec Superbrains running CP/M. IBM mainframes used an EBCDIC character set and CP/M and DEC machines used ASCII, so conversion between the two character sets was one of the early functions built into Kermit. The first file transfer with Kermit occurred in April 1981. The protocol was originally designed in 1981 by Frank da Cruz and Bill Catchings. [12] [13]

Columbia University coordinated development of versions of Kermit for many different computers at the university and elsewhere, and distributed the software for free; Kermit for the new IBM Personal Computer became especially popular. In 1986 the university founded the Kermit Project, which took over development and started charging fees for commercial use; the project was financially self-sufficient. [11] For non-commercial use, Columbia University stated that [14]

Kermit is for everyone to use and share. Once you get it, feel free to pass it along to your friends and colleagues. Although it is copyrighted and not in the public domain, we only ask that you not attempt to sell it for profit, and that you use it only for peaceful and humane purposes.

By 1988 Kermit was available on more than 300 computers and operating systems. [15] The protocol became a de facto data communications standard [16] for transferring files between dissimilar computer systems, and by the early 1990s it could convert multilingual character encodings. Kermit software has been used in many countries, for tasks ranging from simple student assignments to solving compatibility problems aboard the International Space Station. [11] It was ported to a wide variety of mainframe, minicomputer and microcomputer systems down to handhelds and electronic pocket calculators. Most versions had a user interface based on the original TOPS-20 Kermit. Later versions of some Kermit implementations also support network as well as serial connections.

Implementations that are presently supported include C-Kermit (for Unix and OpenVMS) and Kermit 95 (for versions of Microsoft Windows from Windows 95 onwards and OS/2), but other versions remain available as well.

As of 1 July 2011, Columbia University ceased to host this project and released it as open source. In June 2011, the Kermit Project released a beta version of C-Kermit v9.0 under the Revised 3-Clause BSD License. [17]

As well as the implementations developed and/or distributed by Columbia University, the Kermit protocol was implemented in a number of third-party communications software packages, among others ProComm and ProComm Plus. [18] [19] [20] [21] [22] The term "SuperKermit" was coined by third-party vendors to refer to higher speed Kermit implementations offering features such as full duplex operation, [23] sliding windows, [24] [25] [26] [27] [28] [29] and long packets; however, that term was deprecated by the original Kermit team at Columbia University, who saw these as simply features of the core Kermit protocol. [30]

Kermit was named after Kermit the Frog from The Muppets, with permission from Henson Associates. [31] The program's icon in the Apple Macintosh version was a depiction of Kermit the Frog. A backronym was nevertheless created, perhaps to avoid trademark issues, KL10 Error-Free Reciprocal Microprocessor Interchange over TTY lines. [32]

Kermit is an open protocol—anybody can base their own program on it, but some Kermit software and source code is copyright by Columbia University. [33] [34] The final license page said: [35]

As of version 9.0 (starting with the first Beta test), C-Kermit has an Open Source license, the Revised 3-Clause BSD License. Everybody can use it as they wish for any purpose, including redistribution and resale. It may be included with any operating system where it works or can be made to work, including both free and commercial versions of Unix and Hewlett-Packard (formerly DEC) VMS (OpenVMS). Technical support will be available from Columbia University only through 30 June 2011.

See also

Related Research Articles

<span class="mw-page-title-main">Operating system</span> Software that manages computer hardware resources

An operating system (OS) is system software that manages computer hardware and software resources, and provides common services for computer programs.

<span class="mw-page-title-main">DECSYSTEM-20</span> Type of mainframe computer

The DECSYSTEM-20 was a family of 36-bit Digital Equipment Corporation PDP-10 mainframe computers running the TOPS-20 operating system and was introduced in 1977.

In computing, a virtual machine (VM) is the virtualization or emulation of a computer system. Virtual machines are based on computer architectures and provide the functionality of a physical computer. Their implementations may involve specialized hardware, software, or a combination of the two. Virtual machines differ and are organized by their function, shown here:

<span class="mw-page-title-main">OpenVMS</span> Computer operating system

OpenVMS, often referred to as just VMS, is a multi-user, multiprocessing and virtual memory-based operating system. It is designed to support time-sharing, batch processing, transaction processing and workstation applications. Customers using OpenVMS include banks and financial services, hospitals and healthcare, telecommunications operators, network information services, and industrial manufacturers. During the 1990s and 2000s, there were approximately half a million VMS systems in operation worldwide.

Uploading refers to transmitting data from one computer system to another through means of a network. Common methods of uploading include: uploading via web browsers, FTP clients], and terminals (SCP/SFTP). Uploading can be used in the context of clients that send files to a central server. While uploading can also be defined in the context of sending files between distributed clients, such as with a peer-to-peer (P2P) file-sharing protocol like BitTorrent, the term file sharing is more often used in this case. Moving files within a computer system, as opposed to over a network, is called file copying.

The File Transfer Protocol (FTP) is a standard communication protocol used for the transfer of computer files from a server to a client on a computer network. FTP is built on a client–server model architecture using separate control and data connections between the client and the server. FTP users may authenticate themselves with a plain-text sign-in protocol, normally in the form of a username and password, but can connect anonymously if the server is configured to allow it. For secure transmission that protects the username and password, and encrypts the content, FTP is often secured with SSL/TLS (FTPS) or replaced with SSH File Transfer Protocol (SFTP).

<span class="mw-page-title-main">Terminal emulator</span> Program that emulates a video terminal

A terminal emulator, or terminal application, is a computer program that emulates a video terminal within some other display architecture. Though typically synonymous with a shell or text terminal, the term terminal covers all remote terminals, including graphical interfaces. A terminal emulator inside a graphical user interface is often called a terminal window.

DECnet is a suite of network protocols created by Digital Equipment Corporation. Originally released in 1975 in order to connect two PDP-11 minicomputers, it evolved into one of the first peer-to-peer network architectures, thus transforming DEC into a networking powerhouse in the 1980s. Initially built with three layers, it later (1982) evolved into a seven-layer OSI-compliant networking protocol.

Systems Network Architecture (SNA) is IBM's proprietary networking architecture, created in 1974. It is a complete protocol stack for interconnecting computers and their resources. SNA describes formats and protocols but, in itself, is not a piece of software. The implementation of SNA takes the form of various communications packages, most notably Virtual Telecommunications Access Method (VTAM), the mainframe software package for SNA communications.

UUCP is a suite of computer programs and protocols allowing remote execution of commands and transfer of files, email and netnews between computers.

<span class="mw-page-title-main">Bonjour (software)</span> Computer networking technology

Bonjour is Apple's implementation of zero-configuration networking (zeroconf), a group of technologies that includes service discovery, address assignment, and hostname resolution. Bonjour locates devices such as printers, other computers, and the services that those devices offer on a local network using multicast Domain Name System (mDNS) service records.

Peripheral Interchange Program (PIP) was a utility to transfer files on and between devices on Digital Equipment Corporation's computers. It was first implemented on the PDP-6 architecture by Harrison "Dit" Morse early in the 1960s. It was subsequently implemented for DEC's operating systems for PDP-10, PDP-11, and PDP-8 architectures. In the 1970s and 1980s Digital Research implemented PIP on CP/M and MP/M.

BLISS is a system programming language developed at Carnegie Mellon University (CMU) by W. A. Wulf, D. B. Russell, and A. N. Habermann around 1970. It was perhaps the best known system language until C debuted a few years later. Since then, C became popular and common, and BLISS faded into obscurity. When C was in its infancy, a few projects within Bell Labs debated the merits of BLISS vs. C.

This article lists communication protocols that are designed for file transfer over a telecommunications network.

MIK (МИК) is an 8-bit Cyrillic code page used with DOS. It is based on the character set used in the Bulgarian Pravetz 16 IBM PC compatible system. Kermit calls this character set "BULGARIA-PC" / "bulgaria-pc". In Bulgaria, it was sometimes incorrectly referred to as code page 856. This code page is known by FreeDOS as Code page 3021.

Communication software is used to provide remote access to systems and exchange files and messages in text, audio and/or video formats between different computers or users. This includes terminal emulators, file transfer programs, chat and instant messaging programs, as well as similar functionality integrated within MUDs. The term is also applied to software operating a bulletin board system, but seldom to that operating a computer network or Stored Program Control exchange.

In telecommunications, echo is the local display of data, either initially as it is locally sourced and sent, or finally as a copy of it is received back from a remote destination. Local echo is where the local sending equipment displays the outgoing sent data. Remote echo is where the display is a return copy of data as received remotely. Both are used together in a computed form of error detection to ensure that data received at the remote destination of a telecommunication are the same as data sent from the local source. When (two) modems communicate in echoplex mode the remote modem echoes whatever it receives from the local modem.

Eunice was a Unix-like working environment for VAX computers running DEC's VAX/VMS, based on the BSD version of Unix. It was originally developed ca. 1981 by David Kashtan at SRI, and later maintained and marketed by The Wollongong Group.

BLAST, like XMODEM and Kermit, is a communications protocol designed for file transfer over asynchronous communication ports and dial-up modems that achieved a significant degree of popularity during the 1980s. Reflecting its status as a de facto standard for such transfers, BLAST, along with XMODEM, was briefly under official consideration by ANSI in the mid-80s as part of that organization's ultimately futile attempt to establish a single de jure standard.

CP-6 is a discontinued computer operating system, developed by Honeywell, Inc. in 1976, which was a backward-compatible work-alike of the Xerox CP-V, fully rewritten for Honeywell Level/66 hardware. CP-6 was a command line oriented system. A terminal emulator allowed use of PCs as CP-6 terminals.

References

  1. Some of the sentences in the Technical section are based on text copied, on 30 October 2004, from the Free On-line Dictionary of Computing, which is licensed under the GFDL.
  2. da Cruz, Frank (20 March 1986). "Re: Printable Encodings for Binary Files". Info-Kermit Digest (Mailing list). Kermit Project, Columbia University. Retrieved 1 March 2016.
  3. Fuller, Bill; da Cruz, Frank (11 October 1989). "Kermit Bootstrapping". Info-Kermit Digest (Mailing list). Kermit Project, Columbia University. Retrieved 5 March 2016.
  4. Gianone, C. (23 April 1991). "CP/M-80 KERMIT VERSION 4.11 USER GUIDE". New York: Columbia University Center for Computing Activities. See "Figure 1-1: Bootstrap program for Kermit-80 and CP/M Version 2.2"
  5. columbia.edu Kermit 95
  6. "C-Kermit / Kermit 95 Scripting Tutorial and Library".
  7. "C-Kermit / Kermit 95 Scripting Tutorial and Library".
  8. Huggins, James K. (1995). "Kermit: specification and verification" (PDF). In Börger, Egon (ed.). Specification and validation methods. New York: Oxford University Press. pp. 247–293. ISBN   0-19-853854-5.
  9. da Cruz, Frank; Catchings, Bill (June 1984). "Kermit: A File-Transfer Protocol for Universities / Part 1: Design Considerations and Specifications". BYTE. p. 251. Retrieved 23 October 2013.
  10. da Cruz, Frank; Catchings, Bill (July 1984). "Kermit: A File-Transfer Protocol for Universities / Part 2: States and Transitions, Heuristic Rules, and Examples". BYTE. p. 141. Retrieved 23 October 2013.
  11. 1 2 3 International Space Station Incorporates Kermit (December 2003)
  12. Ying Bai (19 November 2004). The Windows Serial Port Programming Handbook. CRC Press. p. 65. ISBN   978-0-203-34196-4.
  13. Christopher J. Rawlings; S. Rawlings (11 November 1986). Software Directory for Molecular Biology. Macmillan International Higher Education. p. 20. ISBN   978-1-349-08234-6.
  14. Doupnik, Joe; da Cruz, Frank (11 January 1988). "Announcing MS-DOS Kermit 2.30". Info-Kermit Digest (Mailing list). Kermit Project, Columbia University. Retrieved 3 March 2016.
  15. da Cruz, Frank (29 July 1988). "Kermits Needed". Info-Kermit Digest (Mailing list). Kermit Project, Columbia University. Retrieved 3 March 2016.
  16. Good, Robin (23 December 2003). "Standards: Do We Really Need Them?". masternewmedia.org. Retrieved 27 April 2009.
  17. "C-Kermit 9.0 Beta Test". Columbia University's Kermit Project. 21 June 2011. Retrieved 22 June 2011.
  18. Michele Woggon (1 January 1995). Telecommunications Using ProComm & ProComm Plus Made Easy. Prentice Hall. pp. 30–31. ISBN   978-0-13-148412-2.
  19. Walter R. Bruce; Alan C. Elliott (1 April 1991). Using Procomm Plus. Que Corp. pp. 139–143. ISBN   978-0-88022-704-9.
  20. Joanne Krause (1991). ProComm Plus 2.0 at Work. Addison-Wesley Longman, Incorporated. pp. 109, 205. ISBN   978-0-201-57789-1.
  21. Wally Wang (1994). ProComm plus 2 for Windows for dummies. IDG Books. p. 127. ISBN   9781568842196.
  22. Mike Callahan; Nick Anis (1990). Dr. File Finder's Guide to Shareware. Osborne McGraw-Hill. p. 386. ISBN   978-0-07-881646-8.
  23. Dictionary of Computer and Internet Words: An A to Z Guide to Hardware, Software, and Cyberspace . Houghton Mifflin Harcourt. 2001. p.  150. ISBN   0-618-10137-3.
  24. Johnston, Christopher (28 October 1986). "Kermit". PC Magazine. Ziff Davis, Inc. 5 (18): 132. ISSN   0888-8507.
  25. Mike Callahan; Nick Anis (1990), Dr. File Finder's Guide to Shareware, Osborne McGraw-Hill, p. 235, ISBN   978-0-07-881646-8
  26. S.A. Fist (6 December 2012), The Informatics Handbook: A guide to multimedia communications and broadcasting, Springer Science & Business Media, p. 372, ISBN   978-1-4615-2093-1
  27. Dana Blankenhorn; Kimberly Maxwell (1992), Technology edge: a guide to field computing, New Riders Publishing, p. 286, ISBN   978-1-56205-091-7
  28. Philip L. Becker (September 1991). Introduction to PC communications. Que. p. 69. ISBN   978-0-88022-747-6.
  29. Alfred Glossbrenner (31 March 1993). Power DOS!: learn to run your PC like a master. Random House Information Group. p.  368. ISBN   978-0-679-73924-1.
  30. "Kermit FAQ - What Is SuperKermit?". www.columbia.edu. Retrieved 16 August 2019.
  31. "Kermit - What is it?" The Kermit Project. 26 October 2006. Columbia University. 11 July 2007 http://www.columbia.edu/kermit/kermit.html.
  32. "Superbrain Video Computer System". www.staff.ncl.ac.uk.
  33. "Kermit Software: Frequently Asked Questions". Columbia University. Archived from the original on 23 May 2023.
  34. The preceding sentence is based on text copied, on 30 October 2004, from the Free On-line Dictionary of Computing, which is licensed under the GFDL.
  35. "C-Kermit 8.0 - Interactive Communication, File Transfer, and Scripting across Serial Ports, Modems, Secure Telnet, Secure Shell (SSH), FTP and HTTP for Unix, VMS, QNX, ..." Columbia University. Archived from the original on 16 March 2023.

Further reading