-
Notifications
You must be signed in to change notification settings - Fork 0
/
k11f85.txt
425 lines (346 loc) · 19.8 KB
/
k11f85.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
Kermit - A Protocol for Painless Micro and Mini File Transfer
Brian Nelson
Computer Services
University of Toledo
2801 West Bancroft
Toledo, Ohio 43606
Abstract
This article will describe the Kermit file transfer protocol.
This protocol allows many (if not most) types of computer systems
to effect, at minimum, error free file transfer with other systems
and microcomputers over asynchronous lines.
Introduction
With the widespread use of personal computers the need for file
exchange between systems has become of foremost concern among
users and managers alike. There are many commercial products
available which meet this need, some of which may offer more
advanced functions such as transparent record oriented file
access. Networks that do this, such as DECnet, can be expensive,
and if your computer or microcomputer is not on the network your
needs won't be met. Transfer of files with removable disks can
work, but generally only when the computers are of the same type,
it's not very useful when the systems are removed in location.
Rarely will a larger mini or supermini be able to read a
microcomputer's disk.
A more realistic approach, from both cost and convenience, is to
find a way to use ordinary telecommunications and/or in-house PBX
systems to connect computers and microcomputers together. If a
local connection using a PBX or front end switch is not available,
there is always dialup access with standard 103/212 modems. Data
can be transferred with very simple methods, such as TYPING a file
on one system and capturing it on the other system, but this gives
no protection from noise and overrun of data. It is not very user
friendly either. What is really needed is a protocol to
accomplish file transfer reliably and efficiently.
The first obvious use of any program or protocol designed to
accomplish file transfer is to be able to provide the ability to
support file uploads and downloads from minis and superminis such
as the VAX and PDP-11 to remote personal computers, such as the PC
and Rainbow. It should also be widely available for many
different micros and mainframes. File transfer from micro to
micro, as well as from a larger central host, should be possible.
The command interface should be easy to learn, and require no
intervention from a central site operator or other user. The many
Page 2
implementations of Kermit follow these lines, and all versions
allow some form of transfer in either direction. More advanced
versions, such as those found on the PDP-11, DEC10/20 and VAX,
offer what is known as server operation, which allow the remote
(connected) Kermit system to completely control the file exchanges
from their system. Since as of this writing (October 9, 1985)
there are available over 160 versions of Kermit available for
numerous micro, mini and mainframe configurations, Kermit
addresses this need quite well.
While the primary use of Kermit will likely be to support file
transfer from microcomputer to mini/supermini and mainframe
connections, there are many uses for Kermit for connections from
mini to mini and so on. The author routinely use Kermit for
transfering software developed for the PRO/350 on a RSTS/E 11/23+
and a VAX 11/785, as well as using the PDP and VAX for dialing out
to other systems around the country (not to mention VAX to PDP
directly though a front end port selector).
The Kermit protocol
The Kermit protocol is designed to operate over normal
asynchronous terminal lines. All data and commands are
transferred with a packet oriented protocol, basically consisting
of a start of packet character (normally SOH), followed by length,
control, data and checksum fields. Communication is half duplex,
in that for every packet sent, the sender must wait for either an
acknowledgement packet (ACK) or a negative acknowledgement packet
(NAK). Transmission is in ascii, with no requirements for the
transmission of eight bit characters or control characters other
than control-A for marking the start of a packet. All 'control'
characters imbedded in the data are prefixed to convert them to
printable characters, the same applying to eight bit characters if
required by the characteristics of the line. Since there are many
different implementations of Kermit, the protocol provides a
mechanism by which the capabilities of two connected Kermits can
be negotiated to allow for differences in the level of protocol
support. Examples of protocol features that not all Kermits
understand include data compression and transfer of file
attributes.
The packet format is
+------+-----------+-----------+------+------------+-------+
| MARK | char(LEN) | char(SEQ) | TYPE | DATA | CHECK |
+------+-----------+-----------+------+------------+-------+
where all fields consist of ASCII characters, and the char
function converts a number in the range 0-94 (10) to a printable
ASCII character by adding 32 (10). The MARK, LEN, SEQ and TYPE
fields are one byte, the DATA field is variable in size, and the
CHECK field is one to three bytes in size.
The MARK (normally control A) signifies the start of a packet.
Page 3
The length field tells how long the rest of the packet is. The
SEQ field is used to insure synchronization used to detect lost or
duplicate packets. The SEQ number wraps around every 64 packets
due to the need to encode it as a printable ascii character in the
range 32 (10) to 126 (10). The TYPE field specifies whether the
packet is a DATA or CONTROL packet. The DATA section is used for
the actual transfer of data or informative messages from a Kermit
server, this field can be up to 90 characters in length. Any
character whose low seven bits fall in the range of 0 to 37 (8),
ie, char and 177 (8) is less than 40 (8), will have the value 100
(8) exclusive or'ed (xor'ed) with itself and be prefixed by a
shift character, '#'. Other shift characters may be use for eight
bit characters if the line characteristics require such. Data
compression may also occur in the data field, this is done with
yet another shift code and byte count sequence. The CHECK field
is a checksum, either a one character, two character or three
character CRC check; the sender computes it and the receiver must
compute it and compare. A checksum mismatch will result in the
receiver sending a NAK packet (negative acknowledgment) which
directs the sender to resend the NAK'ed packet. The packet may be
following by a terminator (likely an ascii 13). This terminator
is NOT part of the protocol and is sent only to tell the receiver
that a 'line' is present. Not all Kermit implementations require
this; all Kermits will discard data outside of a packet in any
event.
Error detection and recovery is by checksum, as noted, and by
packet read timeouts. If the packet should be corrupted the
checksum will be incorrect, the receiver will NAK the packet. If
an expected packet never arrives within the timeout period, or if
the received packet is not the expected one (as determined by the
SEQ field) the packet will also be NAK'ed. There are limits as to
how many times an expected packet will be NAK'ed without aborting
the current operation.
Packet types
D Data
Y Acknowledgement (ACK), text may be in DATA field
N Negative Acknowledgement (NAK)
S Send initiate (Send-Init)
R Receive Initiate
B Break (EOT, end of transmission)
F File name header
Z End of file (EOF, end of current file)
E Error packet, text may be present in DATA field
G Generic SERVER command. The first character in the
data field will be a command to a server, arguments
may follow that character.
I Login, user and password follow in data field
C CWD, change working or default directory.
L Bye, Logout server
F Finish, Exit server, but do not log out
Page 4
E Erase, delete files on server system
D Directory query
U Disk space usage query
T Type a file onto local kermit
R Rename file(s) on server system
K Copy file(s) on server system
W Who's logged in, as in sho sys, sy/s, dev tt
M Send a terminal message to a user
H Help, the server responds with commands it can do
Q Server status query
P Program, run a program
J Journal
V Variable, alter a Kermit setting
C Execute host command. The host command follows in
the data field.
Note that some of the generic server commands, as well as the C
packet, may not be feasible for a given environment. For
instance, the REMOTE LOGIN command, which sends the generic I
command to the server, can only be done under RSTS/E; the generic
U command (disk space) is meaningless under RSX unless one wants
the free space on the entire volume. No Kermit server will abort
on receiving a packet it can't execute, it will simply send an
error packet with an informative message saying it can't process
the requested function.
A typical transaction
An example of a Kermit-11 kermit telling a VMS Kermit-32 server to
expect a file follows. The Kermit-11 command was SEND JUNK.TST
(0)PDP sends: ^A. S~* @-#Y3~( ,
(0)VAX sends: ^A, Yp/ @-#Y3~!
(1)PDP sends: ^A-!FJUNK.TST,-4
(1)VAX sends: ^A%!Y,\I
(2)PDP sends: ^A`"D$ set ter/vt100#M#J$ xcc :== ccl cc
#M#J$ xas :== ccl as#M#J!4S
(2)VAX sends: ^A%"Y.5!
(3)PDP sends: ^A%#Z,X"
(3)VAX sends: ^A%#Y/R9
(4)PDP sends: ^A%$B!_#
(4)VAX sends: ^A%$Y+&1
In packet zero, the Kermit's exchanged information regarding their
capabilities. The PDP-11 sent an 'S' packet with the data for its
maximum packet length, default time out, number of pad characters
to follow a packet (none, hence the space), use a null for
padding, end of line terminator (a CR + 32), the prefix character
for control characters, a 'YES' to say the it can prefix eight bit
characters with the default, that it would like to use CRC block
checks, that it will use a tilde for data compression, and the
'CAPAS' mask, which here says that it can process attribute
packets (discussed later). Since the VAX also sends a '3' for the
Page 5
checksum type, they will both switch to CRC checks on the
following packets. In packet 1, the PDP11 sends the filename the
VAX should use for the file it creates. The VAX then sends the
acknowledgement. In packet three, the PDP sends the first (and
only for this file) packet of data. Note that the sequence #M#J
is a carriage return/line feed sequence with 100 (8) xored into
each character. The '#' character informs the other Kermit that
it must xor the next character with 100 (8). In packet three the
PDP11 sends an EOF packet, the VAX acks it. In packet four, the
PDP sends a break packet which tell the VAX that no more files (of
a possibly wildcard group) are coming and the VAX Kermit acks the
break packet. Both Kermits now switch to the single character
checksum and the VMS kermit enters the server idle state.
More specific information regarding Kermit packets and state
transitions can be found in the references listed at the end of
the article.
Transmission of file attributes
One of the optional features of the Kermit protocol is the
ATTRIBUTE packet. The attribute packets allow a Kermit program to
send to a receiving Kermit information regarding the file
organization, size, cluster/retrieval size, protection and so
forth. There is even a system dependant attribute packet type
that can be used to transfer things like the RMS11 IFAB (the
RMS/FCS attributes). Since to date only the author's Kermit
implementation, Kermit-11, can process attribute packets, the
discussion is limited to the PDP-11.
One of the things that two Kermits exchange before any file
transfer is an information packet, this packet tells the receiving
Kermit about itself. The last field in this packet, the CAPAS
mask, tells Kermit if the other one can process attribute packets.
If two Kermit-11's are communicating, they will find that each can
do so, and the sender of a file will then send over attribute
packets indicating the need (or lack of) for binary transmission,
based on the file organization, filetype and protection code (for
RSTS/E). If the sending Kermit-11 is running on RSTS/E, RSX11M/M+
or P/OS it will also send a copy of the RMS/FCS attributes so the
received file will be identical (to FCS and/or RMS) to the copy on
the sender's system. Since other implementations of Kermit may
use this special system attribute packet, Kermit-11 always sends
an attribute packet telling the receiver what hardware and
operating system it is running on, and thus will only use such
data if they are compatible. Of course, there will be times when
a file may be binary and Kermit-11 can't tell so, many Kermit's
have a SET FILE BINARY and SET FILE ASCII to allow the user to
override defaults. Kermit-11 also has a SET FILE AUTO/NOAUTO to
disable it from trying to determine a file's binary status.
The PDP-11 Kermit-11 implementation
The author's version of Kermit-11 is written in Macro-11 and can
Page 6
run on RSTS/E, RSX11M, RSX11M Plus, P/OS, RT11 and TSX+. This
version of Kermit is distinct from the other three PDP-11 Kermits
available; the Stevens P/OS menu driven Kermit; the University of
Toronto RT11 pascal Kermit and Bob Denny's P/OS Kermit. In
Kermit-11, the RSTS and RSX file system interface is via RMS11
version 2, while the RT11 interface attempts to emulate the RMS11
subsystem. The choice of Macro-11 for the implementation language
was made for several reasons, one being the availability of the
assembler on all systems and another being speed and compactness
of the code.
RMS11 was used for RSTS/E and the RSX11M based systems to provide
a common i/o interface to the host file system. Additionally, Bob
Denny of Alisa Systems further extended the RMS interface to
support remote file access over DECNET with Kermit, allowing
commands such as SEND NODENAME::[BRIAN.FUBAR]FILE.TYPE and other
remote file accesses over DECNET. RMS11 version 2 also provides a
very simple and powerful means of doing wildcard searching, file
renames and file deletion via the $PARSE, $SEARCH, $RENAME and
$DELETE macros; it also allows the same RMS interface code to be
used on all systems without change. Points against RMS basically
amount to it's size, RMS is quite large even if overlayed. This
is helped by using the segmented RMSRES available on RSTS/E and
RSX11M Plus. The one over negative point is that RMS11 version 2
does not function well, if at all, on the older versions of PDP-11
operating systems, specifically, one should be using RSTS/E v8 or
later, RSX11M v4.1 or later, and RSX11M Plus version 2.1 or later.
All versions of Kermit-11 receive eight bit data assuming no
parity is used. Where parity is a must, Kermit-11 has to use a
prefixing scheme for eight bit binary data. Binary files are
created as FIXED no carriage control files such as used for task
images. Note that parity generation is done by software in
Kermit-11. The P/OS version of Kermit-11 runs under control of
DCL. The next release of Kermit-11, which will be 2.37, will
include support for the PRO TMS (Telephone Management System)
option. Each version of Kermit-11 has it's own source file to
deal with the operating system, for RSX it is K11M41.MAC, for
RSTS/E they are K11E80.MAC and K1180S.MAC, and for RT11 they are
called K11RT*.MAC. Apart from these specific files, all other
source files are shared. The RT11 Kermit-11 can use either the
version 5.x XL and XC handler for high throughput, or it can use
multiple terminal service to do all its terminal i/o. This second
option allows the use of any interface supported, including the
PDT150 modem port, DL/DLV11's and DZ/DZV11's. TSX+ users can
connect to CL: for dialing out, the exact means is documented in
the Kermit-11 users guide.
Future directions
With the advent of packet switched networks and satellite
communications the Kermit protocol will likely be extended to
increase efficiency over such links. The main problem is the half
duplex nature of Kermit, the packet acknowledgements can take up
to several seconds in transit thus drastically reducing the
throughput. There are several possibilities under discussion and
Page 7
a standard should be appearing shortly.
Summary
With the knowledge that there are Kermit implementations for most
personal computers in use it becomes apparent that the Kermit
standard is well worth looking in to. A list of versions running
on Digital hardware follows the article.
Kermit: A File-transfer Protocol for Universities
Frank da Cruz and Bill Catchings
BYTE Magazine, June/July 1984
The Kermit Protocol Manual, version 5
Frank da Cruz April 1984
Columbia University Center for Computing Activities
Information on obtaining Kermit:
KERMIT Distribution
Columbia University Center for Computing Activities
7th Floor, Watson Laboratory
612 West 115th Street
New York, N.Y. 10025
Kermit is also usually found on the Decus symposia SIG tapes.
Kermit-11 is available from DECUS as number 11-731
Digital hardware that Kermit is currently available for:
Operating Program
Machine System Language Contributor
DEC PDP-11 MUMPS-11 MUMPS-1982 Cornell U
DEC PDP-11 RSTS/E Macro-11 U of Toledo
DEC PDP-11 RSX-11/M Macro-11 U of Toledo
DEC PDP-11 RSX-11/M+ Macro-11 U of Toledo
DEC PDP-11 RT-11 Macro-11 U of Toledo
DEC PDP-11 RT-11 OMSI Pascal U of Toronto
DEC PDP-11 TSX+ Macro-11 U of Toledo
DEC PDP-11 Unix 2xBSD C Columbia U
DEC PDP-11, ... Unix V7 C Columbia U
DEC PDP-8 OS8, RTS8 PAL-8 R. Hippe
DEC Pro-3xx P/OS Bliss, Macro Stevens I.T.
DEC Pro-3xx P/OS Macro-11 U of Toledo
DEC Pro-3xx Pro/RT Macro-11 U of Toledo
DEC Pro-3xx Venix V1 C Columbia U
DEC Pro-3xx Venix V2 C Columbia U
DEC Rainbow CPM86 ASM86 Columbia U
DEC Rainbow MS-DOS MASM Columbia U
DEC Rainbow QNX 1.x C Merrell-Dow
DEC VAX Ultrix-32 C Columbia U
DEC VAX VMS Bliss,Macro Stevens I.T.
Page 8
DEC VAX VMS C (VAX-11 C) Columbia U
DEC VAX VMS Pascal U of Toronto
DEC VAX, ... Unix 4xBSD C Columbia U
DEC VT-180 Robin CPM80 Turbo Pascal Jeff Duncan
DEC VT-180 Robin CPM80 2.2 M80,LASM ACC
DECmate-II,III CPM80 2.2 M80,LASM ACC
DECsystem-10 TOPS-10 Bliss, Macro Stevens I.T.
DECSYSTEM-20 TOPS-20 MACRO-20 Columbia U