The Columbia Crown The Kermit Project | Columbia University
612 West 115th Street, New York NY 10025 USA • kermit@columbia.edu
…since 1981

What is Kermit?

125th Street and Broadway NYC

WHAT IS KERMIT?

Kermit is the name of a file-transfer protocol and a suite of computer programs for many types of computers that implement that protocol as well as other communication functions ranging from terminal emulation to automation of communications tasks through a high-level cross-platform scripting language. The software is transport-independent, operating over TCP/IP connections in traditional clear-text mode or secured by SSH, SSL/TLS, or Kerberos, as well as over serial-port connections, modems, and other communication methods.

The Kermit Project was founded at the Columbia University Computer Center (now CUIT) in 1981, and until the mid- to late 1990s, Kermit was Columbia's standard connectivity software, used by students, faculty, and staff to connect from desktop microcomputers, PCs, Macintoshes, and Unix workstations to the central computing facilities: the IBM mainframes, the DECSYSTEM-20s, CLIO, and Cunix (our Unix-based servers). At Columbia, the mainframes and DEC-20s are long gone, but Kermit still may be used for SSH sessions to CUNIX.

Over the years, the Kermit Project grew into a worldwide cooperative nonprofit software development and distribution effort, headquartered at and coordinated from Columbia University. The Kermit Project is dedicated to production of cross-platform, long-lasting, stable, standards-conformant, interoperable communications software, and has been actively engaged in the standards process. Kermit software is used all over the world in every sector of the economy.

Although terminal emulation has been largely supplanted by the Web for online access, Kermit software continues to play a role in other applications such as remote sensing and data collection, management and troubleshooting of networking and telecommunications equipment, back office work, cargo management, medical insurance claim submission, electronic funds transfer, and online filing of income tax returns. Kermit software is embedded in cash registers, network routers, cell-phone towers, medical diagnostic and monitoring equipment, die-cutting and stamping presses, even cardiac pacemakers.

The Kermit protocol and software are named after Kermit the Frog, star of the television series, The Muppet Show; the name Kermit is used by permission of Henson Associates, Inc.

KERMIT SOFTWARE

Kermit software has been written for hundreds of different computers and operating systems, some of it by volunteer programmers all over the world, some of it by the Kermit Project professional staff. The major features of the most popular Kermit programs are: Kermit's user interface and script programming language are consistent across platforms and communication methods, allowing the investment in learning to pay off time and again as you move from one platform to another, one communication method to another.

Our premiere Kermit software implementations are:

Kermit 95 and MS-DOS Kermit are full-featured communication software programs rivaling the quality of anything else on the market. C-Kermit for UNIX, VMS, etc, and IBM Mainframe Kermit are host-based packages with an unequaled range of versatility. We document this software thoroughly and support and develop it aggressively. And unlike most other providers of communications software, we supply and can support the software for both ends of the connection, for example the two file-transfer partners, or client and server.

KERMIT PROTOCOL

Since its inception in 1981, the Kermit protocol has developed into a sophisticated and powerful transport-independent tool for file transfer and management, incorporating, among other things:

The feature that distinguishes Kermit protocol from most others is its wide range of settings to allow adaptation to any kind of connection between any two kinds of computers. Most other protocols are designed to work only on certain kinds or qualities of connections, and/or between certain kinds of computers, and therefore work poorly (or not at all) elsewhere and offer few if any methods to adapt to unplanned-for situations. Kermit, on the other hand, allows you to achieve successful file transfer and the highest possible performance on any given connection.

Unlike FTP or X-, Y-, and ZMODEM (the other protocols with which Kermit is most often compared) Kermit protocol does not assume or require:

(although Kermit does not require any of these conditions, it can take advantage of them when they are available). A feature article on Kermit protocol by Tim Kientzle in the February 1996 issue of Dr. Dobb's Journal noted that "Kermit's windowing approach is faster than protocols such as XModem and YModem . . . What many people don't realize is that under less-than-ideal conditions, Kermit's windowing approach is significantly faster than ZModem, a protocol with a well-deserved reputation for fast transfers over good-quality lines."

Thus Kermit transfers work "out of the box" almost every time.

The Kermit file transfer protocol specification is given in the book, Kermit, A File Transfer Protocol by Frank da Cruz, Foreword by Donald Knuth.

A formal specification and verification of the Kermit protocol was published by James Huggins of the University of Michigan in 1995.

KERMIT FILE TRANSFER EXAMPLE

Let's look the common case where you have a Windows desktop computer with a connection — any kind of connection (modem, serial port, regular Telnet, secure Telnet, SSH) — to a shell session on Unix server and you want to transfer a file between your PC and the Unix server. Your terminal emulator on Windows is Kermit 95 and the Unix server has C-Kermit installed, where it can be invoked simply by typing “kermit” at the shell prompt.

To download a file, say, message.txt, you type the following command at the shell prompt:

kermit -s message.txt
The file is sent to Kermit 95's current directory on your PC (or to its DOWNLOAD DIRECTORY if you have set one up). It doesn't matter if the file is text or binary; Kermit figures it out and transfers it automatically in the appropriate mode.

Similarly if you want to transfer a group of files, say, all the files whose names start with &ldquodaily.”:

kermit -s daily.*
Kermit sends each file that matches, switching automatically between text and binary mode as appropriate for each file.

Uploading a file from your PC to Unix is just as easy. Suppose you have a file called “budget.xls” in Kermit 95's current directory on your PC. To upload it to UNIX, type this at the Unix shell prompt:

kermit -g budget.xls
Those are the basics; there are many variations and refinements; for example:

To save yourself some typing, you can define aliases on Unix (in your shell profile):

alias s="kermit -Ys"
alias g="kermit -Yg"
(s for Send, g for Get). And then:

s message.txt
g budget.xls
It's worth noting that you are transferring your files over the same connection you already have; thus there is no need make a new connection, re-authenticate yourself, or similar bureaucracy. If the connection is secured by SSH, Kerberos, SSL, TLS, or SRP, then the file transfer is also secure.

This marks an unparalleled degree of convenience. When you tell C-Kermit on Unix to send or get a file, its first file-transfer packet is recognized automatically by Kermit 95's terminal emulator and K95 pops into either receive mode or server mode, depending on the direction, and when the transfer is finished, K95 returns to its terminal emulation screen. If there is an error (for example, if you do not have write permission in the destination directory) K95 remains in its file-transfer screen so you can see what the problem was.

LINKS


Kermit Protocol / Columbia University / kermit@columbia.edu / 26 October 2006 / Updated 30 April 2010