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. On connections over
RS-232 Statistical Multiplexers where some
control characters cannot be transmitted, 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. 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. Newer versions of Kermit included
scripting language and automation of commands. The Kermit scripting language evolved from its
TOPS-20 EXEC-inspired command language and was influenced syntactically and semantically by
ALGOL 60,
C,
BLISS-10,
PL/I,
SNOBOL, and
LISP. The correctness of the Kermit protocol has been verified with formal methods. ==History==