%!PS-Adobe-2.0 %%Title: byte.mss %%DocumentFonts: (atend) %%Creator: Frank da Cruz,718W,0000, and Scribe 7(1700) %%CreationDate: 6 June 1991 11:03 %%Pages: (atend) %%EndComments % PostScript Prelude for Scribe. /BS {/SV save def 0.0 792.0 translate .01 -.01 scale} bind def /ES {showpage SV restore} bind def /SC {setrgbcolor} bind def /FMTX matrix def /RDF {WFT SLT 0.0 eq {SSZ 0.0 0.0 SSZ neg 0.0 0.0 FMTX astore} {SSZ 0.0 SLT neg sin SLT cos div SSZ mul SSZ neg 0.0 0.0 FMTX astore} ifelse makefont setfont} bind def /SLT 0.0 def /SI { /SLT exch cvr def RDF} bind def /WFT /Courier findfont def /SF { /WFT exch findfont def RDF} bind def /SSZ 1000.0 def /SS { /SSZ exch 100.0 mul def RDF} bind def /AF { /WFT exch findfont def /SSZ exch 100.0 mul def RDF} bind def /MT /moveto load def /XM {currentpoint exch pop moveto} bind def /UL {gsave newpath moveto dup 2.0 div 0.0 exch rmoveto setlinewidth 0.0 rlineto stroke grestore} bind def /LH {gsave newpath moveto setlinewidth 0.0 rlineto gsave stroke grestore} bind def /LV {gsave newpath moveto setlinewidth 0.0 exch rlineto gsave stroke grestore} bind def /BX {gsave newpath moveto setlinewidth exch dup 0.0 rlineto exch 0.0 exch neg rlineto neg 0.0 rlineto closepath gsave stroke grestore} bind def /BX1 {grestore} bind def /BX2 {setlinewidth 1 setgray stroke grestore} bind def /PB {/PV save def newpath translate 100.0 -100.0 scale pop /showpage {} def} bind def /PE {PV restore} bind def /GB {/PV save def newpath translate rotate div dup scale 100.0 -100.0 scale /showpage {} def} bind def /GE {PV restore} bind def /FB {dict dup /FontMapDict exch def begin} bind def /FM {cvn exch cvn exch def} bind def /FE {end /original-findfont /findfont load def /findfont {dup FontMapDict exch known{FontMapDict exch get} if original-findfont} def} bind def /BC {gsave moveto dup 0 exch rlineto exch 0 rlineto neg 0 exch rlineto closepath clip} bind def /EC /grestore load def /SH /show load def /MX {exch show 0.0 rmoveto} bind def /W {0 32 4 -1 roll widthshow} bind def /WX {0 32 5 -1 roll widthshow 0.0 rmoveto} bind def /RC {100.0 -100.0 scale 612.0 0.0 translate -90.0 rotate .01 -.01 scale} bind def /URC {100.0 -100.0 scale 90.0 rotate -612.0 0.0 translate .01 -.01 scale} bind def /RCC {100.0 -100.0 scale 0.0 -792.0 translate 90.0 rotate .01 -.01 scale} bind def /URCC {100.0 -100.0 scale -90.0 rotate 0.0 792.0 translate .01 -.01 scale} bind def %%EndProlog %%Page: 1 1 BS 0 SI 15.5 /Times-Bold AF 27370 8239 MT (KERMIT)SH 13.5 SS 10427 13287 MT (A Simple File Transfer Protocol for Microcomputers and Mainframes)SH 10.5 /Times-Roman AF 24182 17808 MT (Frank da Cruz, Bill Catchings)SH 19238 19863 MT (Columbia University Center for Computing Activities)SH 25539 21013 MT (New York, N.Y. 10027)SH 8.5 SS 32502 21826 MT (1)SH 10.5 /Times-Italic AF 28273 22180 MT (May 1983)SH /Times-Roman SF 7200 28950 MT (During recent years, the technical press has focused) 343 W( a lot of attention on developments in computer)344 W 7200 30055 MT (networking\320the IEEE 802 committee, TCP/IP, SNA, the latest VLSI) 46 W( Ethernet interface, fibre optics, satellite)45 W 7200 31160 MT (communications, broadband versus baseband. But little attention has been given to the single mechanism) 38 W( that)39 W 7200 32265 MT (may be the most widely used in the real world for direct interprocessor communication:) 291 W( the so-called)290 W 7200 33370 MT (``asynchronous protocol'', which is to be found in) 31 W( some form at almost every institution where there is a need)32 W 7200 34475 MT (to transfer files between microcomputers and central computers.)SH 7200 36685 MT (Columbia University is such an institution. Large timesharing computers at a central site) 3 W( are complemented by)2 W 7200 37790 MT (many smaller systems scattered in the) 101 W( laboratories and departments. The past few years have witnessed the)102 W 7200 38895 MT (inexorable progress of diverse microcomputers, word) 143 W( processors, and professional workstations into offices)142 W 7200 40000 MT (and laboratories throughout the University, and) 109 W( into the homes or dormitory rooms of faculty, students, and)110 W 7200 41105 MT (staff. As) 365 W( soon as these small machines began to appear, their users asked) 51 W( for ways to exchange files with the)50 W 7200 42210 MT (central and departmental systems.)SH 7200 44420 MT (At the same time, student use of our central systems was growing at) 50 W( an astonishing rate. We could no longer)51 W 7200 45525 MT (afford to provide students with perpetual online disk storage; we began) 9 W( to issue IDs per course, per term. With)8 W 7200 46630 MT (the decreased longevity) 125 W( of the IDs came the need for students to economically archive their files. Given a)126 W 7200 47735 MT (reliable way to from the central mainframes and back, microcomputers with floppy) 241 W( disks could provide)240 W 7200 48840 MT (inexpensive removable media ideal for this purpose.)SH 7200 51050 MT (The situation called for a file transfer mechanism that could work among all our computers, large) 78 W( and small.)79 W 7200 52155 MT (We knew of none that could handle the required diversity. Some were) 397 W( intended for use between)396 W 7200 53260 MT (microcomputers, others between large computers, but none specifically addressed the need for communication)31 W 7200 54365 MT (among the widest possible) 375 W( range of computers, particularly between micros and our IBM and DEC)374 W 7200 55470 MT (mainframes. Most) 622 W( commercial packages served a limited set of systems, and their cost would have been)180 W 7200 56575 MT (prohibitive when multiplied by the large number of machines we needed to support.)SH 7200 58785 MT (So we embarked on our own project. We were not well-versed in these matters at the outset; we) 15 W( learned as we)14 W 7200 59890 MT (proceeded, and we're still learning. This article discusses some of the issues and tradeoffs that) 30 W( came up in the)31 W 7200 60995 MT (design, and illustrates them in terms of our) 96 W( result, the KERMIT protocol for point-to-point file transfer over)95 W 7200 62100 MT (telecommunication lines. Because commercial) 93 W( local area networking products are expensive, not yet widely)94 W 7200 63205 MT (available, and unsuitable for one-shot) 255 W( or long-haul applications, humble asynchronous protocols such as)254 W 7200 64310 MT (KERMIT are likely to be with us for a long time to come.)SH 10800 50 7200 67355 UL 6.5 SS 8050 68775 MT (1)SH 8.5 SS 8375 69093 MT (This is the original manuscript of the article published in BYTE Magazine as "Kermit:) 84 W( A File Transfer Protocol for Universities",)83 W 7200 70062 MT (June and July) 129 W( 1984. Some minor editorial differences exist between this manuscript and the article as published. The Kermit file)130 W 7200 71031 MT (transfer protocol is named after) 105 W( Kermit the Frog, star of the television series THE MUPPET SHOW, used by permission of Henson)104 W 7200 72000 MT (Associates, Inc.)SH ES %%Page: 2 2 BS 0 SI 10 /Times-Roman AF 30350 4286 MT (2)SH 10.5 SS 7200 7920 MT (It is assumed the reader is familiar with common computing and telecommunications terminology, and) 103 W( with)104 W 7200 9025 MT (the ASCII alphabet, which is listed at the end of this article for reference.)SH /Symbol SF 7200 13303 MT (\267)SH /Times-Bold SF 7946 XM (The Communication Medium)SH /Times-Roman SF 7200 16258 MT (The only communication medium common to) 235 W( all computers, large and small, is the asynchronous serial)234 W 7200 17363 MT (telecommunication line, used) 121 W( for connecting terminals to computers. Standards for this medium are almost)122 W 7200 18468 MT (universally followed\320connectors, voltages,) 275 W( and signals \050EIA RS-232-C) 274 W( [1]\051,) SH( character encoding \050ASCII,)274 W 7200 19573 MT (ANSI X3.4-1977) 156 W( [2]\051,) SH( and bit) 156 W( transmission sequence \050ANSI X3.15-1976) 157 W( [3, 4]\051.) SH( Serial) 577 W( connections can be)157 W 7200 20678 MT (made in many) 386 W( ways: dedicated local lines \050``null modem'' cables\051, leased telephone circuits, dialup)385 W 7200 21783 MT (connections. Dialup) 615 W( connections can be initiated manually from the home or office) 176 W( using an inexpensive)177 W 7200 22888 MT (acoustic coupler, or automatically from one computer to another using) 125 W( a programmable dialout mechanism.)124 W 7200 23993 MT (The asynchronous serial line offers the ordinary user a high degree of convenience and control in) 45 W( establishing)46 W 7200 25098 MT (intersystem connections, at relatively low cost.)SH 7200 27308 MT (Once two computers are connected with a serial line, information) 60 W( can be transferred from one machine to the)59 W 7200 28413 MT (other, provided one side can) 48 W( be instructed to send the information and the other to receive it. But right away,)49 W 7200 29518 MT (several important factors come into play:)SH 9299 32458 MT (1.)SH /Times-Italic SF 10350 XM (Noise)SH /Times-Roman SF (\320It is rarely safe to assume that there will be no electrical interference on a line; any long)44 W 10350 33798 MT (or switched data communication line will have) 40 W( occasional interference, or noise, which typically)41 W 10350 35138 MT (results in garbled or extra characters. Noise corrupts data,) 38 W( perhaps in subtle ways that might not)37 W 10350 36478 MT (be noticed until it's too late.)SH 9299 38086 MT (2.)SH /Times-Italic SF 10350 XM (Synchronization)SH /Times-Roman SF (\320Data must not come in) 295 W( faster than the receiving machine can handle it.)296 W 10350 39426 MT (Although line speeds at the two ends of the connection may match, the receiving machine might)40 W 10350 40766 MT (not be able to process a steady stream of input at that speed. Its) 102 W( central processor may be too)103 W 10350 42106 MT (slow or too) 212 W( heavily loaded, or its buffers too full or too small. The typical symptom of a)211 W 10350 43446 MT (synchronization problem is lost data; most operating systems will simply) 69 W( discard incoming data)70 W 10350 44786 MT (they are not prepared to receive.)SH 9299 46394 MT (3.)SH /Times-Italic SF 10350 XM (Line Outages)56 W /Times-Roman SF (\320A line may stop working for short periods) 56 W( because of a faulty connector, loss of)55 W 10350 47734 MT (power, or similar reason. On dialup or switched connections, such intermittent failures) 194 W( will)195 W 10350 49074 MT (cause carrier to drop and the connection to be closed, but) 29 W( for any connection in which the carrier)28 W 10350 50414 MT (signal is not used, the symptom will be lost data.)SH 7200 53234 MT (Other communication media, such as the parallel data bus, have safeguards built) 132 W( in to prevent or minimize)133 W 7200 54339 MT (these effects. For instance, distances may be) 60 W( strictly limited, the environment controlled; special signals may)59 W 7200 55444 MT (be available for synchronization,) 16 W( and so forth. The serial telecommunication line provides no such safeguards,)17 W 7200 56549 MT (and we must therefore regard it as an intrinsically unreliable medium.)SH /Symbol SF 7200 60827 MT (\267)SH /Times-Bold SF 7946 XM (Getting Reliable Communication over an Unreliable Medium)SH /Times-Roman SF 7200 63782 MT (To determine whether data has been transmitted) 175 W( between two machines correctly and completely, the two)174 W 7200 64887 MT (machines can compare the data) 196 W( before and after transmission. A scheme that is commonly used for file)197 W 7200 65992 MT (transfer employs cooperating programs running) 131 W( simultaneously on each machine, communicating in a well-)130 W 7200 67097 MT (defined, concise language. The sending program divides outbound data into discrete pieces,) 110 W( adding to each)111 W 7200 68202 MT (piece special information describing the data for the receiving program. The result) 37 W( is called a ``packet''. The)36 W 7200 69307 MT (receiver separates the description from the data and determines whether they still match. If so, the) 82 W( packet is)83 W 7200 70412 MT (acknowledged and) 160 W( the transfer proceeds. If not, the packet is ``negatively acknowledged'' and the sender)159 W 7200 71517 MT (retransmits it; this procedure repeats for each packet until it is received correctly.)SH ES %%Page: 3 3 BS 0 SI 10 /Times-Roman AF 30350 4286 MT (3)SH 10.5 SS 7200 8040 MT (The process is called a communication)79 W /Times-Italic SF 24239 XM (protocol)SH /Times-Roman SF (\320a set of rules for forming and transmitting packets, carried)79 W 7200 9145 MT (out by programs that embody those rules. Protocols vary in complexity; our preference was for a simple)169 W 7200 10250 MT (approach that could be realized in almost any language on almost any computer) 30 W( by a programmer of moderate)31 W 7200 11355 MT (skill, allowing the protocol to be adapted easily to new systems.)SH /Symbol SF 7200 15633 MT (\267)SH /Times-Bold SF 7946 XM (Accommodating Diverse Systems)SH /Times-Roman SF 7200 18708 MT (Most systems agree how to communicate at the lowest) 58 W( levels\320the EIA RS-232-C asynchronous communica-)57 W 7200 19813 MT (tion line and the ASCII character set\320but there is rarely agreement beyond that. To avoid) 19 W( a design that might)20 W 7200 20918 MT (lock out some kinds of systems, we must consider certain important ways in which systems can differ.)SH 7200 24293 MT (\261)SH /Times-Italic SF 7988 XM (Mainframes vs Micros)SH /Times-Roman SF 7200 27268 MT (A distinction must first be made) 91 W( between)90 W /Times-Italic SF 25365 XM (micros)SH /Times-Roman SF 28575 XM (and)SH /Times-Italic SF 30444 XM (mainframes)SH /Times-Roman SF (. These) 443 W( terms are not used perjoratively; a)90 W 7200 28373 MT (``micro'' could be a powerful workstation, and a ``mainframe'' could be a small minicomputer.) 183 W( For) 630 W( our)184 W 7200 29478 MT (purposes, a micro is) 175 W( any single-user system in which the serial communication port is strictly an external)174 W 7200 30583 MT (device. A) 445 W( mainframe is any system which is ``host'' to multiple) 91 W( simultaneous terminal users, who log in to)92 W 7200 31688 MT (``jobs'', and where a user's terminal is the job's ``controlling terminal''. Some mainframe systems allow) 1 W( users)SH 7200 32793 MT (to ``assign'' another terminal line on the same machine as an external input/output device.)SH 7200 35003 MT (Mainframe operating) 73 W( system terminal drivers usually treat a job's controlling terminal specially. Full duplex)74 W 7200 36108 MT (systems echo incoming characters on) 60 W( the controlling terminal, but not on an assigned line. System command)59 W 7200 37213 MT (interpreters or user processes might take special action on certain characters on the controlling line, but not on)32 W 7200 38318 MT (an assigned line \050for instance, control-C under CP/M or most DEC operating systems\051. Messages sent to) 116 W( a)115 W 7200 39423 MT (job's controlling terminal from other jobs could interfere with transmission of data.) 31 W( The) 326 W( ability of a system to)32 W 7200 40528 MT (test for the availability of input on a serial line might depend on whether the line is the job's) 171 W( controlling)170 W 7200 41633 MT (terminal or an assigned device; CP/M and IBM VM/370 are examples of such systems. CP/M can) 10 W( test for data)11 W /Times-Italic SF 7200 42738 MT (only)SH /Times-Roman SF 9271 XM (at the console, VM can test)SH /Times-Italic SF 20966 XM (anywhere but)SH /Times-Roman SF 26915 XM (the console.)SH 7200 44948 MT (Output to a job's controlling terminal) 60 W( may be reformatted by the operating system: control characters may be)59 W 7200 46053 MT (translated to printable equivalents, lower case letters) 172 W( specially flagged or translated to upper case \050or vice)173 W 7200 47158 MT (versa\051, tabs expanded to) 104 W( spaces. In addition, based on the terminal's declared ``width'' and ``length'', long)103 W 7200 48263 MT (lines might be ``wrapped around'' or truncated, formfeeds translated to a series of linefeeds, and the system)96 W 7200 49368 MT (may want to pause at the end of each screenful of output. Input from a job's) 37 W( controlling terminal may also be)36 W 7200 50473 MT (handled specially: lower case letters may be converted to upper) 54 W( case, linefeed may be supplied when carriage)55 W 7200 51578 MT (return is typed, control characters may invoke special functions like line) 45 W( editing or program interruption. The)44 W 7200 52683 MT (DECSYSTEM-20 is an example of a computer where any of these might happen.)SH 7200 54893 MT (The moral here is that care must be taken to disable special handling) 20 W( of a mainframe job's controlling terminal)21 W 7200 55998 MT (when it is to be a vehicle for interprocessor) 32 W( communication. But some systems simply do not allow certain of)31 W 7200 57103 MT (these features to be disabled, so file transfer protocols must be designed around them.)SH 7200 60478 MT (\261)SH /Times-Italic SF 7988 XM (Line Access)SH /Times-Roman SF 7200 63453 MT (Line access) 45 W( can be either)46 W /Times-Italic SF 18188 XM (full)SH /Times-Roman SF 19898 XM (or)SH /Times-Italic SF 21082 XM (half duplex)46 W /Times-Roman SF (. If) 355 W( full duplex, transmission can occur in both directions at once.)46 W 7200 64558 MT (If half duplex, the two sides must take turns sending, each signaling the other when the line is free; data) 65 W( sent)64 W 7200 65663 MT (out of turn is discarded, or it can cause) 22 W( a break in synchronization. On mainframes, the host echoes characters)23 W 7200 66768 MT (typed at the terminal in full duplex, but not in half duplex.) 184 W( Naturally,) 629 W( echoing is undesirable during file)183 W 7200 67873 MT (transfer. Full) 355 W( duplex systems can usually accommodate) 46 W( half duplex communication, but not vice versa. IBM)47 W 7200 68978 MT (mainframes are the most prevalent half duplex systems.)SH ES %%Page: 4 4 BS 0 SI 10 /Times-Roman AF 30350 4286 MT (4)SH 10.5 SS 7200 8040 MT (\261)SH /Times-Italic SF 7988 XM (Buffering and Flow Control)SH /Times-Roman SF 7200 11015 MT (Some systems cannot) 82 W( handle sustained bursts of input on a telecommunications line; the input buffer can fill)81 W 7200 12120 MT (up faster than it can be emptied, especially at high line speeds.) 46 W( Some) 356 W( systems attempt to buffer ``typeahead'')47 W 7200 13225 MT (\050unrequested input\051, while) 7 W( others discard it. Those that buffer typeahead may or may not provide a mechanism)6 W 7200 14330 MT (to test or clear the buffer.)SH 7200 16540 MT (Systems may try to regulate how fast characters come in using a)103 W /Times-Italic SF 35677 XM (flow control)103 W /Times-Roman SF 41251 XM (mechanism, either in the data)103 W 7200 17645 MT (stream \050XON/XOFF\051 or in parallel to it \050modem control signals\051) 99 W( [5],) SH( but no two systems can be assumed to)98 W 7200 18750 MT (honor the same conventions for flow control, or) 122 W( to do it at all. Even when flow control is being done, the)123 W 7200 19855 MT (control signals themselves are subject to noise corruption.)SH 7200 22065 MT (Our experiments) 213 W( with several host computers revealed that a burst of more than about a line's worth of)212 W 7200 23170 MT (characters \05060-100 characters\051 into a terminal port at) 310 W( moderate speed could result in loss of data\320or)311 W 7200 24275 MT (worse\320on some hosts. For) 23 W( instance, the communications front end of the DECSYSTEM-2060 is designed on)22 W 7200 25380 MT (the statistical assumption that) 53 W( all terminal input comes from human fingers, and it cannot allocate buffers fast)54 W 7200 26485 MT (enough when this assumption is) 76 W( violated by sending continuous data simultaneously from several microcom-)75 W 7200 27590 MT (puters attached to terminal ports.)SH 7200 30965 MT (\261)SH /Times-Italic SF 7988 XM (Character Interpretation)SH /Times-Roman SF 7200 33940 MT (Systems can differ in how they interpret characters that arrive at the terminal port. A) 99 W( host can accept some)100 W 7200 35045 MT (characters as sent, ignore others, translate others,) 31 W( take special action on others. Communications front ends or)30 W 7200 36150 MT (multiplexers might swallow certain characters \050typically DC1, DC3\051 for flow control, padding \050NUL or) 28 W( DEL\051,)29 W 7200 37255 MT (or for transfer of control \050``escape''\051. The characters that) 153 W( typically trigger special behavior are the ASCII)152 W 7200 38360 MT (control characters, 0-31 and 127. For instance, of these 33) 71 W( control characters, 17 invoke special functions of)72 W 7200 39465 MT (our DECSYSTEM-20 command processor.) 371 W( However,) 1003 W( all hosts and communication processors we've)370 W 7200 40570 MT (encountered allow any ``printable'' character \050ASCII 32-126\051 to reach an application) 118 W( program, even though)119 W 7200 41675 MT (the character may be translated to a different encoding, like EBCDIC [6], for internal use.)SH 7200 43885 MT (Some operating systems allow an application to input a character at a) 29 W( time, others delay passing the characters)28 W 7200 44990 MT (to the program until a ``logical) 152 W( record'' has been detected, usually a sequence of characters terminated by)153 W 7200 46095 MT (carriage return or linefeed. Some record oriented) 132 W( systems like IBM VM/370 discard the terminator, others)131 W 7200 47200 MT (keep it. And there are) 45 W( different ways of keeping it\320UNIX translates carriage return into linefeed; most DEC)46 W 7200 48305 MT (operating systems keep the carriage return but also add a linefeed.)SH 7200 51680 MT (\261)SH /Times-Italic SF 7988 XM (Timing Out)SH /Times-Roman SF 7200 54655 MT (Hosts may or may not have the) 6 W( ability to ``time out''. When exchanging messages with another computer, it is)5 W 7200 55760 MT (desirable to) 42 W( be able to issue an input request without waiting forever should the incoming data be lost. A lost)43 W 7200 56865 MT (message could result in) 62 W( a protocol ``deadlock'' in which one system is waiting forever for the message while)61 W 7200 57970 MT (the other waits for a response. Some systems can) 2 W( set timer interrupts to allow escape from potentially blocking)3 W 7200 59075 MT (operations; others, including many microcomputers, can) 38 W( not do so. When timeouts are not possible, they may)37 W 7200 60180 MT (be simulated by sleep-and-test or loop-and-test operations, or) 257 W( deadlocked systems may be awakened by)258 W 7200 61285 MT (manual intervention.)SH 7200 64660 MT (\261)SH /Times-Italic SF 7988 XM (File Organization)SH /Times-Roman SF 7200 67635 MT (Some computers store all files in a uniform way, such) 41 W( as the linear stream of bytes that is a UNIX file. Other)40 W 7200 68740 MT (computers may have more complicated or) 225 W( diverse file organizations and access methods: record-oriented)226 W 7200 69845 MT (storage with its many variations, exemplified) 16 W( in IBM OS/360 or DEC RMS. Even simple microcomputers can)15 W 7200 70950 MT (present complications when files are treated as uniform data to be transferred; for instance under) 105 W( CP/M, the)106 W ES %%Page: 5 5 BS 0 SI 10 /Times-Roman AF 30350 4286 MT (5)SH 10.5 SS 7200 7920 MT (ends of) 11 W( binary and text files are determined differently. A major question in any operating system is whether a)10 W 7200 9025 MT (file is specified sufficiently by its contents and its name, or) 117 W( if additional external information is required to)118 W 7200 10130 MT (make the file valid. A simple generalized file transfer facility can be expected to transmit a file's name) 87 W( and)86 W 7200 11235 MT (contents, but not every conceivable attribute a file might possess.)SH 7200 13445 MT (Designers of expensive) 15 W( networks have gone to great lengths to pass file attributes along when transferring files)16 W 7200 14550 MT (between unlike systems. For instance, the DECnet Data Access Protocol) 112 W( [7]) SH( supports) 112 W( 42 different ``generic)111 W 7200 15655 MT (system capabilities'' \050like whether files can be preallocated, appended to,) 7 W( accessed randomly, etc\051, 8 data types)8 W 7200 16760 MT (\050ASCII, EBCDIC, executable, etc\051, 4 organizations \050sequential, relative, indexed, hashed\051,) 133 W( 5 record formats)132 W 7200 17865 MT (\050fixed, variable, etc\051, 8 record attributes \050for format control\051, 14 file allocation attributes) 8 W( \050byte size, record size,)9 W 7200 18970 MT (block size, etc\051,) 15 W( 28 access options \050supersede, update, append, rewind, etc\051, 26 device characteristics \050terminal,)14 W 7200 20075 MT (directory structured, shared, spooled, etc\051, various access options \050new, old, rename, password,) 284 W( etc\051, in)285 W 7200 21180 MT (addition to the better known file attributes like name, creation date, protection code, and so on. All) 76 W( this was)75 W 7200 22285 MT (deemed necessary even when the designers had only a small number of machines to worry about, all from a)87 W 7200 23390 MT (single vendor.)SH 7200 25600 MT (The ARPA network, which attempts to provide services for) 58 W( many more machines from many vendors, makes)57 W 7200 26705 MT (some simplifying assumptions) 69 W( and sets some restrictions in its File Transfer Protocol \050FTP\051) 70 W( [8].) SH( All) 403 W( files are)70 W 7200 27810 MT (forced into certain categories with respect to encoding \050ASCII, EBCDIC, image\051, record format control, byte)72 W 7200 28915 MT (size, file structure \050record or stream\051, and it is generally left to the host FTP implementation) 237 W( to do the)238 W 7200 30020 MT (necessary transformations. No particular provision is made, or can be made, to ensure that) 433 W( such)432 W 7200 31125 MT (transformations are invertible.)SH 7200 33335 MT (DECnet is able to provide) 31 W( invertibility for operating systems like VMS or RSX, which can store the necessary)32 W 7200 34440 MT (file attributes along with the file. But simpler file) 50 W( systems, like those of TOPS-10 or TOPS-20, can lose vital)49 W 7200 35545 MT (information about incoming files. For instance, if VMS requires some type of file to have a) 12 W( specific blocksize,)13 W 7200 36650 MT (while TOPS-20 has no concept of block size, then the blocksize will be lost upon transfer) 184 W( from VMS to)183 W 7200 37755 MT (TOPS-20 and cannot be restored automatically when the file is sent back, leaving the result) 246 W( potentially)247 W 7200 38860 MT (unusable.)SH 7200 41070 MT (Invertibility is a major problem, with no simple) 215 W( solution. Fortunately, most file transfer between unlike)214 W 7200 42175 MT (systems involves only textual information\320data, documents, program source\320which is) 404 W( sequential in)405 W 7200 43280 MT (organization, and for which any required transformations \050e.g.) 199 W( blocked) SH( to) 199 W( stream, EBCDIC to ASCII\051 are)198 W 7200 44385 MT (simple and not dependent on any special file attributes.)SH 7200 46595 MT (In fact, invertability)120 W /Times-Italic SF 16195 XM (can)SH /Times-Roman SF 18094 XM (be achieved if that is the primary goal of a file transfer) 120 W( protocol. All the external)121 W 7200 47700 MT (attributes of a file can be encoded and included with the contents of the file to be) 26 W( stored on the remote system.)25 W 7200 48805 MT (For unlike systems, this can render the file less than useful on the target system, but allows it to) 91 W( be restored)92 W 7200 49910 MT (correctly upon return. However, it is more commonly desired that textual files remain) 213 W( intelligible when)212 W 7200 51015 MT (transferred to a foreign system, even if transformations must be made.) 19 W( To) 303 W( allow the necessary transformations)20 W 7200 52120 MT (to take place on textual files between unlike) 52 W( systems, there must be a standard way of representing these files)51 W 7200 53225 MT (during transmission.)SH 7200 56600 MT (\261)SH /Times-Italic SF 7988 XM (Binary Files versus Parity)SH /Times-Roman SF 7200 59575 MT (Each ASCII character is represented by a string of 7 bits. Printable ASCII files can) 194 W( be transmitted in a)195 W 7200 60680 MT (straightforward fashion, because ASCII transmission is designed for them: a serial stream of 8-bit characters, 7)11 W 7200 61785 MT (bits for data and 1 for parity, framed by start and stop bits for the benefit of the) 23 W( hardware) 24 W( [3].) SH( The) 311 W( parity bit is)24 W 7200 62890 MT (added as a check on the integrity of a character; some systems always transmit parity, others insist on parity) 1 W( for)SH 7200 63995 MT (incoming characters, still others ignore the parity bit for communication purposes and pass it along) 163 W( to the)164 W 7200 65100 MT (software, while still others discard it altogether. In addition, communication front ends) 110 W( or common carriers)109 W 7200 66205 MT (might usurp the parity bit, regardless of what the system itself may do.)SH 7200 68415 MT (Computer file systems) 13 W( generally store an ASCII file as a sequence of either 7-bit or 8-bit bytes. 8-bit bytes are)14 W 7200 69520 MT (more common, in) 52 W( which the 8th bit of each byte is superfluous. Besides files composed of ASCII characters,)51 W 7200 70625 MT (however, computers) 63 W( also have ``binary'' files, in which every bit is meaningful; examples include executable)64 W 7200 71730 MT (``core images'') 100 W( of programs, numbers stored in ``internal format'', databases with imbedded pointers. Such)99 W ES %%Page: 6 6 BS 0 SI 10 /Times-Roman AF 30350 4286 MT (6)SH 10.5 SS 7200 7920 MT (binary data must be) 62 W( mapped to ASCII characters for transmission over serial lines. When two systems allow)63 W 7200 9025 MT (the user-level software to control the parity bit, the ANSI standards) 187 W( [2, 3]) SH( may be stretched) 187 W( to permit the)186 W 7200 10130 MT (transmission of 8 data bits per character, which) 54 W( corresponds to the byte size of most machines. But since not)55 W 7200 11235 MT (all computers allow this flexibility, the ability to transfer binary data in this fashion cannot be assumed.)SH 7200 14610 MT (\261)SH /Times-Italic SF 7988 XM (Software)SH /Times-Roman SF 7200 17585 MT (Finally, systems differ in the application software they have. In particular, no system can be assumed to) 1 W( have a)SH 7200 18690 MT (particular programming language. Even widespread) 113 W( languages like FORTRAN and BASIC may be lacking)114 W 7200 19795 MT (from some computers, either because they have not been implemented, or because they are) 128 W( proprietary and)127 W 7200 20900 MT (have not been purchased. Even when two different systems) 143 W( support the same language, it is unrealistic to)144 W 7200 22005 MT (expect the two implementations of the language to be totally compatible. A general purpose) 178 W( file transfer)177 W 7200 23110 MT (protocol should not be geared towards the features any particular language.)SH /Symbol SF 7200 27388 MT (\267)SH /Times-Bold SF 7946 XM (KERMIT)SH /Times-Roman SF 7200 30343 MT (Our protocol, which we call KERMIT, addresses the problems outlined above by setting certain minimal)197 W 7200 31448 MT (standards for transmission, and providing a mapping between disk storage organization,) 143 W( machine word and)142 W 7200 32553 MT (byte size, and the transmission medium.)SH 7200 34763 MT (KERMIT has the following characteristics:)SH /Symbol SF 9079 37703 MT (\267)SH /Times-Roman SF 9825 XM (Communication takes place over ordinary terminal connections.)SH /Symbol SF 9079 39713 MT (\267)SH /Times-Roman SF 9825 XM (Communication is half duplex. This allows both full and half duplex systems) 15 W( to participate, and it)16 W 9825 41053 MT (eliminates the echoing that would otherwise occur for characters arriving) 363 W( at a host job's)362 W 9825 42393 MT (controlling terminal.)SH /Symbol SF 9079 44403 MT (\267)SH /Times-Roman SF 9825 XM (The packet length is variable,) 199 W( but the maximum is 96 characters so that most hosts can take)200 W 9825 45743 MT (packets in without buffering problems.)SH /Symbol SF 9079 47753 MT (\267)SH /Times-Roman SF 9825 XM (Packets are sent in alternate directions; a reply) 81 W( is required for each packet. This is to allow half)80 W 9825 49093 MT (duplex systems to participate, and to prevent buffer overruns that would) 28 W( occur on some systems if)29 W 9825 50433 MT (packets were sent back to back.)SH /Symbol SF 9079 52443 MT (\267)SH /Times-Roman SF 9825 XM (A timeout facility, when available, allows transmission to resume after lost packets.)SH /Symbol SF 9079 54453 MT (\267)SH /Times-Roman SF 9825 XM (All transmission is in ASCII. Any non-ASCII hosts are responsible for conversion.) 226 W( ASCII)713 W 9825 55793 MT (control characters) 103 W( are prefixed and then converted to printable characters during transmission to)104 W 9825 57133 MT (ensure that they arrive as sent. A single ASCII control character \050normally) 39 W( SOH\051 is used to mark)38 W 9825 58473 MT (the beginning of a packet.)SH /Symbol SF 9079 60483 MT (\267)SH /Times-Roman SF 9825 XM (Binary files can be transmitted by a similar prefix scheme, or by use of the parity) 80 W( bit when both)81 W 9825 61823 MT (sides have control of it.)SH /Symbol SF 9079 63833 MT (\267)SH /Times-Roman SF 9825 XM (Logical records \050lines\051 in textual files are terminated) 138 W( during transmission with quoted carriage-)137 W 9825 65173 MT (return/linefeed sequences,) 140 W( which are transparent to the protocol and may appear anywhere in a)141 W 9825 66513 MT (packet. Systems) 425 W( that delimit records in other ways are responsible for conversion, if) 81 W( they desire)80 W 9825 67853 MT (the distinction between records to be preserved across unlike systems.)SH /Symbol SF 9079 69863 MT (\267)SH /Times-Roman SF 9825 XM (Only a file's name) 2 W( and contents are transmitted\320no attributes. It is the user's responsibility to see)3 W 9825 71203 MT (that the file is stored) 49 W( correctly on the target system. Within this framework, invertible transfer of)48 W ES %%Page: 7 7 BS 0 SI 10 /Times-Roman AF 30350 4286 MT (7)SH 10.5 SS 9825 7920 MT (text files can be assured, but invertible transfer of non-text files) 39 W( depends on the capabilities of the)40 W 9825 9260 MT (particular implementations of KERMIT and the host operating systems.)SH /Symbol SF 9079 11270 MT (\267)SH /Times-Roman SF 9825 XM (KERMIT has) 266 W( no special knowledge of the host on the other side. No attempt is made to)265 W 9825 12610 MT (``integrate'' the two) 102 W( sides. Rather, KERMIT is designed to work more or less uniformly on all)103 W 9825 13950 MT (systems.)SH /Symbol SF 9079 15960 MT (\267)SH /Times-Roman SF 9825 XM (KERMIT need not be written in any) 185 W( particular language. It is not a portable program, but a)184 W 9825 17300 MT (portable protocol.)SH 7200 20120 MT (Thus KERMIT accommodates itself to many systems by conforming to a common) 133 W( subset of their features.)134 W 7200 21225 MT (But the resulting simplicity and generality allow KERMIT on any machine to communicate) 38 W( with KERMIT on)37 W 7200 22330 MT (any other machine, micro-to-mainframe, micro-to-micro, mainframe-to-mainframe. The back-and-forth)374 W 7200 23435 MT (exchange of packets keeps the two sides synchronized; the) 223 W( protocol can be called ``asynchronous'' only)222 W 7200 24540 MT (because the communication hardware itself operates asynchronously.)SH 7200 26750 MT (As far as the user is concerned, KERMIT is a do-it-yourself operation. For instance, to transfer files between)48 W 7200 27855 MT (your micro) 89 W( and a mainframe, you would run KERMIT on your micro, put KERMIT into terminal emulation)88 W 7200 28960 MT (mode, which ``connects'' you to the mainframe, log in and run KERMIT on) 101 W( the mainframe, then ``escape'')102 W 7200 30065 MT (back to the micro and issue commands to the) 204 W( micro's KERMIT to send or fetch the desired files. Any)203 W 7200 31170 MT (inconvenience implicit in) 74 W( this procedure is a consequence of the power it gives the ordinary user to establish)75 W 7200 32275 MT (reliable connections between computers that could not otherwise be connected.)SH /Symbol SF 7200 36553 MT (\267)SH /Times-Bold SF 7946 XM (Packets)SH /Times-Roman SF 7200 39508 MT (KERMIT packets need to) 40 W( contain the data that is being transferred, plus minimum information to assure \050with)39 W 7200 40613 MT (high probability\051 that) 226 W( the expected data arrives completely and correctly. Several issues come up when)227 W 7200 41718 MT (designing the packet layout: how to represent data, how to delimit fields within the packet,) 43 W( how to delimit the)42 W 7200 42823 MT (packet itself, how to arrange the fields within the packet.) 88 W( Since) 441 W( the transmission medium itself is character-)89 W 7200 43928 MT (oriented, it is not feasible to transmit bit strings) 27 W( of arbitrary length, as do the bit-oriented protocols like HDLC)26 W 7200 45033 MT (and SDLC) 2 W( [5].) SH( Therefore) 267 W( the smallest unit of information in a packet must be the ASCII character. As) 2 W( we will)3 W 7200 46138 MT (see, this precludes some techniques that are used with other communication media.)SH 7200 49513 MT (\261)SH /Times-Italic SF 7988 XM (Control Fields)SH /Times-Roman SF 7200 52488 MT (Most popular protocol definitions view the packet as layers of information,) 47 W( which pass through a hierarchy of)46 W 7200 53593 MT (protocol levels, each level) 199 W( adding its own information at the ends of an outbound packet or stripping its)200 W 7200 54698 MT (information from the ends of an incoming packet, and) 121 W( then passing the result along to the next level in the)120 W 7200 55803 MT (hierarchy. The) 495 W( fields for each layer must be arranged so that they can be found, identified, and) 116 W( interpreted)117 W 7200 56908 MT (correctly at the appropriate level.)SH 7200 59118 MT (Since KERMIT packets are short, it is important to minimize the amount of control) 30 W( information per packet. It)29 W 7200 60223 MT (would be convenient to limit the control fields to one character) 22 W( each. Since we have 95 printable characters to)23 W 7200 61328 MT (work with \050128 ASCII characters, less DEL and the 32 control characters\051, we can represent values from 0) 53 W( to)52 W 7200 62433 MT (94 with a single character.)SH /Symbol SF 9079 65373 MT (\267)SH /Times-Roman SF 9825 XM (The)SH /Times-Italic SF 11807 XM (packet sequence) 86 W( number)87 W /Times-Roman SF 22650 XM (is used to detect missing or duplicate packets. It is unlikely that a)87 W 9825 66713 MT (large number of packets could) 117 W( be lost, especially since packet)116 W /Times-Italic SF 37148 XM (n)SH /Times-Roman SF 38052 XM (is acknowledged before packet)116 W /Times-Italic SF 9825 68053 MT (n+1)SH /Times-Roman SF 12030 XM (is sent. So the sequence number can be a small quantity, which ``wraps around'' to its)184 W 9825 69393 MT (minimum value when it exceeds a specified maximum value.)SH /Symbol SF 9079 71403 MT (\267)SH /Times-Roman SF 9825 XM (To prevent long packets, a small maximum length can be enforced by specifying the)13 W /Times-Italic SF 45735 XM (packet length)12 W ES %%Page: 8 8 BS 0 SI 10 /Times-Roman AF 30350 4286 MT (8)SH 10.5 SS 9825 7920 MT (with a single character; since there are) 24 W( 95 printable ASCII characters, this would be the maximum)25 W 9825 9260 MT (length, depending on how we count the control fields.)SH /Symbol SF 9079 11270 MT (\267)SH /Times-Roman SF 9825 XM (The)SH /Times-Italic SF 11783 XM (checksum)SH /Times-Roman SF 16188 XM (can be of fixed length. The actual length) 62 W( depends on the desired balance between)61 W 9825 12610 MT (and efficiency and error detection.)SH 7200 15430 MT (The packet length and checksum act together to detect corrupted, missing, or) 73 W( extra characters. These are the)74 W 7200 16535 MT (essential fields for promoting error-free transmission. But so) 132 W( far, we've only considered packets that carry)131 W 7200 17640 MT (actual file data; we will also require special) 45 W( packets composed only of control information, for instance to tell)46 W 7200 18745 MT (the remote host the name of the file that is about to come, or to tell it that the transmission is) 55 W( complete. This)54 W 7200 19850 MT (can be accomplished with a)133 W /Times-Italic SF 19734 XM (packet type)133 W /Times-Roman SF 25015 XM (field. The) 529 W( number of functions we need to specify in this field is)134 W 7200 20955 MT (small, so a single character can suffice here too.)SH 7200 24330 MT (\261)SH /Times-Italic SF 7988 XM (Packet Framing)SH /Times-Roman SF 7200 27305 MT (We choose to mark the beginning of a packet with a distinguished) 161 W( start character, SOH \050Start Of Header,)160 W 7200 28410 MT (ASCII 1, Control-A\051. This character cannot appear anywhere else within the packet.) 218 W( SOH) 700 W( was chosen)219 W 7200 29515 MT (because, unlike most other control characters, it) 9 W( is generally accepted upon input at a job's controlling terminal)8 W 7200 30620 MT (as a data character, rather than an interrupt or) 182 W( break character on most mainframes. This is probably no)183 W 7200 31725 MT (accident, since) 120 W( it was originally intended for this use by the designers of the ASCII alphabet) 119 W( [9].) SH( Should) 501 W( a)119 W 7200 32830 MT (system be) 62 W( incapable of sending or receiving SOH, it is possible to redefine the start-of-packet character to be)63 W 7200 33935 MT (any other control character; the two sides need not use the same one.)SH 7200 36145 MT (There are three principal) 78 W( options for recognizing the end of a packet: a fixed length, a distinguished packet-)77 W 7200 37250 MT (end character, and a length field. There are arguments for and against each) 140 W( involving what happens when)141 W 7200 38355 MT (characters, particularly a length or terminator,) 17 W( is lost or garbled, which will be mentioned later. KERMIT uses)16 W 7200 39460 MT (a length field.)SH 7200 41670 MT (To take in) 64 W( a packet, a KERMIT program gets characters from the line until it encounters the SOH. The next)65 W 7200 42775 MT (character is) 28 W( the length; KERMIT reads and decodes the length and then reads that many subsequent characters)27 W 7200 43880 MT (to complete the packet. If another SOH is encountered before the count is exhausted, the current packet is)121 W 7200 44985 MT (forgotten and a new one is started. This stratagy allows arbitrary amounts) 317 W( of noise to be generated)316 W 7200 46090 MT (spontaneously between packets without interfering with the protocol.)SH 7200 49465 MT (\261)SH /Times-Italic SF 7988 XM (Encoding)SH /Times-Roman SF 7200 52440 MT (When transmitting textual data, KERMIT terminates logical records with) 150 W( carriage-return linefeed combina-)151 W 7200 53545 MT (tions \050CRLFs\051. On record oriented systems, trailing blanks or length fields are removed and a CRLF appended)6 W 7200 54650 MT (to outbound records, with the) 47 W( inverse operation performed on incoming records. On stream oriented systems,)48 W 7200 55755 MT (incoming CRLFs may be translated to some other terminator. Files, of course, need not have logical records,)54 W 7200 56860 MT (in which case record processing can be skipped altogether, and the file can be treated) 27 W( as a long string of bytes.)28 W 7200 57965 MT (This is known as ``image'' transfer, and can also) 67 W( be used between like systems where no transformations are)66 W 7200 59070 MT (necessary.)SH 7200 61280 MT (In order to make each character in the packet printable, KERMIT) 180 W( ``quotes'' any unprintable character by)181 W 7200 62385 MT (transforming it to a printable one and precedes it with a special prefix character.) 41 W( The) 344 W( prefix is normally ``#'';)40 W 7200 63490 MT (the transformation is done by complementing bit 6 \050adding or subtracting 64)75 W 40991 XM (, modulo 64\051. Thus) 75 W( control-A)76 W 8.5 SS 40141 63844 MT (10)SH 10.5 SS 7200 64750 MT (becomes ``#A'', control-Z becomes ``#Z'', US \050control-underscore on most terminals\051 becomes ``#_''. The)100 W 7200 65855 MT (prefix character is also used to quote itself: ``##''. Upon) 192 W( input, the reverse transformation is performed.)193 W 7200 66960 MT (Printable characters) 62 W( are not tranformed. The assumption is that most files to be transferred are printable, and)61 W 7200 68065 MT (printable files contain relatively few control characters; when this is true, the character) 320 W( stream is not)321 W 7200 69170 MT (significantly lengthened by quoting. For) 118 W( binary files, the average quoting overhead will be 26.6% if all bit)117 W 7200 70275 MT (patterns are equally likely, since the characters that must be quoted) 11 W( \050the control characters, plus DEL, and ``#'')12 W 7200 71380 MT (itself\051 comprise 26.6% of the ASCII alphabet.)SH ES %%Page: 9 9 BS 0 SI 10 /Times-Roman AF 30350 4286 MT (9)SH 10.5 SS 7200 7920 MT (KERMIT also provides a) 31 W( scheme for indicating the status of the 8th bit when transferring binary files between)30 W 7200 9025 MT (systems that must use the 8th bit for parity. A byte whose 8th) 28 W( bit is set is preceded by another special quoting)29 W 7200 10130 MT (character, ``&''. If the low-order 7 bits coincide with an ASCII control) 192 W( character, then control-character)191 W 7200 11235 MT (quoting is also done.) 33 W( For) 331 W( instance, the byte 10000001)34 W 30949 XM (would be transmitted as ``&#A''. The ``&'' character)34 W 8.5 SS 30227 11589 MT (2)SH 10.5 SS 7200 12495 MT (itself can be included as data by quoting it \050#&\051, and the control-quote) 4 W( character may have its 8th bit set \050&##\051.)3 W 7200 13600 MT (8th-bit quoting is only done when necessary; if both sides can control the) 28 W( parity bit, then its value is preserved)29 W 7200 14705 MT (during transmission. If the 8th bit is set randomly on binary files, then) 33 W( 8th-bit quoting will add 50% character)32 W 7200 15810 MT (overhead. For) 707 W( some kinds of) 222 W( binary data, it could be less; for instance, positive binary numbers in 2's)223 W 7200 16915 MT (complement notation do) 38 W( not to have their high-order bits set, in which case at least one byte per word will not)37 W 7200 18020 MT (be quoted.)SH 7200 20230 MT (A third kind of ``quoting'' implements rudimentary data compression. At low speeds, the) 99 W( bottleneck in file)100 W 7200 21335 MT (transmission is likely to be the line itself, so any measure that) 165 W( can cut down on use of the line would be)164 W 7200 22440 MT (welcome. The) 705 W( special prefix character ``~'' indicates that the next character is a repeat count \050a single)222 W 7200 23545 MT (character, encoded printably\051 and that the character) 22 W( after that \050which may also have control or 8th-bit prefixes\051)21 W 7200 24650 MT (is repeated so many times. For instance ``~}A'' indicates a series of 93 letter A's; ``~H&#B'') 135 W( indicates a)136 W 7200 25755 MT (series of 40 control-B's with) 7 W( the parity bit set. The repeat count prefix itself can be included as text by quoting)6 W 7200 26860 MT (it with ``#''.)SH 7200 29070 MT (To keep the protocol simple, no other transformations are done. At this point, however, it) 130 W( might be worth)131 W 7200 30175 MT (mentioning some things we did)SH /Times-Italic SF 20648 XM (not)SH /Times-Roman SF 22253 XM (do to the data:)SH /Symbol SF 9079 33115 MT (\267)SH /Times-Italic SF 9825 XM (Fancy Data compression)206 W /Times-Roman SF (. If) 673 W( the data is known to be \050or resemble\051 English text, a Huffman)205 W 9825 34455 MT (encoding [10, 11]) SH( based on the frequency of characters in English text could) 30 W( be used. A Huffman)31 W 9825 35795 MT (code resembles Morse) 12 W( code, which has variable length characters whose boundaries can always be)11 W 9825 37135 MT (distinguished. The) 661 W( more frequent the character, the) 199 W( shorter the bit string to represent it. Of)200 W 9825 38475 MT (course, this scheme can backfire if the character distribution of the data is) 47 W( very different from the)46 W 9825 39815 MT (one assumed. In any case, variable length characters and ASCII transmission don't mix well.)SH /Symbol SF 9079 41825 MT (\267)SH /Times-Italic SF 9825 XM (Error Correcting Codes)264 W /Times-Roman SF (. Techniques,) 791 W( such as Hamming codes) 264 W( [12],) SH( exist for detecting) 264 W( and)265 W 9825 43165 MT (correcting errors on a per-character basis.) 217 W( These) 695 W( are expensive in resources and complex to)216 W 9825 44505 MT (program. KERMIT) 263 W( uses per-packet block check techniques, which are explained below.)SH /Symbol SF 9079 46515 MT (\267)SH /Times-Italic SF 9825 XM (Nibble Encoding)67 W /Times-Roman SF (. To) 397 W( circumvent) 67 W( problems with control and 8-bit characters, it would have been)68 W 9825 47855 MT (possible to divide every character into two 4-bit ``nibbles'', sending each nibble as a printable)145 W 9825 49195 MT (character \050e.g.) 53 W( a) SH( hexadecimal digit\051. The character overhead caused) 53 W( by this scheme would would)54 W 9825 50535 MT (always be 100%. But it would be an easy way to transfer binary files.)SH 7200 53910 MT (\261)SH /Times-Italic SF 7988 XM (Error Detection)SH /Times-Roman SF 7200 56885 MT (Character parity and Hamming codes are forms of ``vertical redundancy checks'') 325 W( \050VRCs\051, formed by)324 W 7200 57990 MT (combining all the bits of a character in one way or another. The other) 84 W( kind of check that can be used is the)85 W 7200 59095 MT (``longitudinal redundancy check'' \050LRC\051, which produces a ``block check) 306 W( character'' formed by some)305 W 7200 60200 MT (combination of each character within a sequence. The sending side computes the LRC and) 77 W( sends it with the)78 W 7200 61305 MT (packet; the receiving side recomputes it for comparison. There are) 233 W( various forms of LRCs. One form)232 W 7200 62410 MT (produces a ``column parity'' character, or ``logical sum'', whose bits are the exclusive-ORs of) 393 W( the)394 W 7200 63515 MT (corresponding bits of the data characters. Another is the ``checksum'' which is the arithmetic sum of) 74 W( all the)73 W 7200 64620 MT (characters in the) 214 W( sequence, interpreted numerically. Another is the ``Cyclic Redundancy Check'' \050CRC\051)215 W 7463 65725 MT ([13, 14],) SH( which passes the characters through what amounts to a shift register with imbedded) 48 W( feedback loops,)47 W 7200 66830 MT (producing a block check in which each bit is effected in many ways by the preceding characters.)SH 7200 69040 MT (All of these techniques will catch single-bit errors. They vary in their ability to detect other kinds) 85 W( of errors.)86 W 7200 70145 MT (For instance, a double-bit) 184 W( column error will always go undetected with column parity, since the result of)183 W 7200 71250 MT (XORing any two bits together is the same as XORing their complements, whereas) 35 W( half the possible double bit)36 W ES %%Page: 10 10 BS 0 SI 10 /Times-Roman AF 30100 4286 MT (10)SH 10.5 SS 7200 7920 MT (errors can be caught by addition because of) 140 W( the carry into the next bit position. CRC does even better by)139 W 7200 9025 MT (rippling the effect of a data) 66 W( bit multiply through the block check character, but the method is complex, and a)67 W 7200 10130 MT (software implementation of CRC can be inscrutable.)SH 7200 12340 MT (Standard, base-level KERMIT employs a single-character) 20 W( arithmetic checksum, which is simple to program, is)19 W 7200 13445 MT (low in overhead, and has proven quite adequate in practice. The sum is formed by) 39 W( adding together the ASCII)40 W 7200 14550 MT (values of each character in the packet) 146 W( except the SOH and the checksum itself, and including any quoting)145 W 7200 15655 MT (characters. Even) 309 W( non-ASCII hosts must do this calculation in ASCII. The result can) 23 W( approach 12,000)24 W 51613 XM (in the)24 W 8.5 SS 50476 16009 MT (10)SH 10.5 SS 7200 16915 MT (worst case. The binary representation of this number is 10111011100000, which is 14 bits long. This is much)19 W 7200 18020 MT (more than one character's worth of bits, but we can make the) 51 W( observation that every character included in the)52 W 7200 19125 MT (sum has contributed to the low order 7 bits, so we can discard some high order bits and still have) 123 W( a viable)122 W 7200 20230 MT (validity check.)SH 7200 22440 MT (The KERMIT protocol also allows other block check options, including a two-character checksum and) 9 W( a three-)10 W 7200 23545 MT (character 16-bit CRC. The two-character checksum is simply the low order 12 bits of the) 140 W( arithmetic sum,)139 W 7200 24650 MT (broken into two) 55 W( printable characters. The CRC sequence is formed from the 16-bit quantity generated by the)56 W 8.5 SS 23150 25463 MT (16)SH 25234 XM (12)SH 27318 XM (5)SH 10.5 SS 7200 25817 MT (CCITT-recommended polynomial)333 W /Times-Italic SF 22508 XM (X)SH /Times-Roman SF 24000 XM (+)SH /Times-Italic SF (X)SH /Times-Roman SF 26084 XM (+)SH /Times-Italic SF (X)SH /Times-Roman SF 27743 XM (+1 which) 333 W( is also used in some form with other popular)332 W 7200 26922 MT (transmission techniques, like ISO HDLC and IBM SDLC) 89 W( [5].) SH( The) 441 W( high) 89 W( order 4 bits of the CRC go into the)90 W 7200 28027 MT (first character, the middle 6 into the second, and the low order 6 into the third.)SH 7200 30237 MT (Some care must be taken in the formation of the single-character block check. Since it) 26 W( must be expressed as a)25 W 7200 31342 MT (single printable character, values of the) 153 W( high order data bits may be lost, which could result in undetected)154 W 7200 32447 MT (errors, especially when transferring binary files. Therefore, we extract the) 29 W( 7th and 8th bits of the sum and add)28 W 7200 33552 MT (them back to the low order bits; if the arithmetic sum of all the) 89 W( characters is)90 W /Times-Italic SF 40713 XM (S)SH /Times-Roman SF (, then the value of the single-)90 W 7200 34657 MT (character KERMIT checksum is given by)SH /Courier SF 9720 37256 MT (\050)SH /Courier-Oblique SF (S)SH /Courier SF 11610 XM (+ \050\050)SH /Courier-Oblique SF (S)SH /Courier SF 15390 XM (AND 300\051/100\051\051 AND 77)SH /Times-Roman SF 7200 39920 MT (\050numbers are in octal notation\051. This ensures that the checksum, terse though it is,) 142 W( reflects every bit from)141 W 7200 41025 MT (every character in the packet.)SH 7200 43235 MT (The probability that an) 68 W( error will not be caught by a correctly transmitted arithmetic checksum is the ratio of)69 W 7200 44340 MT (the number) 11 W( of possible errors that cancel each other out to the total number of possible errors, which works out)10 W 8.5 /Times-Italic AF 17356 45151 MT (n)SH 10.5 /Times-Roman AF 7200 45505 MT (to be something like 1/2)1 W 17781 XM (, where)1 W /Times-Italic SF 21137 XM (n)SH /Times-Roman SF 21926 XM (is the number of bits in the checksum, assuming) 1 W( all errors are equally likely.)2 W 7200 46610 MT (This is) 62 W( 1/64 for the single character checksum, and 1/4096 for the 2-character checksum. But the probability)61 W 7200 47715 MT (that errors) 31 W( will go undetected by this method)32 W /Times-Italic SF 26532 XM (under real conditions)32 W /Times-Roman SF 35932 XM (cannot be easily derived, because all kinds)32 W 7200 48820 MT (of errors are not equally likely. A 16-bit CRC) 22 W( will detect all single and double bit errors, all messages with an)21 W 7200 49925 MT (odd number of bits in error,) 55 W( all error bursts shorter than 16 bits, and better than 99.99% of longer bursts) 56 W( [13].)SH 7200 51030 MT (These probabilities all assume, of course, that the block) 29 W( check has been identified correctly, i.e. that the length)28 W 7200 52135 MT (field points to it, and that no intervening characters have been lost or spuriously added.)SH 7200 54345 MT (A final note on parity\320a parity bit on each character combined) 45 W( with a logical sum of all the characters \050VRC)46 W /Times-Italic SF 7200 55450 MT (and)SH /Times-Roman SF 9089 XM (LRC\051 would allow detection)51 W /Times-Italic SF 21544 XM (and)SH /Times-Roman SF 23433 XM (correction of single-bit errors without retransmission by) 51 W( pinpointing the)50 W 7200 56555 MT (``row'' and ``column'' of the bad bit. But control) 32 W( of the parity bit cannot be achieved on every system, so we)33 W 7200 57660 MT (use the parity bit for) 64 W( binary data when we can, or surrender it to the communication hardware if we must. If)63 W 7200 58765 MT (we have use of the 8th bit for data, then it is figured into the block check; if we do not, then) 20 W( it must be omitted)21 W 7200 59870 MT (from the block check in case it has been changed by) 46 W( agents beyond the knowledge or control of the KERMIT)45 W 7200 60975 MT (program.)SH 7200 64350 MT (\261)SH /Times-Italic SF 7988 XM (Packet Layout)SH /Times-Roman SF 7200 67325 MT (KERMIT packets have the format:)SH ES %%Page: 11 11 BS 0 SI 10 /Times-Roman AF 30100 4286 MT (11)SH 10.5 /Courier AF 9720 7855 MT (+------+-----------+-----------+------+------------+-------+)SH 9720 9101 MT (| MARK | char\050LEN\051 | char\050SEQ\051 | TYPE |) SH( DATA |) 1890 W( CHECK |)SH 9720 10347 MT (+------+-----------+-----------+------+------------+-------+)SH 9720 11593 MT (| |) 10710 W( |) 6300 W( |) 11340 W( |)3780 W 9720 12839 MT (| |) 10710 W( +--) 6300 W( \050application\051 --+) SH( |)3780 W 9720 14085 MT (| |) 10710 W( |) 18900 W( |)3780 W 9720 15331 MT (| +--------------) 10710 W( \050session\051 ------+) SH( |)3780 W 9720 16577 MT (| |)35910 W 9720 17823 MT (+--------------------------------- \050data link\051 ------------+)SH /Times-Roman SF 7200 20487 MT (where all fields consist of ASCII characters, and the)45 W /Times-Italic SF 29770 XM (char)SH /Times-Roman SF 32002 XM (function converts a number in) 45 W( the range 0-94)46 W 52408 XM (to a)46 W 8.5 SS 51249 20841 MT (10)SH 10.5 SS 7200 21747 MT (printable ASCII character by adding 32)SH 24645 XM (.)SH 8.5 SS 23795 22101 MT (10)SH 10.5 SS 7200 23957 MT (In terms of the ISO network reference model) 89 W( [15],) SH( 8-bit bytes are presented to the KERMIT program by the)88 W 7200 25062 MT (hardware and operating system software comprising the physical link layer. Correct transmission is ensured)91 W 7200 26167 MT (by the packet-level routines that implement the data link layer using the outer ``skin'' of the packet\320the)176 W 7200 27272 MT (MARK, LEN, and CHECK fields. The network and transport layers) 81 W( are moot, since KERMIT is a point-to-)82 W 7200 28377 MT (point affair, in which the user personally makes) 48 W( all the required connections. The session layer is responsible)47 W 7200 29482 MT (for requesting retransmission of missing packets) 187 W( or ignoring redundant ones, based on the SEQ field; the)188 W 7200 30587 MT (presentation layer) 94 W( is responsible for any data conversions \050EBCDIC/ASCII, insertion or stripping of CRLFs,)93 W 7200 31692 MT (etc\051. Finally,) 517 W( the remainder of the packet, the TYPE and DATA fields, are the province) 127 W( of the application)128 W 7200 32797 MT (layer; our application,) 68 W( of course, is file transfer. In any particular implementation, however, the organization)67 W 7200 33902 MT (of the program may not strictly follow this model. For instance, since transmission is always) 15 W( in stream ASCII,)16 W 7200 35007 MT (IBM implementations must convert from EBCDIC and insert CRLFs)SH /Times-Italic SF 36516 XM (before)SH /Times-Roman SF 39461 XM (checksum computation.)SH 7200 37217 MT (The fields of a KERMIT packet are as follows:)SH 7200 40037 MT (MARK)SH 12450 XM (Start-of-packet character, normally SOH \050ASCII 1\051.)SH 3149 50 7200 40237 UL 7200 42047 MT (LEN)SH 12450 XM (The number of ASCII characters, including quoting characters and the checksum, within the)230 W 2042 50 7200 42247 UL 12450 43387 MT (packet that follow this field, in other words) 115 W( the packet length minus two. Since this number is)116 W 12450 44727 MT (expressed as a single character via the)158 W /Times-Italic SF 29797 XM (char)SH /Times-Roman SF 32142 XM (function, packet character counts of 0 to 94)158 W 52718 XM (are)SH 8.5 SS 51447 45081 MT (10)SH 10.5 SS 12450 46067 MT (permitted, and 96)SH 20943 XM (is the maximum total packet length.)SH 8.5 SS 19830 46421 MT (10)SH 10.5 SS 7200 48077 MT (SEQ)SH 12450 XM (The packet sequence number, modulo 100)108 W 31205 XM (. The) 480 W( sequence numbers ``wraps around'' to 0 after)109 W 1984 50 7200 48277 UL 8.5 SS 30780 48431 MT (8)SH 10.5 SS 12450 49417 MT (each group of 64)SH 20650 XM (packets.)SH 8.5 SS 19537 49771 MT (10)SH 10.5 SS 7200 51427 MT (TYPE)SH 12450 XM (The packet type, a single printable ASCII character, one of the following:)SH 2626 50 7200 51627 UL 12450 53297 MT (D)SH 14550 XM (Data)SH 12450 54637 MT (Y)SH 14550 XM (Acknowledge \050ACK\051)SH 12450 55977 MT (N)SH 14550 XM (Negative Acknowledge \050NAK\051)SH 12450 57317 MT (S)SH 14550 XM (Send Initiate \050Send-Init\051)SH 12450 58657 MT (R)SH 14550 XM (Receive Initiate)SH 12450 59997 MT (B)SH 14550 XM (Break Transmission \050EOT\051)SH 12450 61337 MT (F)SH 14550 XM (File Header)SH 12450 62677 MT (Z)SH 14550 XM (End of file \050EOF\051)SH 12450 64017 MT (E)SH 14550 XM (Error)SH 12450 66837 MT (G)SH 14550 XM (Generic Command. A single character in the data field, possibly) 199 W( followed by operands,)198 W 14550 68177 MT (requests host-independent remote execution the specified command:)SH 14550 70047 MT (L)SH 16650 XM (Logout, Bye.)SH 14550 71387 MT (F)SH 16650 XM (Finish, but don't logout.)SH ES %%Page: 12 12 BS 0 SI 10 /Times-Roman AF 30100 4286 MT (12)SH 10.5 SS 14550 7920 MT (D)SH 16650 XM (Directory query \050followed by optional file specification\051.)SH 14550 9260 MT (U)SH 16650 XM (Disk usage query.)SH 14550 10600 MT (E)SH 16650 XM (Erase \050followed by file specification\051.)SH 14550 11940 MT (T)SH 16650 XM (Type \050followed by file specification\051.)SH 14550 13280 MT (Q)SH 16650 XM (Query server status.)SH 14550 14620 MT (and others.)SH 12450 16490 MT (C)SH 14550 XM (Host Command. The data field contains a string to be) 207 W( executed as a system dependent)208 W 14550 17830 MT (\050literal\051 command by the host.)SH 12450 19438 MT (X)SH 14550 XM (Text display header,) 53 W( to indicate the arrival of text to be displayed on the screen, for instance)52 W 14550 20778 MT (as the result of a generic or host command executed at the other end.) 97 W( Operation) 458 W( is exactly)98 W 14550 22118 MT (like a file transfer.)SH 7200 24938 MT (DATA)SH 12450 XM (The ``contents'' of the packet, if any contents are required in the given type of packet,) 34 W( interpreted)33 W 2916 50 7200 25138 UL 12450 26278 MT (according to the packet type. Nonprintable ASCII) 100 W( characters are prefixed with quote characters)101 W 12450 27618 MT (and then ``uncontrollified''. Characters with the 8th bit set may also) 67 W( be prefixed, and a repeated)66 W 12450 28958 MT (character can be prefixed by a count. A prefixed sequence may not be broken across packets.)SH 7200 30968 MT (CHECK)SH 12450 XM (The block check sequence, based on all the) 102 W( characters in the packet between, but not including,)103 W 3558 50 7200 31168 UL 12450 32308 MT (the mark and the check itself, one, two, or three characters in length as) 151 W( described above, each)150 W 12450 33648 MT (character transformed by)SH /Times-Italic SF 23210 XM (char)SH /Times-Roman SF (. Normally,) 263 W( the single-character checksum is used.)SH 7200 36468 MT (The packet may be followed by any line terminator) 10 W( required by the host, carriage return \050ASCII 15\051 by default.)11 W 7200 37573 MT (Line terminators are not part of the packet, and are not included in) 7 W( the count or checksum. Terminators are not)6 W 7200 38678 MT (necessary to the protocol, and are) 66 W( invisible to it, as are any characters that may appear between packets. If a)67 W 7200 39783 MT (host cannot do single character input from a TTY line, then a terminator will be required for that host.)SH 7200 41993 MT (Here are some sample KERMIT data packets:)SH /Courier SF 9720 44592 MT (^AE"D No) 1260 W( celestial body has required J)SH 9720 45838 MT (^AE#Das much labor for the study of its#)SH 9720 47084 MT (^AE$D#M#Jmotion as the moon. Since ClaA)SH 9720 48330 MT (^AE%Dirault \0501747\051, who indicated a way7)SH 9720 49576 MT (^AE&D of#M#Jconstructing a theory conta5)SH /Times-Roman SF 7200 52240 MT (The ``)80 W /Courier SF (^A)SH /Times-Roman SF ('' represents the SOH \050or Control-A\051 character.) 80 W( In) 421 W( the final packet shown, ``)79 W /Courier SF (E)SH /Times-Roman SF ('' is the length. The)79 W 7200 53345 MT (ASCII value of the ``)67 W /Courier SF (E)SH /Times-Roman SF ('' character) 67 W( is 69)68 W 25163 XM (, less 32 \050the)68 W /Times-Italic SF 31007 XM (unchar)SH /Times-Roman SF 34312 XM (transformation, which is the opposite of)68 W /Times-Italic SF 51726 XM (char)SH /Times-Roman SF (\051)SH 8.5 SS 24313 53699 MT (10)SH 10.5 SS 7200 54605 MT (gives a length of 37. The next character tells the packet sequence number, in) 60 W( this case 6 \050``)59 W /Courier SF (&)SH /Times-Roman SF ('' is ASCII 38\051.)59 W 7200 55710 MT (The next is the packet type ``)100 W /Courier SF (D)SH /Times-Roman SF ('' for Data. The next characters, ``)101 W /Courier SF 36788 XM (of#M#Jconstructing a theory)101 W 7200 56815 MT (conta)SH /Times-Roman SF ('', form the data; note the prefixed carriage return) 182 W( and line feed. The final character, ``)181 W /Courier SF (5)SH /Times-Roman SF ('' is the)181 W 7200 57920 MT (checksum, which represents the number 21 \050all numbers in this paragraph are in decimal\051.)SH 7200 61295 MT (\261)SH /Times-Italic SF 7988 XM (Effects of Packet Corruption)SH /Times-Roman SF 7200 64270 MT (What are the consequences) 37 W( of transmission errors in the various fields? If the SOH is garbled, the packet will)38 W 7200 65375 MT (be treated as interpacket garbage, and lost. If any other character within the packet) 78 W( is garbled into SOH, the)77 W 7200 66480 MT (current packet will be discarded, and) 54 W( a new \050spurious\051 packet detected. If the length is garbled into a smaller)55 W 7200 67585 MT (number, then a character from the data field will) 8 W( be misinterpreted as the checksum; if larger, then the program)7 W 7200 68690 MT (will probably become stuck trying to input characters) 32 W( that will not be sent until one side or the other times out)33 W 7200 69795 MT (and retransmits. If the) 11 W( sequence number, type, any of the data characters, or the checksum itself is garbled, the)10 W 7200 70900 MT (checksum should) 51 W( be wrong. If characters are lost, there will most likely be a timeout. If noise characters are)52 W ES %%Page: 13 13 BS 0 SI 10 /Times-Roman AF 30100 4286 MT (13)SH 10.5 SS 7200 7920 MT (spontaneously generated, they will be ignored) 14 W( if they are between packets, or will cause the wrong character to)13 W 7200 9025 MT (be interpreted as the checksum if they come during packet transmission.)SH 7200 11235 MT (Most kinds of errors) 88 W( are caught by the checksum comparison, and are handled by immediate retransmission.)89 W 7200 12340 MT (Timeouts are more costly because the line sits idle for the timeout period.) 87 W( The) 436 W( packet design minimizes the)86 W 7200 13445 MT (necessity for) 23 W( timeouts due to packet corruption: the only fields that can be corrupted to cause a timeout are the)24 W 7200 14550 MT (SOH and the packet length, and the latter only half) 46 W( the time. Lost characters, however, can produce the same)45 W 7200 15655 MT (effect \050as they would with) 94 W( a fixed-length block protocol\051. Had a distinguished end-of-packet character been)95 W 7200 16760 MT (used rather than a length field, then there would be a timeout every time) 9 W( it was corrupted. It is always better to)8 W 7200 17865 MT (retransmit immediately than to time out.)SH /Symbol SF 7200 22143 MT (\267)SH /Times-Bold SF 7946 XM (Protocol)SH /Times-Roman SF 7200 25098 MT (The KERMIT protocol can be described as a set of)16 W /Times-Italic SF 29000 XM (states)SH /Times-Roman SF 31670 XM (and a set of)16 W /Times-Italic SF 36809 XM (transitions)SH /Times-Roman SF 41580 XM (that define, for a) 16 W( given event,)17 W 7200 26203 MT (what action to take and what new state to change to. The) 104 W( inherent simplicity of the design, particularly the)103 W 7200 27308 MT (requirement that each packet must be acknowledged,) 19 W( reduces the number of states and actions, and the amount)20 W 7200 28413 MT (of state information that must be maintained, to a minimum.)SH 7200 30623 MT (Here is a simplified version of a state diagram for KERMIT receiving a file:)SH /Courier SF 24840 33222 MT (+--------------+)SH 24840 34294 MT (| Receive Init |)SH 24840 35366 MT (+--------------+)SH 29880 36438 MT (|)SH 29880 37510 MT (| \050Get Send Init Packet\051)SH 29880 38582 MT (|)SH 14130 39654 MT (\050Get EOT Packet\051) SH( V)5040 W 24840 40726 MT (+--------------+)SH 8460 41798 MT (\050Done\051 <------------------| Receive File |<---------------+)SH 24840 42870 MT (+--------------+ |)9450 W 29880 43942 MT (| |)13860 W 29880 45014 MT (| \050Get File) SH( |) 7560 W( \050Get EOF Packet\051)SH 29880 46086 MT (| Header) 630 W( Packet\051) SH( |)3780 W 29880 47158 MT (V |)13860 W 24840 48230 MT (+--------------+ |)9450 W 19800 49302 MT (+------>| Receive Data |----------------+)SH 19800 50374 MT (| +--------------+)3780 W 19800 51446 MT (| |)8820 W 19800 52518 MT (| |) 8820 W( \050Get Data Packet\051)SH 19800 53590 MT (| |)8820 W 19800 54662 MT (+---------------+)SH /Times-Roman SF 7200 57326 MT (For simplicity, some transitions are not shown in the diagram:)SH /Symbol SF 9079 60266 MT (\267)SH /Times-Roman SF 9825 XM (If in any state a bad packet is received or a timeout occurs,) 29 W( a null transition back to the same state)28 W 9825 61606 MT (occurs, with a NAK for the expected packet.)SH /Symbol SF 9079 63616 MT (\267)SH /Times-Roman SF 9825 XM (In any state an error may occur that can) 88 W( cause the transfer to terminate. For instance, the target)89 W 9825 64956 MT (disk might) 217 W( fill up. The side that encountered the error sends an error packet, containing an)216 W 9825 66296 MT (informative error message, and quits. Upon receipt of the error packet, the other side displays) 32 W( the)33 W 9825 67636 MT (message on the screen \050if it is in control of the screen\051 and also quits.)SH /Symbol SF 9079 69646 MT (\267)SH /Times-Roman SF 9825 XM (Actions that are taken) 153 W( on each transition, such as opening a file when a File Header packet is)152 W 9825 70986 MT (received, are not shown; in particular each packet successfully received is ACK'd.)SH ES %%Page: 14 14 BS 0 SI 10 /Times-Roman AF 30100 4286 MT (14)SH 10.5 SS 7200 7920 MT (The receiver starts out in Receive Init state) 12 W( and waits for the other side to send a Send-Init packet. If any other)13 W 7200 9025 MT (kind of packet is received, or the Send-Init does not arrive within the) 236 W( timeout interval, a NAK is sent.)235 W 7200 10130 MT (Timeouts or NAKs can occur up to a threshold which, when exceeded for a particular packet, causes) 178 W( the)179 W 7200 11235 MT (protocol to assume that the connection has become unusable, and to) 71 W( give up. After the Send-Init arrives, the)70 W 7200 12340 MT (state becomes Receive File; KERMIT waits for a File Header packet containing the name of the) 56 W( file which is)57 W 7200 13445 MT (to come. When the file header arrives, KERMIT) 271 W( opens a new file using the name provided \050perhaps)270 W 7200 14550 MT (transformed to suit) 146 W( local naming conventions, or to avoid a name collision\051, and switches to Receive Data)147 W 7200 15655 MT (state. KERMIT) 315 W( then receives the contents of the file, until an) 26 W( EOF \050End Of File\051 packet arrives. At that point)25 W 7200 16760 MT (KERMIT switches back to Receive File state. If another file is to be sent, another File Header) 119 W( packet will)120 W 7200 17865 MT (follow, otherwise an EOT \050End) 62 W( Of Transmission\051 packet will terminate the transfer. The distinction between)61 W 7200 18970 MT (EOF and EOT,) 21 W( plus the File Header itself, allows files to be sent in groups. EOF marks the end of a file, EOT)22 W 7200 20075 MT (marks the end of a group. This distinction also allows the two sides to disconnect cleanly: the EOF must be)75 W 7200 21180 MT (ACK'd before the sender will believe the) 86 W( file has been transmitted correctly; the EOT will follow, but if the)87 W 7200 22285 MT (ACK which is sent in response is lost, no harm will be done since both sides are terminating anyway.)SH 7200 24495 MT (The state transitions for a sending KERMIT are similar. In each state, instead of waiting) 40 W( for particular packet)39 W 7200 25600 MT (types, KERMIT sends the appropriate packet and waits for) 97 W( an ACK. If the ACK does not arrive within the)98 W 7200 26705 MT (allotted time, or a NAK appears instead) 17 W( of an ACK, the same packet is retransmitted. A send operation begins)16 W 7200 27810 MT (with a Send-Init packet, includes one or) 40 W( more files, each starting with a File Header, followed by one or more)41 W 7200 28915 MT (data packets, followed by EOF. When all the specified files have) 217 W( been sent, an EOT packet closes the)216 W 7200 30020 MT (connection and terminates the operation.)SH /Courier SF 24840 32619 MT (+-----------+)SH 24840 33691 MT (| Send Init |)SH 24840 34763 MT (+-----------+)SH 29880 35835 MT (|)SH 29880 36907 MT (| \050Get Good ACK\051)SH 29880 37979 MT (|)SH 9090 39051 MT (\050No more files to send\051) SH( V)5670 W 8460 40123 MT (+----------+ +-----------+)8190 W 8460 41195 MT (| Send EOT |<-------------| Send File |<---------------+)SH 8460 42267 MT (+----------+ +-----------+) 8190 W( |)9450 W 29880 43339 MT (| |)11970 W 29880 44411 MT (| \050Good ACK\051) SH( |) 5040 W( \050EOF\051)SH 29880 45483 MT (| |)11970 W 29880 46555 MT (V |)11970 W 24840 47627 MT (+-----------+ |)9450 W 19800 48699 MT (+------>| Send Data |----------------+)SH 19800 49771 MT (| +-----------+)3780 W 19800 50843 MT (| |)8820 W 19800 51915 MT (| |) 8820 W( \050Good ACK\051)SH 19800 52987 MT (| |)8820 W 19800 54059 MT (+---------------+)SH /Times-Roman SF 7200 56723 MT (Base-level KERMIT provides that) 236 W( during any particular transaction, the sender is the ``master'' and the)237 W 7200 57828 MT (receiver is the ``slave''. These roles may) 36 W( be reversed in the next transaction; any KERMIT implementation is)35 W 7200 58933 MT (capable of acting as either master or slave. In addition, mainframe implementations may also be put in) 36 W( a kind)37 W 7200 60038 MT (of permanent slave, or ``server'', mode in which all commands come in command packets from the) 32 W( master, or)31 W 7200 61143 MT (``user'' KERMIT.)SH 7200 64518 MT (\261)SH /Times-Italic SF 7988 XM (Initial Connection)SH /Times-Roman SF 7200 67493 MT (To allow a diverse group of computers to communicate with one another,) 134 W( an exchange takes places during)135 W 7200 68598 MT (initial connection in which the two) 204 W( sides ``configure'' each other. The sending KERMIT includes setup)203 W 7200 69703 MT (parameters in its) 119 W( Send-Init packet and the receiving KERMIT responds with an ACK packet containing the)120 W 7200 70808 MT (corresponding parameters as they apply to itself. The Data field of the Send-Init packet looks like this:)SH ES %%Page: 15 15 BS 0 SI 10 /Times-Roman AF 30100 4286 MT (15)SH 10.5 /Courier AF 9090 7855 MT (1 2 3 4 5 6 7 8 9 10)3150 W 8460 9101 MT (+------+------+------+------+------+------+------+------+------+-------------)SH 8460 10347 MT (| MAXL | TIME | NPAD | PADC | EOL | QCTL | QBIN | CHKT | REPT | CAPAS...)SH 8460 11593 MT (+------+------+------+------+------+------+------+------+------+-------------)SH /Times-Roman SF 7200 14257 MT (The fields are as follows \050the first and second person ``I'' and ``you'' are) 81 W( used to distinguish the two sides\051.)80 W 7200 15362 MT (Fields are encoded printably using the)SH /Times-Italic SF 23475 XM (char)SH /Times-Roman SF 25662 XM (function \050ASCII value + 32)SH 38072 XM (\051 unless indicated otherwise.)SH 8.5 SS 37222 15716 MT (10)SH 10.5 SS 7200 18182 MT (MAXL)SH 11400 XM (The maximum length packet I want to receive, a number up to 94)24 W 40044 XM (.You respond with the maximum)25 W 3091 50 7200 18382 UL 8.5 SS 39194 18536 MT (10)SH 10.5 SS 11400 19522 MT (you want me to send. This allows) 52 W( systems to adjust to each other's buffer sizes, or to the condition)51 W 11400 20862 MT (of the transmission medium.)SH 7200 22470 MT (TIME)SH 11400 XM (The number of seconds after which I want you to time me out while waiting) 68 W( for a packet from me.)69 W 2567 50 7200 22670 UL 11400 23810 MT (You respond with the amount of time I) 35 W( should wait for packets from you. This allows the two sides)34 W 11400 25150 MT (to accommodate to different line speeds or other factors that could cause timing problems.)SH 7200 26758 MT (NPAD)SH 11400 XM (The number of padding characters I want to precede each) 137 W( incoming packet; you respond in kind.)138 W 2858 50 7200 26958 UL 11400 28098 MT (Padding may be necessary for a half duplex) 71 W( system that requires some time to change the direction)70 W 11400 29438 MT (of transmission.)SH 7200 31046 MT (PADC)SH 11400 XM (The control character I need for padding, if any, XOR'd with 100 octal) 96 W( to make it printable. You)97 W 2800 50 7200 31246 UL 11400 32386 MT (respond in kind. Normally NUL \050ASCII) 159 W( 0\051, some systems use DEL \050ASCII 177\051. This field is)158 W 11400 33726 MT (ignored if the value NPAD is zero.)SH 7200 35334 MT (EOL)SH 11400 XM (The character I need to) 73 W( terminate an incoming packet, if any. You respond in kind. Most systems)74 W 2042 50 7200 35534 UL 11400 36674 MT (that require a line terminator for terminal input accept carriage return for this purpose. \050Can you see)25 W 11400 38014 MT (the Catch-22 here?\051)SH 7200 39622 MT (QCTL)SH 11400 XM (The printable ASCII) 61 W( character I will use to quote control characters and prefix characters, normally)62 W 2742 50 7200 39822 UL 11400 40962 MT (``#''. You) 263 W( respond with the one you will use.)SH 7200 42570 MT (QBIN)SH 11400 XM (The printable ASCII character I want to use to quote characters which have the) 190 W( 8th bit set, for)189 W 2566 50 7200 42770 UL 11400 43910 MT (transmitting binary) 24 W( files when one or both systems cannot use the parity bit for data. Since this kind)25 W 11400 45250 MT (of quoting increases both processor and transmission overhead, it is normally to be avoided.)SH 7200 46858 MT (CHKT)SH 11400 XM (Check Type, the method for detecting errors. ``1'' for single-character checksum \050the normal)246 W 2858 50 7200 47058 UL 11400 48198 MT (method\051, ``2'' for two-character checksum, ``3'' for three-character CRC-CCITT.) 67 W( If) 398 W( your response)68 W 11400 49538 MT (agrees, the designated) 108 W( method will be used; otherwise the single-character checksum will be used.)107 W 11400 50878 MT (Other check types may also be added.)SH 7200 52486 MT (REPT)SH 11400 XM (The prefix character I will use to indicate a repeated character. This can be) 63 W( any printable character)64 W 2568 50 7200 52686 UL 11400 53826 MT (other than blank \050which denotes no repeat count prefix\051, but ``~'' is recommended.) 137 W( If) 535 W( you don't)136 W 11400 55166 MT (respond identically, repeat) 19 W( counts will not be done. Groups of 4 or more identical characters may be)20 W 11400 56506 MT (transmitted more efficiently using a repeat count, though an individual implementation may) 55 W( wish to)54 W 11400 57846 MT (set a higher threshhold.)SH 7200 59454 MT (CAPAS)SH 11400 XM (An extendable) 21 W( bit mask encoded printably, to indicate whether certain advanced capabilities, such as)22 W 3384 50 7200 59654 UL 11400 60794 MT (file-attribute packets, are supported.)SH /Times-Italic SF 7200 62402 MT (Reserved Fields)SH 6735 50 7200 62602 UL /Times-Roman SF 11400 63742 MT (The next four fields are reserved for future use. Sites) 109 W( wishing to add their own parameters to the)110 W 11400 65082 MT (initial connection) 42 W( exchange should start at the fifth field after the capability mask in order to remain)41 W 11400 66422 MT (compatible with other KERMIT programs.)SH 7200 69242 MT (Naturally, the three prefix characters must be distinct and should be chosen to be uncommonly used printable)54 W 7200 70347 MT (characters, to minimize further overhead from having to prefix them when they are found in the data.)SH ES %%Page: 16 16 BS 0 SI 10 /Times-Roman AF 30100 4286 MT (16)SH 10.5 SS 7200 7920 MT (Trailing fields within the DATA field may be omitted, in which) 107 W( case they will assume appropriate defaults.)106 W 7200 9025 MT (Defaults for intermediate) 213 W( fields can be elected by setting those fields to blank. Every parameter has an)214 W 7200 10130 MT (appropriate default, and in fact the entire data field of the Send) 90 W( Init packet or its ACK may be left empty to)89 W 7200 11235 MT (accept all defaults. The more exotic) 101 W( paramaters are at the end, and reflect more recent developments in the)102 W 7200 12340 MT (KERMIT protocol;) 150 W( earlier implementations can still communicate with newer ones, since there will not be)149 W 7200 13445 MT (agreement to use these options. The Send-Init) 207 W( mechanism preserves compatibility from the very earliest)208 W 7200 14550 MT (KERMIT to the very newest.)SH 7200 16760 MT (There is no protracted negotiation; everything must be settled in a single exchange.) 256 W( Some) 774 W( parameters,)255 W 7200 17865 MT (however, are outside the scope of) 46 W( this exchange and must be set even before the very first packet is sent. For)47 W 7200 18970 MT (instance, if the receiving computer can only read characters) 102 W( with odd parity but the sending computer sends)101 W 7200 20075 MT (them with even parity, the Send-Init packet will never arrive successfully. In cases like this, the user may) 7 W( have)8 W 7200 21180 MT (to issue some preliminary commands to inform one) 46 W( or both KERMITs about the vagaries of the other system.)45 W 7200 22285 MT (Another example is the packet terminator \050EOL\051 mentioned above\320if the) 138 W( receiving KERMIT requires one)139 W 7200 23390 MT (that the sending KERMIT doesn't know about, the Send-Init will never get through.)SH 7200 25600 MT (For these reasons, most implementations of KERMIT provide SET commands for all the parameters) 149 W( listed)148 W 7200 26705 MT (above, and some others as well.)SH 7200 30080 MT (\261)SH /Times-Italic SF 7988 XM (Rules and Heuristics)SH /Times-Roman SF 7200 33175 MT (During a file transfer, one KERMIT sends information packets\320file headers, data, and so forth,) 41 W( and the other)42 W 7200 34280 MT (KERMIT sends only ACKs or NAKs in response. The most important rule in the KERMIT protocol is)SH /Times-Bold SF 9300 37253 MT (1.)SH /Times-Italic SF 10351 XM (``Wait for a response before sending the next packet.'')SH /Times-Roman SF 7200 40228 MT (This prevents buffer overruns, and allows participation by half duplex) 87 W( systems. Of course, KERMIT should)86 W 7200 41333 MT (not wait forever; a timeout should occur after a few seconds if the expected packet has not arrived.) 133 W( Upon)530 W 7200 42438 MT (timeout, a sending KERMIT retransmits the current packet;) 54 W( a receiving KERMIT re-ACKs the current packet)53 W 7200 43543 MT (or NAKs the expected one.)SH 7200 45753 MT (Some interesting heuristics are used in the KERMIT protocol) 59 W( to boost efficiency and improve error recovery.)60 W 7200 46858 MT (A number of important) 117 W( rules take care of the cases when packets are lost in transmission. The first can be)116 W 7200 47963 MT (stated as)SH /Times-Bold SF 9300 50936 MT (2.)SH /Times-Italic SF 10351 XM (``A NAK for the next packet implies an ACK for the current packet.'')SH /Times-Roman SF 7200 53911 MT (A NAK with packet number)125 W /Times-Italic SF 19987 XM (n+1)SH /Times-Roman SF 22134 XM (means the receiving KERMIT got packet)125 W /Times-Italic SF 40441 XM (n)SH /Times-Roman SF (, sent an ACK that was never)126 W 7200 55016 MT (received, and not knowing that the ACK didn't get through \050since we don't ACK an) 24 W( ACK\051, is now waiting for)23 W 7200 56121 MT (packet)SH /Times-Italic SF 10235 XM (n+1)SH /Times-Roman SF (, which was never sent. In this case, we simply send packet)32 W /Times-Italic SF 37784 XM (n+1)SH /Times-Roman SF (. An) 327 W( important exception is) 32 W( when)33 W 7200 57226 MT (the missing ACK is for a Send-Init packet; do you see why? The next rule,)SH /Times-Bold SF 9300 60199 MT (3.)SH /Times-Italic SF 10351 XM (``ACK and discard redundant packets.'')SH /Times-Roman SF 7200 63174 MT (handles the situation) 122 W( where the same packet arrives again. The sending KERMIT timed out waiting for an)121 W 7200 64279 MT (ACK which was sent, but lost, and retransmitted the packet. The receiver must discard the redundant) 22 W( data and)23 W 7200 65384 MT (ACK the packet again; to do otherwise could) 14 W( have undesirable effects, like adding the same data to a file twice)13 W 7200 66489 MT (or opening the same file multiple) 6 W( times. Note that the situation resulting from a lost ACK depends upon which)7 W 7200 67594 MT (side times out first.)SH 7200 69804 MT (KERMIT must handle another situation arising from possible lost packets:)SH ES %%Page: 17 17 BS 0 SI 10 /Times-Roman AF 30100 4286 MT (17)SH 10.5 /Times-Bold AF 9300 7918 MT (4.)SH /Times-Italic SF 10351 XM (``NAK the expected command.'')SH /Times-Roman SF 7200 10893 MT (The potential problem occurs in either the Receive) 196 W( Init state or when a KERMIT server is waiting for a)195 W 7200 11998 MT (command. In) 443 W( either case KERMIT won't know whether communication has begun) 90 W( if the other side's initial)91 W 7200 13103 MT (packet was) 261 W( lost. KERMIT can't assume the other side will time out and retransmit, so it must check)260 W 7200 14208 MT (periodically by) 5 W( sending a NAK for packet zero. If KERMIT gets no response it assumes nothing has happened)6 W 7200 15313 MT (yet and goes back to sleep for a while.)SH 7200 17523 MT (But sending periodic NAKs opens the door to the)35 W /Times-Italic SF 28545 XM (buffering problem)35 W /Times-Roman SF (. Some) 333 W( systems buffer input) 35 W( for a device;)34 W 7200 18628 MT (when a program isn't looking for input some or) 11 W( all the input is saved by the computer for future requests. This)12 W 7200 19733 MT (can cause problems when talking to a KERMIT server or sending) 18 W( a file to a KERMIT in receive wait. If some)17 W 7200 20838 MT (time has elapsed since activating the remote KERMIT and escaping back and starting up the) 25 W( local KERMIT, a)26 W 7200 21943 MT (number of NAKs may have accumulated in the local KERMIT's input buffer, so:)SH /Times-Bold SF 9300 24916 MT (5.)SH /Times-Italic SF 10351 XM (``Clear the input buffer at the beginning of a transfer.'')SH /Times-Roman SF 7200 27891 MT (If the input buffer is not cleared, the local KERMIT will think the remote side is having) 53 W( trouble receiving the)52 W 7200 28996 MT (first packet. In an effort to get the packet through, it will be) 32 W( sent again; this repeats for every NAK waiting in)33 W 7200 30101 MT (the input buffer. By the time the first) 47 W( ACK is finally encountered in the buffer, a number of duplicates of the)46 W 7200 31206 MT (first packet will have been sent out. If this number exceeds the NAK threshhold, the) 179 W( connection will be)180 W 7200 32311 MT (broken. If) 383 W( not, however, the second) 60 W( packet will be retransmitted once for each of the extra ACKs the remote)59 W 7200 33416 MT (KERMIT correctly sent for the duplicate first packets. This) 48 W( can continue throughout the file transfer, causing)49 W 7200 34521 MT (each packet to be sent many times. So, in addition,)SH /Times-Bold SF 9300 37494 MT (6.)SH /Times-Italic SF 10351 XM (``Clear the input buffer after reading each packet.'')SH /Times-Roman SF 7200 40469 MT (Any computer that buffers its input should clear its input buffer before the transfer and after) 66 W( each packet that)65 W 7200 41574 MT (arrives successfully. But since not all systems provide a clear-buffer function, we may add another rule:)SH /Times-Bold SF 9300 44547 MT (7.)SH /Times-Italic SF 10351 XM (``Discard redundant ACKs.'')SH /Times-Roman SF 7200 47522 MT (In the situation just) 47 W( described, the first packet would be sent out multiple times, once for each buffered NAK.)48 W 7200 48627 MT (Upon receipt of the first ACK, the second packet would go) 52 W( out, but the next response would be another ACK)51 W 7200 49732 MT (for the first packet; by rule)69 W /Times-Bold SF 19107 XM (7)SH /Times-Roman SF (, KERMIT would simply take in the redundant ACK, ignore it, and look for the)69 W 7200 50837 MT (next ACK, until it got the desired one, in violation of the spirit of Rule)SH /Times-Bold SF 37104 XM (1)SH /Times-Roman SF (.)SH 7200 53047 MT (If we allowed ourselves to violate Rule)122 W /Times-Bold SF 24766 XM (1)SH /Times-Roman SF (, we could) 122 W( add a final rule,)121 W /Times-Italic SF 37604 XM (``An ACK for packet n also ACKs all)121 W 7200 54152 MT (previous packets,'')110 W /Times-Roman SF 15672 XM (as is) 110 W( done in network protocols like DDCMP) 111 W( [16],) SH( allowing data packets to be sent in a)111 W 7200 55257 MT (continuous stream. KERMIT cannot use this rule for) 156 W( many reasons: sequence number wraparound, buffer)155 W 7200 56362 MT (overflows, locking out half) 86 W( duplex systems \050how can they NAK a bad packet if they can't get control of the)87 W 7200 57467 MT (line?\051. Thus) 263 W( if we violate rule)SH /Times-Bold SF 20152 XM (1)SH /Times-Roman SF (, it must be only in a very minor way.)SH 7200 60842 MT (\261)SH /Times-Italic SF 7988 XM (Example)SH /Times-Roman SF 7200 63817 MT (Here is a sequence of packets from a real file transfer. Each packet starts with Control-A, shown as)SH /Courier SF 49342 XM (^A)SH /Times-Roman SF (.)SH ES %%Page: 18 18 BS 0 SI 10 /Times-Roman AF 30100 4286 MT (18)SH 10.5 /Courier AF 9720 7855 MT (^A\051 SH\050 @-#^)SH /Courier-Oblique SF 38700 XM (Send Init)SH /Courier SF 9720 9101 MT (^A\051 YH\050 @-#%)SH /Courier-Oblique SF 38700 XM (ACK for Send Init)SH /Courier SF 9720 10347 MT (^A+!FMOON.DOC2)SH /Courier-Oblique SF 38700 XM (File Header)SH /Courier SF 9720 11593 MT (^A#!Y?)SH /Courier-Oblique SF 38700 XM (ACK for File Header)SH /Courier SF 9720 12839 MT (^AE"D No) 1260 W( celestial body has required J)SH /Courier-Oblique SF 38700 XM (First Data packet)SH /Courier SF 9720 14085 MT (^A#"Y@)SH /Courier-Oblique SF 38700 XM (ACK for first Data packet)SH /Courier SF 9720 15331 MT (^AE#Das m%%%uch labor for the study of its#)SH /Courier-Oblique SF 38700 XM (Second Data packet, Bad)SH /Courier SF 9720 16577 MT (^A##N8)SH /Courier-Oblique SF 38700 XM (NAK for second Data packet)SH /Courier SF 9720 17823 MT (^AE#Das much labor for the study of its#)SH /Courier-Oblique SF 38700 XM (Second Data packet again)SH /Courier SF 9720 19069 MT (^A##YA)SH /Courier-Oblique SF 38700 XM (ACK for second Data packet)SH /Courier SF 9720 20315 MT (^AE$D#M#Jmotion as the moon. Since ClaA)SH /Courier-Oblique SF 38700 XM (etc...)SH /Courier SF 9720 21561 MT (^A#$YB)SH /Courier-Oblique SF 9720 23462 MT (\050many packets omitted here\051)SH /Courier SF 9720 25363 MT (^AD"Dout 300 terms are sufficient.#M#JU)SH /Courier-Oblique SF 38700 XM (Last Data packet)SH /Courier SF 9720 26609 MT (^A#"Y@)SH /Courier-Oblique SF 38700 XM (ACK for last Data)SH /Courier SF 9720 27855 MT (^A##ZB)SH /Courier-Oblique SF 38700 XM (EOF)SH /Courier SF 9720 29101 MT (^A##YA)SH /Courier-Oblique SF 38700 XM (ACK for EOF)SH /Courier SF 9720 30347 MT (^A#$B+)SH /Courier-Oblique SF 38700 XM (EOT)SH /Courier SF 9720 31593 MT (^A#$YB)SH /Courier-Oblique SF 38700 XM (ACK for EOT)SH /Times-Roman SF 7200 34257 MT (In the first packet, we see following the control-A the packet length ``)26 W /Courier SF (\051)SH /Times-Roman SF ('' \05041)26 W 40752 XM (, less 32, or) 26 W( 9\051, followed by the)25 W 8.5 SS 39902 34611 MT (10)SH 10.5 SS 7200 35517 MT (packet type, S \050Send-Init\051, followed by the appropriate parameter declarations: maximum packet length is H)97 W 7200 36622 MT (\05072-32)SH /Courier SF (=)SH /Times-Roman SF (40\051, timeout) 204 W( is ``)203 W /Courier SF (\050)SH /Times-Roman SF ('' \05040-32)203 W /Courier SF (=)SH /Times-Roman SF (8\051, number of padding characters is 0 \050space)203 W /Courier SF (=)SH /Times-Roman SF (32-32)SH /Courier SF (=)SH /Times-Roman SF (0\051, the padding)203 W 7200 37727 MT (character is 0, end-of-line is ``)61 W /Courier SF (-)SH /Times-Roman SF ('' \05045-32)61 W /Courier SF (=)SH /Times-Roman SF (13, the ASCII value of carriage return\051, the) 61 W( control-quote character)62 W 7200 38832 MT (is ``#'', and the remaining) 46 W( fields are omitted, defaulting to appropriate values. The final character ``)45 W /Courier SF (^)SH /Times-Roman SF ('' is the)45 W 7200 39937 MT (single-character checksum, computed as follows \050all) 23 W( numbers and computations in octal, and ``)24 W /Courier SF (sp)SH /Times-Roman SF ('' represents)24 W 7200 41042 MT (a space\051:)SH /Courier SF 9720 43641 MT (\051 sp) 1890 W( S) 1260 W( H \050) 2520 W( sp) 1890 W( @) 1260 W( -) 2520 W( #)1890 W 9720 44887 MT (51 + 40 + 123 + 110 + 50 + 40 + 100 + 55 + 43 = 674)SH 9720 46788 MT (674 + \050674/300\051 = 676)SH 9720 48689 MT (676 AND 77 = 76;)SH 9720 50590 MT (char\05076\051 = 76+40 = 136 = "^")SH /Times-Roman SF 7200 53254 MT (The receiver ACKs with its own parameters, which are the) 69 W( same. Then comes the file header, the file, EOF,)68 W 7200 54359 MT (and EOT. One data packet was corrupted by a burst of ``)SH /Courier SF (%)SH /Times-Roman SF ('' characters, NAK'd, and retransmitted.)SH /Symbol SF 7200 58637 MT (\267)SH /Times-Bold SF 7946 XM (Performance)SH /Times-Roman SF 7200 61592 MT (For text) 47 W( files \050documents or program source\051, assuming an average line length of 40 with lines separated by a)48 W 7200 62697 MT (carriage-return/linefeed pair, the only control characters normally found in the text file, we see about) 186 W( 5%)185 W 7200 63802 MT (overhead for prefixing of control characters. Assuming no line terminators for packets \050although) 61 W( one or both)62 W 7200 64907 MT (sides may require them\051, no retransmissions or) 209 W( timeouts, and no time wasted for the line to turn around)208 W 7200 66012 MT (between packet and response, then for average) 270 W( packet length)271 W /Times-Italic SF 35352 XM (p)SH /Times-Roman SF (, using a single-character checksum, the)271 W 7200 67117 MT (KERMIT protocol overhead consists of:)SH 9826 69937 MT (5 control field characters in the data packet)SH 9826 71087 MT (5 characters in the acknowledgement packet)SH ES %%Page: 19 19 BS 0 SI 10 /Times-Roman AF 30100 4286 MT (19)SH 10.5 SS 9300 7920 MT (+ 0.05)SH /Courier-Oblique SF (p)SH /Times-Roman SF 12886 XM (for control character quoting)SH 7200 10740 MT (This gives 10/)174 W /Times-Italic SF (p)SH /Times-Roman SF 14461 XM (+ 0.05 overhead. E.g.) 174 W( if) SH( the packet length is 40, there is 30%) 174 W( overhead. If)173 W /Times-Italic SF 48784 XM (p)SH /Times-Roman SF 49745 XM (is 96 \050the)173 W 7200 11845 MT (maximum\051, there is about 15%. These figures will vary with the average line) 2 W( length and the frequency of other)3 W 7200 12950 MT (control characters \050like tabs and formfeeds\051 in the file, and will go) 3 W( up with immediate retransmissions, and)2 W /Times-Italic SF 52309 XM (way)SH /Times-Roman SF 7200 14055 MT (up with delayed retransmissions. For binary) 166 W( files, the quoting overhead will be higher. But transmission)167 W 7200 15160 MT (overhead can also go down dramatically if prefix) 84 W( encoding is used for repeated characters, depending on the)83 W 7200 16265 MT (nature of the data \050binary data containing many zeroes,) 45 W( highly indented or columnar data or program text will)46 W 7200 17370 MT (tend to benefit\051. Each file transfer also gets a) 52 W( fixed overhead for the preliminary \050Send Init, File Header\051 and)51 W 7200 18475 MT (terminating \050EOF, EOT\051 packets.)SH 7200 20685 MT (If the mainframe end of a connection is heavily loaded, it may take) 106 W( considerable time to digest and process)107 W 7200 21790 MT (incoming characters) 57 W( before replying. On half duplex mainframes, there may be a pause between sending and)56 W 7200 22895 MT (receiving, even if the load is light; this might be used to advantage by preparing the next packet) 99 W( in advance)100 W 7200 24000 MT (while waiting for the current ACK. Another problem) 58 W( may occur on heavily loaded mainframes\320undesirable)57 W 7200 25105 MT (timeouts. Timeouts) 503 W( are intended) 120 W( to detect lost packets. A heavily loaded system may take longer than the)121 W 7200 26210 MT (timeout interval to send a) 122 W( packet. For this reason, mainframe KERMITs should take the requested timeout)121 W 7200 27315 MT (interval only as a minimum, and should adjust it for each packet based on the current system) 123 W( load, up to a)124 W 7200 28420 MT (reasonable maximum.)SH 7200 30630 MT (On a noisy line, there) 115 W( is a greater likelihood of corrupted packets and therefore of retransmission overhead.)114 W 7200 31735 MT (Performance on noisy lines can be improved by reducing the packet) 76 W( length, and thus the probability that any)77 W 7200 32840 MT (particular packet will be corrupted, and the amount of time) 185 W( required to retransmit a corrupted packet. A)184 W 7200 33945 MT (KERMIT program) 10 W( can unilaterally adjust the packet length according to the number of retransmissions that are)11 W 7200 35050 MT (occurring. Short) 263 W( packets cut down on retransmission overhead, long packets cut down on character overhead.)SH /Symbol SF 7200 39328 MT (\267)SH /Times-Bold SF 7946 XM (``User Interface'')SH /Times-Roman SF 7200 42283 MT (KERMIT was designed from a mainframe perspective. Like many mainframe programs, KERMIT) 114 W( issues a)113 W 7200 43388 MT (prompt, the user types a command, KERMIT executes the command and issues another prompt, and) 134 W( so on)135 W 7200 44493 MT (until the user exits from the program. Much care is devoted to the command parser, even on) 69 W( microcomputer)68 W 7200 45598 MT (versions. The) 525 W( goal is to provide English-like commands) 131 W( composed of sequences of keywords or operands,)132 W 7200 46703 MT (with abbreviations possible for any keyword) 70 W( in any field down to the minimum unique length, and with ``?'')69 W 7200 47808 MT (help available at any point in a command. Not all implementations need follow this model, but most do.)SH 7200 50018 MT (The basic commands are SEND and RECEIVE. These allow most KERMITs to exchange) 6 W( files. Operands can)7 W 7200 51123 MT (be the name of a single file, or a file group designator \050e.g.) 79 W( with) SH( ``wildcards''\051 to transmit multiple) 79 W( files in a)78 W 7200 52228 MT (single operation. Although some systems may not provide wildcard) 134 W( file processing, the KERMIT protocol)135 W 7200 53333 MT (allows it.)SH 7200 55543 MT (The CONNECT command) 99 W( provides the mechanism for logging in and typing commands at the remote host,)98 W 7200 56648 MT (which is) 7 W( necessary in order to start the KERMIT on that side. The CONNECT facility provides character-at-a-)8 W 7200 57753 MT (time transmission, parity selection, remote or local eching, and the ability to) 45 W( send any character, including the)44 W 7200 58858 MT (``escape character'' that must be used to get back) 45 W( to the local KERMIT. However, there is no error detection)46 W 7200 59963 MT (or correction during CONNECT, just as there normally is none between an ordinary terminal and a host.)SH 7200 62173 MT (When two systems are dissimilar, a SET command is provided to allow them to accommodate) 116 W( each other's)115 W 7200 63278 MT (peculiarities, for instance SET PARITY ODD to add) 360 W( odd parity to all outbound characters, or SET)361 W 7200 64383 MT (LOCAL-ECHO to do local echoing when connected as a terminal to a half duplex system. The SET) 9 W( command)8 W 7200 65488 MT (must sometimes be used to supply information) 149 W( to the target system on how to store an incoming file with)150 W 7200 66593 MT (respect to block size, byte size, record format, record length.)SH 7200 68803 MT (Most KERMIT) 81 W( implementations take special care to reassure the user during file transfer. The names of the)80 W 7200 69908 MT (files being transferred are) 150 W( shown, and a dynamic display is made of the packet traffic, showing successful)151 W 7200 71013 MT (transmission of packets as well as timeouts and retransmissions. Messages are issued) 51 W( when the user connects)50 W ES %%Page: 20 20 BS 0 SI 10 /Times-Roman AF 30100 4286 MT (20)SH 10.5 SS 7200 7920 MT (to the remote system or escapes back from it, and KERMIT prompts identify the implementation.) 132 W( Helpful)528 W 7200 9025 MT (error messages are displayed when necessary; these may emanate from either) 73 W( the local or the remote system.)72 W 7200 10130 MT (The final disposition of the transfer is clearly stated, complete or failed.)SH 7200 12340 MT (The actions required of the KERMIT user depend upon the degree to which the KERMIT programs) 63 W( involved)64 W 7200 13445 MT (have implemented the specification. Minimal implementations require that the) 162 W( user connect to the remote)161 W 7200 14550 MT (host, start KERMIT there, issue a) 2 W( SEND \050or RECEIVE\051 command, escape back to the local machine, and issue)3 W 7200 15655 MT (the complementary RECEIVE \050or SEND\051 command. All this must) 34 W( be done for each transfer. More advanced)33 W 7200 16760 MT (implementations allow the remote side to run as a) 23 W( ``server'' and to take all its instructions in special command)24 W 7200 17865 MT (packets from the local KERMIT; all that) 118 W( is required of the user on the remote end is to connect initially in)117 W 7200 18970 MT (order to start the) 166 W( server. The server will even log itself out upon command from the local KERMIT. A)167 W 7200 20075 MT (minimal server can process commands to send files, receive files, and shut itself down.)SH 7200 22285 MT (Here is an) 121 W( example of a session in which the user of an IBM PC gets files from a DECSYSTEM-20. The)120 W 7200 23390 MT (actions shown are required for minimal KERMIT implementations.) 92 W( The) 448 W( parts the user types are underlined,)93 W 7200 24495 MT (comments begin with ``)SH /Courier SF (!)SH /Times-Roman SF ('' or appear in italics. Everything else is system typeout.)SH /Courier SF 9720 27094 MT (A>kermit)SH 23640 XM (! Run Kermit on the PC.)SH 3780 50 10980 27294 UL 9720 28340 MT (Kermit V1.20)SH 9720 30241 MT (Kermit-86>)SH 23640 XM (! This is the Kermit prompt for the PC.)SH 9720 31487 MT (Kermit-86>connect)SH 23640 XM (! Connect to the DEC-20.)SH 4410 50 16020 31687 UL 9720 32733 MT ([Connecting to host. Type CTRL-]C to return to PC.])SH 23640 34634 MT (! You are now connected to the DEC-20.)SH 9720 35880 MT (Columbia University CU20B)SH 37560 XM (! The system prints its herald.)SH 9720 37126 MT (@terminal vt52)SH 23640 XM (! Set your terminal type \050optional\051.)SH 8190 50 10350 37326 UL 9720 38372 MT (@login my-id password)SH 23640 XM (! Login using normal login method.)SH 12600 50 10350 38572 UL /Courier-Oblique SF 9720 40273 MT (\050The DEC-20 prints various messages.\051)SH /Courier SF 9720 42174 MT (@kermit)SH 23640 XM (! Run Kermit on the DEC-20.)SH 3780 50 10350 42374 UL 9720 43420 MT (Kermit-20>)SH 23640 XM (! This is Kermit-20's prompt.)SH 9720 44666 MT (Kermit-20>send *.for)SH 23640 XM (! Send all FORTRAN files.)SH 6300 50 16020 44866 UL 9720 45912 MT (^]c)SH 23640 XM (! Type the escape sequence to return to the PC.)SH 1890 50 9720 46112 UL 9720 47158 MT ([Back at PC.])SH 9720 48404 MT (Kermit-86>receive)SH 23640 XM (! Tell the PC files are coming.)SH 4410 50 16020 48604 UL /Courier-Oblique SF 9720 50305 MT (\050The progress of the transfer is shown continuously on the screen.\051)SH /Courier SF 9720 52206 MT (Transfer Complete.)SH 9720 53452 MT (Kermit-86>connect)SH 23640 XM (! Get back to the DEC-20.)SH 4410 50 16020 53652 UL 9720 54698 MT ([Connecting to host. Type CTRL-]C to return to PC.])SH 9720 55944 MT (Kermit-20>exit)SH 23640 XM (! Get out of Kermit-20.)SH 2520 50 16020 56144 UL 9720 57190 MT (@logout)SH 23640 XM (! Logout from the DEC-20.)SH 3780 50 10350 57390 UL 9720 59091 MT (Logged out Job 55, User MY-ID, Account MY-ACCOUNT, TTY 146,)SH 10980 60337 MT (at 24-Apr-83 15:18:56, Used 0:00:17 in 0:21:55)SH 9720 62238 MT (^]c)SH 23640 XM (! Now "escape" back to the PC,)SH 1890 50 9720 62438 UL 9720 63484 MT ([Back at PC.])SH 9720 64730 MT (Kermit-86>exit)SH 23640 XM (! and exit from the PC's Kermit.)SH 2520 50 16020 64930 UL /Times-Roman SF 7200 67394 MT (The session is somewhat simpler when the) 155 W( remote KERMIT is being run as a server. The user must still)154 W 7200 68499 MT (CONNECT, log in, and start KERMIT on the remote end, but need never again CONNECT to issue)298 W 7200 69604 MT (subsequent SEND, RECEIVE, EXIT, or LOGOUT commands, even though many) 6 W( transactions may take place.)5 W 7200 70709 MT (All actions can be initiated from the PC.)SH ES %%Page: 21 21 BS 0 SI 10 /Times-Roman AF 30100 4286 MT (21)SH 10.5 /Symbol AF 7200 8040 MT (\267)SH /Times-Bold SF 7946 XM (Advanced Features)SH /Times-Roman SF 7200 10995 MT (An optional feature of the KERMIT protocol is a special packet designed to express the attributes of) 24 W( a file in a)25 W 7200 12100 MT (compact and generic manner. The receiver may either attempt to) 118 W( use the attributes to the incoming file, or)117 W 7200 13205 MT (archive them for later use.) 471 W( Attributes) 1206 W( include not only file characteristics but also the intended)472 W 7200 14310 MT (disposition\320store, print, submit for batch processing, send as mail, etc. Other optional features) 224 W( include)223 W 7200 15415 MT (mechanisms for gracefully interrupting, delaying, or suspending operations in progress; alternate forms of)191 W 7200 16520 MT (packet data encoding; filename conversion, local file management, raw) 323 W( data transmission and capture;)322 W 7200 17625 MT (command macro definition, etc.)SH 7200 19835 MT (Although KERMIT was never intended) 86 W( to fulfill the role of a general purpose network server, its design has)87 W 7200 20940 MT (made it simple to add new functions. A KERMIT server has the ability to accept) 20 W( commands in packets from a)19 W 7200 22045 MT (remote KERMIT. The basic commands are for sending or) 136 W( fetching files and for shutting down the server.)137 W 7200 23150 MT (Other commands may require display of text at the user's terminal, which is controlled by the) 37 W( local KERMIT.)36 W 7200 24255 MT (For example,) 8 W( a directory listing could be requested; the resulting text is sent back to the local KERMIT exactly)9 W 7200 25360 MT (as if a file were being transferred, except the destination is the) 118 W( user's screen, rather than a disk file. \050Or it)117 W 7200 26465 MT (could be disk file too.\051) 176 W( With) 617 W( this ability in place, it is possible to implement all sorts of commands, for)177 W 7200 27570 MT (instance to delete a file, show who's logged in, inquire about disk space, verify) 79 W( access to a directory, submit)78 W 7200 28675 MT (batch jobs, send messages, and so forth.)SH 7200 30885 MT (The ability of the KERMIT server to perform host functions can be added very simply under) 30 W( certain operating)31 W 7200 31990 MT (systems. For) 745 W( instance, under UNIX) 240 W( [17],) SH( KERMIT can ``fork'' a)240 W /Times-Italic SF 37370 XM (shell)SH /Times-Roman SF 39856 XM (with commands to perform any)240 W 7200 33095 MT (function possible) 292 W( under UNIX, redirecting the standard output through a process \050KERMIT itself\051 that)293 W 7200 34200 MT (encapsulates it into KERMIT packets and sends it along.)SH 7200 36410 MT (A server with these capabilities could provide convenient access to a timesharing system) 60 W( by users at personal)59 W 7200 37515 MT (workstations, without requiring the users to be directly) 84 W( involved with the host. If, for instance, workstations)85 W 7200 38620 MT (had dedicated connections to a host, and the host had dedicated KERMIT servers for each) 137 W( such line, users)136 W 7200 39725 MT (could get access to and manage) 18 W( their host files completely by commands typed at the workstation. Taking this)19 W 7200 40830 MT (idea one step) 321 W( further, the workstation system software could be modified to make the whole process)320 W 7200 41935 MT (transparent by incorporating) 42 W( a KERMIT-like protocol in its file access logic\320fetching and updating host files)43 W 7200 43040 MT (as necessary behind the user's) 70 W( back. Since the demands placed on a host by KERMIT are relatively modest,)69 W 7200 44145 MT (many more simultaneous users could probably be serviced in this way. This approach could be a relatively)104 W 7200 45250 MT (painless entree into the distributed, networked environment of tomorrow.) 60 W( When) 381 W( local area network protocols)59 W 7200 46355 MT (become mature and the hardware economical and widespread, KERMIT can be replaced by ``the real) 54 W( thing''.)55 W 7200 47460 MT (But for the ordinary computer user for) 335 W( whom dedicated connections are impractical, ``do-it-yourself'')334 W 7200 48565 MT (KERMIT, or some facility like it, will be a valuable tool for years to come.)SH /Symbol SF 7200 52843 MT (\267)SH /Times-Bold SF 7946 XM (Conclusion)SH /Times-Roman SF 7200 55798 MT (The need for a cheap, convenient file transfer capability among) 165 W( diverse systems is pressing, and there are)166 W 7200 56903 MT (certainly many efforts similar to ours under way) 69 W( at many places. We hope that this article may contribute to)68 W 7200 58008 MT (those efforts;) 36 W( we don't claim to have the last word on any of the issues raised here, and expect that this article)37 W 7200 59113 MT (may flush some other approaches out of the woodwork. We have billed KERMIT) 111 W( as a ``simple'' protocol;)110 W 7200 60218 MT (anyone who has read this far will begin to appreciate what must go into) 59 W( the more complicated protocols used)60 W 7200 61323 MT (in real) 73 W( networks, or when ``integration'' of micro and mainframe is a major goal\320demand paging of remote)72 W 7200 62428 MT (files, remote database queries, distributed editing and computation.)SH 7200 64638 MT (Meanwhile, the KERMIT protocol has been proven successful, and continues to grow in popularity.) 11 W( As) 287 W( of this)12 W 7200 65743 MT (writing, implementations exist for more than 50 computer systems. Some of the major ones include:)SH 9300 67423 MT (Machine)SH 24200 XM (Operating System)SH 39100 XM (Language)SH 3673 50 9300 67623 UL 7554 50 24200 67623 UL 4140 50 39100 67623 UL 9300 68573 MT (DECsystem-10)SH 24200 XM (TOPS-10)SH 39100 XM (MACRO-10)SH 9300 69723 MT (DECSYSTEM-20)SH 24200 XM (TOPS-20)SH 39100 XM (MACRO-20)SH 9300 70873 MT (IBM 370 Series)SH 24200 XM (VM/CMS)SH 39100 XM (IBM Assembler)SH ES %%Page: 22 22 BS 0 SI 10 /Times-Roman AF 30100 4286 MT (22)SH 10.5 SS 9300 7920 MT (VAX-11)SH 24200 XM (VMS)SH 39100 XM (Bliss-32)SH 9300 9070 MT (VAX, SUN, PDP-11, etc)SH 24200 XM (UNIX)SH 39100 XM (C)SH 9300 10220 MT (PDP-11)SH 24200 XM (RT-11, RSX, RSTS)SH 39100 XM (MACRO-11)SH 9300 11370 MT (8080, 8085, or Z80)SH 24200 XM (CP/M)SH 39100 XM (8080 ASM)SH 9300 12520 MT (8086, 8088)SH 24200 XM (PC DOS, MS DOS)SH 39100 XM (IBM PC Assembler)SH 9300 13670 MT (Apple II 6502)SH 24200 XM (Apple DOS)SH 39100 XM (DEC-10/20 CROSS)SH 7200 15350 MT (Some of these have been contributed or enhanced by the institutions) 89 W( listed in the acknowledgements, below.)88 W 7200 16455 MT (No single implementation necessarily includes all the features mentioned in this article, but all are able to)156 W 7200 17560 MT (communicate at least at base level. Additional implementations are in preparation,) 38 W( and present ones are being)37 W 7200 18665 MT (enhanced.)SH 7200 20875 MT (Columbia University is) 54 W( willing to provide all KERMIT programs, sources, manuals, and other documentation)55 W 7200 21980 MT (to computing centers, academic or corporate, in return for a modest fee to cover) 147 W( costs for media, printing,)146 W 7200 23085 MT (postage, labor, and computing resources. Only magnetic tape and listings can be shipped. We cannot produce)20 W 7200 24190 MT (floppy disks; instructions are included for bootstrapping the microcomputer implementations from) 354 W( the)353 W 7200 25295 MT (mainframe computers. Details will be provided on request; write to:)SH 9300 28115 MT (KERMIT Distribution)SH 9300 29265 MT (Columbia University Center for Computing Activities)SH 9300 30415 MT (7th Floor, Watson Laboratory)SH 9300 31565 MT (612 West 115th Street)SH 9300 32715 MT (New York, NY 10025)SH 7200 35535 MT (The protocol specification) 258 W( supplemented by examples of existing KERMIT implementations allows new)259 W 7200 36640 MT (implementations to be created with relative ease.) 60 W( In) 382 W( the past, KERMIT implementors have shared their work)59 W 7200 37745 MT (with other KERMIT) 11 W( users by contributing it to the Columbia KERMIT library. We hope that this practice will)12 W 7200 38850 MT (continue until KERMIT has spread throughout the known world.)SH /Symbol SF 7200 43128 MT (\267)SH /Times-Bold SF 7946 XM (Acknowledgements)SH /Times-Roman SF 7200 46083 MT (In designing the initial KERMIT protocol, we studied several models, primarily the ANSI) 129 W( recommendation)128 W 7463 47188 MT ([9]. Others) 353 W( include the Stanford University DIALNET project, the University) 45 W( of Utah ``Small FTP'' project,)46 W 7200 48293 MT (and the Stanford University Medical Center TTYFTP project. And we examined some real networks, like)143 W 7200 49398 MT (ARPANET and DECnet.)SH 7200 51608 MT (Acknowledgements also to the many sites that) 84 W( have contributed new KERMIT implementations or enhanced)85 W 7200 52713 MT (old ones: Stevens Institute of Technology, Digital Equipment) 109 W( Corporation, the National Institutes of Health,)108 W 7200 53818 MT (Cornell University, the University of Toronto, the) 42 W( University of Tennessee, the University of Toledo, Cerritos)43 W 7200 54923 MT (College, and many others. Thanks to Dr. Howard Eskin for help with this article.)SH ES %%Page: 23 23 BS 0 SI 10 /Times-Roman AF 30100 4286 MT (23)SH 10.5 /Symbol AF 7200 8040 MT (\267)SH /Times-Bold SF 7946 XM (The ASCII Alphabet)SH /Courier SF 7200 10930 MT (Dec Oct Character Dec Oct)SH 1890 50 7200 11130 UL 1890 50 9720 11130 UL 5670 50 12240 11130 UL 1890 50 19170 11130 UL 1890 50 21690 11130 UL 7200 12768 MT (000 000 NUL \050^@\051) SH( 064) 1260 W( 100 @)SH 7200 13840 MT (001 001 SOH \050^A\051) SH( 065) 1260 W( 101 A)SH 7200 14912 MT (002 002 STX \050^B\051) SH( 066) 1260 W( 102 B)SH 7200 15984 MT (003 003 ETX \050^C\051) SH( 067) 1260 W( 103 C)SH 7200 17056 MT (004 004 EOT \050^D\051) SH( 068) 1260 W( 104 D)SH 7200 18128 MT (005 005 ENQ \050^E\051) SH( 069) 1260 W( 105 E)SH 7200 19200 MT (006 006 ACK \050^F\051) SH( 070) 1260 W( 106 F)SH 7200 20272 MT (007 007 BEL \050^G\051) SH( 071) 1260 W( 107 G)SH 7200 21344 MT (008 010 BS \050^H\051) SH( 072) 1260 W( 110 H)SH 7200 22416 MT (009 011 HT \050^I\051) SH( 073) 1260 W( 111 I)SH 7200 23488 MT (010 012 LF \050^J\051) SH( 074) 1260 W( 112 J)SH 7200 24560 MT (011 013 VT \050^K\051) SH( 075) 1260 W( 113 K)SH 7200 25632 MT (012 014 FF \050^L\051) SH( 076) 1260 W( 114 L)SH 7200 26704 MT (013 015 CR \050^M\051) SH( 077) 1260 W( 115 M)SH 7200 27776 MT (014 016 SO \050^N\051) SH( 078) 1260 W( 116 N)SH 7200 28848 MT (015 017 SI \050^O\051) SH( 079) 1260 W( 117 O)SH 7200 29920 MT (016 020 DLE \050^P\051) SH( 080) 1260 W( 120 P)SH 7200 30992 MT (017 021 DC1 \050^Q\051) SH( 081) 1260 W( 121 Q)SH 7200 32064 MT (018 022 DC2 \050^R\051) SH( 082) 1260 W( 122 R)SH 7200 33136 MT (019 023 DC3 \050^S\051) SH( 083) 1260 W( 123 S)SH 7200 34208 MT (020 024 DC4 \050^T\051) SH( 084) 1260 W( 124 T)SH 7200 35280 MT (021 025 NAK \050^U\051) SH( 085) 1260 W( 125 U)SH 7200 36352 MT (022 026 SYN \050^V\051) SH( 086) 1260 W( 126 V)SH 7200 37424 MT (023 027 ETB \050^W\051) SH( 087) 1260 W( 127 W)SH 7200 38496 MT (024 030 CAN \050^X\051) SH( 088) 1260 W( 130 X)SH 7200 39568 MT (025 031 EM \050^Y\051) SH( 089) 1260 W( 131 Y)SH 7200 40640 MT (026 032 SUB \050^Z\051) SH( 090) 1260 W( 132 Z)SH 7200 41712 MT (027 033 ESC \050^[\051) SH( 091) 1260 W( 133 [)SH 7200 42784 MT (028 034 FS \050^\134\051) SH( 092) 1260 W( 134 \134)SH 7200 43856 MT (029 035 GS \050^]\051) SH( 093) 1260 W( 135 ])SH 7200 44928 MT (030 036 RS \050^^\051) SH( 094) 1260 W( 136 ^)SH 7200 46000 MT (031 037 US \050^_\051) SH( 095) 1260 W( 137 _)SH 7200 47072 MT (032 040) SH( \050SP\051) 2520 W( 096) 1260 W( 140 `)SH 7200 48144 MT (033 041 !) SH( 097) 5670 W( 141 a)SH 7200 49216 MT (034 042 ") SH( 098) 5670 W( 142 b)SH 7200 50288 MT (035 043 #) SH( 099) 5670 W( 143 c)SH 7200 51360 MT (036 044 $) SH( 100) 5670 W( 144 d)SH 7200 52432 MT (037 045 %) SH( 101) 5670 W( 145 e)SH 7200 53504 MT (038 046 &) SH( 102) 5670 W( 146 f)SH 7200 54576 MT (039 047 ') SH( 103) 5670 W( 147 g)SH 7200 55648 MT (040 050 \050) SH( 104) 5670 W( 150 h)SH 7200 56720 MT (041 051 \051) SH( 105) 5670 W( 151 i)SH 7200 57792 MT (042 052 *) SH( 106) 5670 W( 152 j)SH 7200 58864 MT (043 053 +) SH( 107) 5670 W( 153 k)SH 7200 59936 MT (044 054 ,) SH( 108) 5670 W( 154 l)SH 7200 61008 MT (045 055 -) SH( 109) 5670 W( 155 m)SH 7200 62080 MT (046 056 .) SH( 110) 5670 W( 156 n)SH 7200 63152 MT (047 057 /) SH( 111) 5670 W( 157 o)SH 7200 64224 MT (048 060 0) SH( 112) 5670 W( 160 p)SH 7200 65296 MT (049 061 1) SH( 113) 5670 W( 161 q)SH 7200 66368 MT (050 062 2) SH( 114) 5670 W( 162 r)SH 7200 67440 MT (051 063 3) SH( 115) 5670 W( 163 s)SH 7200 68512 MT (052 064 4) SH( 116) 5670 W( 164 t)SH 7200 69584 MT (053 065 5) SH( 117) 5670 W( 165 u)SH 7200 70656 MT (054 066 6) SH( 118) 5670 W( 166 v)SH 7200 71728 MT (055 067 7) SH( 119) 5670 W( 167 w)SH ES %%Page: 24 24 BS 0 SI 10 /Times-Roman AF 30100 4286 MT (24)SH 10.5 /Courier AF 7200 7855 MT (056 070 8) SH( 120) 5670 W( 170 x)SH 7200 8927 MT (057 071 9) SH( 121) 5670 W( 171 y)SH 7200 9999 MT (058 072 :) SH( 122) 5670 W( 172 z)SH 7200 11071 MT (059 073 ;) SH( 123) 5670 W( 173 {)SH 7200 12143 MT (060 074 <) SH( 124) 5670 W( 174 |)SH 7200 13215 MT (061 075 =) SH( 125) 5670 W( 175 })SH 7200 14287 MT (062 076 >) SH( 126) 5670 W( 176 ~)SH 7200 15359 MT (063 077 ?) SH( 127) 5670 W( 177 DEL)SH ES %%Page: 25 25 BS 0 SI 10 /Times-Roman AF 30100 4286 MT (25)SH 10.5 /Symbol AF 7200 8040 MT (\267)SH /Times-Bold SF 7946 XM (References)SH /Times-Roman SF 7200 10995 MT (The following publications provided useful guidance or diversion in the development of KERMIT.)SH 7200 12865 MT ([1])SH /Times-Italic SF 10350 XM (EIA Standard RS-232-C)SH /Times-Roman SF 10350 14015 MT (Electronic Industries Association, 2001 Eye Street N.W., Washington DC 20006, 1969, 1981.)SH 7200 15885 MT ([2])SH /Times-Italic SF 10350 XM (ANSI X3.4-1977, Code for Information Interchange)SH /Times-Roman SF 10350 17035 MT (American National Standards Institute, 1430 Broadway, NYC 10018, 1977.)SH 7200 18905 MT ([3])SH /Times-Italic SF 10350 XM (ANSI X3.15-1976,)SH 10350 20055 MT (Bit Sequencing of ASCII in Serial-By-Bit Data Transmission)SH /Times-Roman SF 10350 21205 MT (1976.)SH 7200 23075 MT ([4])SH /Times-Italic SF 10350 XM (ANSI 3.16-1976, Character Structure and Character Parity Sense for Serial-By-Bit Data Communica-)SH 10350 24225 MT (tion in ASCII)SH /Times-Roman SF 10350 25375 MT (1976.)SH 7200 27245 MT ([5])SH 10350 XM (McNamara, J.E.)SH /Times-Italic SF 10350 28395 MT (Technical Aspects of Data Communication.)SH /Times-Roman SF 10350 29545 MT (Digital Press, 1982.)SH 7200 31415 MT ([6])SH 10350 XM (Mackenzie, C.E.)SH /Times-Italic SF 10350 32565 MT (Coded-Character Sets: History and Development.)SH /Times-Roman SF 10350 33715 MT (Addison-Wesley, 1980.)SH 7200 35585 MT ([7])SH /Times-Italic SF 10350 XM (DNA Data Access Protocol \050DAP\051 Functional Specification)SH /Times-Roman SF 10350 36735 MT (Digital Equipment Corporation, 1980.)SH 10350 37885 MT (AA-K177A-TK.)SH 7200 39755 MT ([8])SH 10350 XM (Neigus, N.J.)SH /Times-Italic SF 10350 40905 MT (File Transfer Protocol for the ARPA Network)SH /Times-Roman SF 10350 42055 MT (Bolt Beranek and Newman, Inc., 1973.)SH 10350 43205 MT (RFC 542, NIC 17759. Available in the ARPANET Protocol Handbook, NTIS AD/A-052 594.)SH 7200 45075 MT ([9])SH /Times-Italic SF 10350 XM (ANSI X3.28-1976, Procedures for the Use of Control Characters of ASCII in Specified Data Com-)SH 10350 46225 MT (munications Links)SH /Times-Roman SF 10350 47375 MT (1976.)SH 7200 49245 MT ([10])SH 10350 XM (Pierce, J.R., and Posner, E.C.)SH /Times-Italic SF 10350 50395 MT (Applications of Communications Theory)SH /Times-Roman SF (:)SH /Times-Italic SF 28173 XM (Introduction to Communication Science and Systems.)SH /Times-Roman SF 10350 51545 MT (Plenum Press, 1980.)SH 7200 53415 MT ([11])SH 10350 XM (Knuth, D.E.)SH /Times-Italic SF 10350 54565 MT (The Art of Computer Programming)SH /Times-Roman SF (. Volume) 263 W( I:)SH /Times-Italic SF 30829 XM (Fundamental Algorithms.)SH /Times-Roman SF 10350 55715 MT (Addison-Wesley, 1973.)SH 7200 57585 MT ([12])SH 10350 XM (Hamming, R.W.)SH 10350 58735 MT (Error Detecting and Error Correcting Codes.)SH /Times-Italic SF 10350 59885 MT (Bell System Technical Journal)SH /Times-Roman SF 23416 XM (29:147-160, April, 1950.)SH 7200 61755 MT ([13])SH 10350 XM (Martin, James.)SH /Times-Italic SF 10350 62905 MT (Teleprocessing Network Organization.)SH /Times-Roman SF 10350 64055 MT (Prentice-Hall, 1970.)SH 7200 65925 MT ([14])SH 10350 XM (Perez, Aram.)SH 10350 67075 MT (Byte-wise CRC Calculations.)SH /Times-Italic SF 10350 68225 MT (IEEE MICRO)SH /Times-Roman SF 16477 XM (3\0503\051:40-50, June, 1983.)SH ES %%Page: 26 26 BS 0 SI 10 /Times-Roman AF 30100 4286 MT (26)SH 10.5 SS 7200 7920 MT ([15])SH /Times-Italic SF 10350 XM (ISO Reference Model for Open Systems Interconnection \050OSI\051)SH /Times-Roman SF 10350 9070 MT (International Organization for Standardization \050ISO\051, 1982.)SH 10350 10220 MT (Draft Proposal 7498.)SH 7200 12090 MT ([16])SH /Times-Italic SF 10350 XM (DNA Digital Data Communications Message Protocol \050DDCMP\051 Functional Specification)SH /Times-Roman SF 10350 13240 MT (Digital Equipment Corporation, 1980.)SH 10350 14390 MT (AA-K175A-TK.)SH 7200 16260 MT ([17])SH 10350 XM (Thomas, R. and Yates, J.)SH /Times-Italic SF 10350 17410 MT (A User Guide to the UNIX System.)SH /Times-Roman SF 10350 18560 MT (OSBORNE/McGraw-Hill, 1982.)SH ES %%Trailer %%Pages: 26 %%DocumentFonts: Times-Roman Times-Bold Times-Italic Symbol Courier Courier-Oblique