The Kermit File Transfer Protocol

The Kermit File Transfer Protocol

THE KERMIT FILE TRANSFER PROTOCOL Frank da Cruz February 1985 This is the original manuscript of the Digital Press book Kermit, A File Transfer Protocol, ISBN 0-932976-88-6, Copyright 1987, written in 1985 and in print from 1986 until 2001. This PDF file was produced by running the original Scribe markup-language source files through the Scribe publishing package, which still existed on an old Sun Solaris computer that was about to be shut off at the end of February 2016, and then converting the resulting PostScript version to PDF. Neither PostScript nor PDF existed in 1985, so this result is a near miracle, especially since the last time this book was "scribed" was on a DECSYSTEM-20 for a Xerox 9700 laser printer (one of the first). Some of the tables are messed up, some of the source code comes out in the wrong font; there's not much I can do about that. Also (unavoidably) the page numbering is different from the printed book and of couse the artwork is missing. Bear in mind Kermit protocol and software have seen over 30 years of progress and development since this book was written. All information herein regarding the Kermit Project, how to get Kermit software, or its license or status, etc, is no longer valid. The Kermit Project at Columbia University survived until 2011 but now it's gone and all Kermit software was converted to Open Source at that time. For current information, please visit the New Open Source Kermit Project website at http://www.kermitproject.org (as long as it lasts). -fdc, February 2016. Foreword Page 1 Foreword It's a great pleasure to see computer programs that were written for the sheer love of it, by people who delight in improving the effectiveness of our machines. The rapid growth of Kermit as a near-universal protocol for transferring files between computers is also a convincing demonstration of the advantages of software sharing. The authors of Kermit wisely decided not to keep their ideas proprietary, and they soon found that hundreds of people were willing and able to refine and extend the system. This book is the logical next step: It presents the concepts in tutorial fashion, and gives detailed examples of the subtle pitfalls that were discovered, so that many more people will be able to learn from the accumulated experience of the pioneer Kermit volunteers. Once this knowledge becomes widespread, we can expect further advances in both hardware and software. People often mistakenly believe that low-level considerations of input and output are not part of ``real'' computer science. The truth is just the opposite. Computer scientists have a duty to understand real-world constraints and to deal with them in as ``clean'' a way as possible. Therefore I hope that many readers of this book will be challenged to find high-level concepts and invariant relations by which various versions of the Kermit protocol can be proved correct in a mathematical sense. It will be very interesting to see how this system evolves in the future. Can a de facto standard continue to rely entirely on dedicated voluntary contributions and peer pressure, or will some sort of stricter rules have to be enforced? Will a steady state be reached? And how long will it be before dictionaries of the English language include the new verb, `to kermit'---as in the sentence ``I kermitted ten files during The Muppet Show.'' Donald E. Knuth Stanford University Page 2 The Kermit File Transfer Protocol Preface Page 3 Preface This book is for everyone who needs to move information from one computer to another. It's for the growing number of people who bring work home to personal computers so they can spend more time with their families. It's for university students with microcomputers in their dormitory rooms, and for university computer centers faced with the microcomputer explosion. It's for students, teachers, hobbyists, administrators, authors, farmers, secretaries, scientists, anyone who might want to share and communicate computer data with their friends or coworkers. And it's for hospitals, space flight centers, city agencies, publishing houses, soft drink bottling plants, organizations of every kind with diverse, incompatible computers of all sizes sprouting in every room and department, who feel the same need on a grand scale. Computers are tools that should be used to improve the quality of life on earth; this book presents a tool that can improve the quality of our lives while we use computers. Kermit is a computer file transfer protocol developed at Columbia University. The Kermit protocol has enjoyed increasing popularity in recent years, enough -- I hope -- to warrant publication of this book, which is intended to serve as a compendium of Kermit information, ranging from instructions for basic use to a formal description of the Kermit protocol. I won't try to put Kermit forth as the best of all possible file transfer protocols, only to describe it as it has evolved. I hope that the result is something more -- and less -- than a typical computer software user manual: more, because it supplies the background and motivation usually lacking in manuals; less, because it does not try to describe every command and peculiarity of each and every Kermit program; there are far too many them, and they change too often. I've tried to improve upon earlier Kermit publications [6, 7, 8]1by presenting the material in a more coherent, natural sequence. Tutorial sections have been added to provide background in computing, file organization, and data communications. These are independent from the other material and may be skipped by those who don't need tutoring. Case studies illustrate ways of coping with diverse computer systems and data communications environments. The latter part of the book describes the Kermit protocol in detail, with each facet illustrated by some code from a working Kermit program. At the end are a glossary, appendices, and an index. The book should prove useful to three distinct groups of people: those who wish to use Kermit, those who wish to support its use within an organization, and those who wish to create Kermit programs. Potential Kermit users need no particular experience with computers; any necessary background can be picked up from the tutorials. Potential supporters of Kermit programs should also be able to learn whatever they need from this book, particularly from the case studies. Those who want to create Kermit programs should have a reading knowledge of the C programming language [19] to follow the program examples given in the 1Citations refer to the bibliography on page 00. Page 4 The Kermit File Transfer Protocol protocol specification. This book may also find useful application in data communication or networking courses (Kermit is a degenerate case of networking) as an introductory text or as a case study in coping with a complicated reality. Even experienced protocol designers might pick up a few useful tidbits. After all, Kermit is able to work in environments where other protocols have not been so fortunate. And in the areas where Kermit is wanting, designers can learn from our mistakes. Kermit is more than a file transfer protocol, it is also the process by which the protocol spreads and develops through the cooperation of a wide, diverse, and open international community. Most Kermit programs are written and contributed by volunteers, often working on their own time. The programs can vary markedly in both style and quality, but tend to improve with age, as improvements are added. No document can hope to pin down the Kermit universe for all time; new Kermit programs appear, old ones change, the protocol itself evolves. Even when a program remains the same, changes in the underlying machine, operating system, or communications environment can alter its behavior. This book attempts to describe Kermit as it is today, in terms specific enough to be useful yet general enough to remain valid tomorrow, and maybe even the next day. Acknowledgments Because so many have contributed to the Kermit storehouse, this book has more acknowledgments than an Academy Award acceptance speech. As you flip past these pages, I hope you will come away with a feeling for the scope of the Kermit effort. Thanks and acknowledgments must go to the Columbia University Center for Computing Activities (CUCCA, my employer), which has generously fostered our Kermit development and support efforts even when there was no apparent tangible benefit to itself; to Bill Catchings, the codesigner (with me) of the basic Kermit protocol, who worked out many of the details and wrote several Kermit programs, including the first two (for CP/M and the DECSYSTEM-20), and who suggested and coauthored the 1984 BYTE magazine article [8]; to Daphne Tzoar, who conquered IBM mainframe asynchronous communications and wrote the next two Kermit programs (IBM System/370 VM/CMS and IBM PC), and who tirelessly kept the BITNET Kermit distribution up to date; to Va,ce Kundak,ci, who advised and helped with all IBM mainframe aspects of Kermit design and implementation; to Bruce Gilchrist, director of CUCCA, and Howard Eskin, director of academic computing at CUCCA, who encouraged our early efforts and promulgated and proselytized them beyond the walls of Columbia. Bill, Daphne, and Howard are no longer at Columbia, but Kermit will haunt them long into their new careers. Acknowledgments also to Coleen Markland, Bob Tschudi, Peter Howard, and Robert Story for running the ``Kermit factory,'' and to Christine Gianone, who coordinates all of this while simultaneously

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    405 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us