Computing and Communications Services Office
University of Illinois at Urbana-Champaign
User Guide 402, March 1994
Kermit: a File Transfer Protocol, da Cruz, Digital Press, 1987
fdc@columbia.edu
It may be that Kermit is popular because it is a robust file transfer protocol suitable for almost any line or network conditions. It may be that Kermit is popular because it is available for pretty much any computer you can name (and a bunch that you can't). It may be that Kermit is popular because it is free. Or, it may be that Kermit is popular because of the (written) communications skills of Christine Gianone and Frank da Cruz.
As Kermit is both protocol and communications program, so this book is an introduction to computer communications, protocol specification, introduction to the Kermit implementations and programmers' reference guide, all rolled into one. An ambitious task, but one handled with grace and skill, in this instance.
Part one gives us the basics of the development of Kermit and of data communications from the user's perspective. This confirms that, yes, the name was inspired by the Jim Henson muppet character (or, more exactly, by a Muppets wall calendar). One hopes that Jim Henson approves of this memorial. Chapter two does not get into exhaustive detail on computer (mostly PC) communications, but does cover the fundamental steps and needs with more brevity, completeness and wit than one sees in many works intended for the mass market. (I am sorry to see the confusion of "baud" and "bits per second", although the two terms are correctly defined in the glossary.)
Part two gives us two primers; one on computers and data files, and the other on data communications. The section is well named. Both chapters are easily understood by the novice and provide the minimum necessary information to proceed from. Excellent pieces, both of them.
Part three is an introduction to using Kermit. Chapter five describes a set of the most commonly used commands, including an introduction to the simplest login scripts. Chapter six discusses common problems while seven deals with the possibly thorny issue of getting Kermit into your machine in the first place. Included in this last chapter is a BASIC source code program for a "read only" Kermit protocol for downloading files.
Part four is a guide to writing a Kermit implementation. Quite a complete guide: not only does it give you the protocol specification (which is still *the* protocol specification) but also optional features, advanced options and even tips on programming style. Appendices give you the bulk of the Kermit source code (in C), a command summary, packet summary, the ASCII character set and a discussion of binary, octal and hexadecimal numbers and notation.
If you want to build your own implementation of Kermit, this is the book for
you. If you care nothing for programming, and have only bought your computer
in order to "get online", this is the book for you, too. (Be sure to get
"Using MS-DOS Kermit," too.) (cf. BKUMSKMT.RVW) For those in between, this is
an excellent resource to have around to answer those "how does
DECUS Canada Communications, Desktop, Education and Security group
newsletters Editor and/or reviewer.
Kermit, A File Transfer Protocol, by Frank da Cruz (Digital Press
1987) ... describes, as
the title states, a file transfer protocol. It was invented at
Columbia University in 1981 to transfer large amounts of data and
files between various mainframes and personal computers. A year
later, it was presented to computer user-groups. Whoever wanted
Kermit received the programs, source code and documentation at no
charge.
This started the birth of a multitude of Kermit implementations.
Today, Kermit is available for most computers and is used worldwide...
The title doesn't tell you that the book describes more than just the
Kermit protocol. The 379 page book is divided into four parts and
five appendices with a glossary and reference section. It provides
valuable information to persons of all levels of expertise, from
administrators to programmers. It is structured in a tutorial
fashion, making it unnecessary to read the book from cover to cover.
Information on specific areas can be found in one place. The book
starts at a novice level and progresses at an even pace through
various technical levels.
For those with a casual interest, Part I consists of two chapters of
basic information. These describe the history behind Kermit, how to
obtain the software, what a protocol is, how to connect to other
computers, and how to transfer files. Interesting historical tidbits
and trivia lighten the subject and relax the novice reader. It
assumes no prior knowledge of data communications.
For an introduction to communications, Part II presents a
concepts-and-facilities style section contained in two chapters. This
is a detailed primer on files and data communications. If you want to
know about handshaking, flow control, parity and the like, read this.
It contains information dealing with hardware, file structure and
management, data representation and transmission, and networks. It
covers items from pin connections to 3705 controllers.
Part III is the Kermit user's guide. These three chapters serve as a
command reference guide to Kermit's features. Here you'll find
descriptions of the major Kermit commands along with how and why to
use them. Also described are common problems and their solutions.
These are grouped by category, such as connection, data translation,
and file transfer difficulties.
Also included in this section is a discussion on bootstrapping. Once
you receive Kermit on tape, it is uploaded to the mainframe. You must
then get the programs to your PC to complete the installation. This
chapter provides the source code in Microsoft BASIC to do just that.
It is surprisingly short, only 83 lines of code, and is referred to by
the author as "the baby Kermit program". It actually uses Kermit to
receive the initial Kermit files! Following the program source code
is a detailed explanation of what function each section of the code
performs. It even explains how to bootstrap in the other direction,
from a PC to a remote mainframe. At the end of this section, da Cruz
bids farewell to the nontechnical reader with closing comments
expressing his hope that this material will help make you a
"self-sufficient creator and user of reliable data communication
links", and to that end he is successful.
The technically oriented Part IV serves as a programmers guide to
Kermit. This is the longest section, consisting of six chapters. The
first chapter discusses how to write a Kermit program. It covers
items from programming style to outlining the steps necessary in order
to contribute a program to the Kermit family of software.
The next chapter describes basic file transfer, concentrating
primarily on Kermit packets and layered protocol. A packet is a piece
of the file transfer process, or transaction. These transactions
include send initiation, data transfer, end of file notification,
receipt acknowledgement, and error notification.
Layered protocol is a method by which the process of receiving files
is broken down into functions. These functions control character
translation, ensure data integrity, and perform hardware specific
requirements. Packets are passed between these layers of function,
and each layer extracts information pertinent to itself, passing other
parts of the packet along as required. A detailed discussion of the
7-layer ISO Open Systems Interconnection (OSI) Reference Model, and a
comparison to similar Kermit processes, is provided.
The third chapter in this section describes 8-bit data transfer
through 7-bit communications media. It includes information on data
encoding and compression, as well as how to gracefully interrupt a
file transfer. There are several programming examples written in C
that perform some of the functions.
The next two chapters describe the basis for a Kermit client/server
relationship and advanced options. These are followed by a discussion
and analysis of the Kermit protocol, implementation tricks, and a
comparison of Kermit to other file transfer protocols.
Appendixes provide more programming examples, a Kermit command
summary, a Kermit packet summary, the ASCII character set in detail,
and a discussion of binary, octal, and hexadecimal numbers.
In summary, the book provides a complete reference guide to Kermit and
its current implementation. It is well written in a lighthearted and
non-condescending manner. Most diagrams are hand-scribed, giving it a
notebook style. Even if you don't use Kermit, if you're at all
interested in what goes on in the elusive process of one computer
'talking' to another, I highly recommend this book. By the way, in
case you're wondering if there is any relationship between Kermit and
the popular frog, you'll have to read the book. Hint -- the cover is
green.
Copyright Robert M. Slade, 1993
ROBERTS@decus.ca
BKKERMIT.RVW 931123
"Kermit, A File Transfer Protocol, by Frank da Cruz (Digital Press,
1987), will satisfy your appetite if you wish to learn more about this
fascinating protocol than is covered here. KERMIT is laced with green ink,
light-hearted analogies, and drawings which are often as amusing as they are
illustrative. It is also exceptionally well-written and full of sound
information. If you want to study every detail of Kermit, this book is the
best reference known to me; should you be implementing the protocol, note that
the text includes a large section specifically about writing Kermit, with most
of the C code that you'll need. I also highly recommend da Cruz' text for
anyone designing a file transfer protocol."
Pete Maclean, Desktop Communications with IBM Personal Computers, Wiley,
1987.
Review of Kermit -- A File Transfer Protocol
This review appeared in the October 1988 issue of V/UPDATE,
the VM Systems Group Newsletter. It may be quoted with attribution.
All There Is To Know About KERMIT
Tom Kumpf
Kermit Documentation / Columbia University / kermit@kermitproject.org / 18 Dec 95