home *** CD-ROM | disk | FTP | other *** search
/ Columbia Kermit / kermit.zip / e / v11.1 < prev    next >
Internet Message Format  |  2020-01-01  |  21KB

  1. From cmg  Thu Jan  4 18:25:07 1990
  2. Return-Path: <cmg>
  3. Received: by watsun.cc.columbia.edu (5.59/FCB)
  4.     id AA03603; Thu, 4 Jan 90 18:25:07 EST
  5. Date: Thu, 4 Jan 90 18:25:06 EST
  6. From: Christine M Gianone <cmg@watsun.cc.columbia.edu>
  7. To: info-kermit
  8. Subject: Info-Kermit Digest V11 #1
  9. Reply-To: Info-Kermit@watsun.cc.columbia.edu
  10. Queries-To: Info-Kermit-Request@WATSUN.CC.COLUMBIA.EDU
  11. Message-Id: <CMM.0.88.631495506.cmg@watsun.cc.columbia.edu>
  12.  
  13. Info-Kermit Digest         Thu, 4 Jan 1990        Volume 11 : Number 1
  14.  
  15.    PROPOSALS FOR KERMIT PROTOCOL ADDITIONS -
  16.  
  17.         Proposal for Kermit SET FILE COLLISION Command
  18.         Proposal for Kermit SET ATTRIBUTE Command
  19.         Proposal for REMOTE SET Extension to the Kermit Protocol
  20.  
  21. Digest submissions may be sent to Info-Kermit@WATSUN.CC.COLUMBIA.EDU, requests
  22. for addition to or deletion from the Info-Kermit subscriber list to
  23. Info-Kermit-Request@WATSUN.CC.COLUMBIA.EDU or to KERMIT@CUVMA.BITNET.
  24.  
  25. Kermit files may be obtained over networks and by mail order.  On the
  26. Internetwork, use FTP to log in to host WATSUN, WATSUN.CC.COLUMBIA.EDU, a
  27. SUN-4/280 running UNIX (SUNOS 4.0), IP host number 128.59,39.2.
  28. 128.59.40.130.  Login as user anonymous (note, lower case), any password, and
  29. GET or MGET the desired files.  The Kermit files are in directories kermit/a,
  30. kermit/b, kermit/c, kermit/d, and kermit/e.  You can also get Kermit files
  31. over BITNET/EARN; to get started send a message with text HELP to KERMSRV, the
  32. Kermit file server, at host CUVMA.  For detailed instructions, read the file
  33. kermit/a/aanetw.hlp (AANETW.HLP on KERMSRV).  To order by mail, request a
  34. complete list of Kermit versions and an order form from Kermit Distribution,
  35. Columbia University Center for Computing Activities, 612 West 115th Street,
  36. New York, NY 10025 USA.
  37.  
  38. ----------------------------------------------------------------------
  39.  
  40. Date: Mon, 11 Dec 89 19:15:07 EST
  41. >From: Christine M Gianone <cmg@watsun.cc.columbia.edu>
  42. Subject: Kermit Protocol Additions
  43. Keywords: Kermit Protocol
  44.  
  45. This issue of the Info-Kermit Digest contains several proposals for extending
  46. the Kermit protocol in certain minor ways, all of them related.  These
  47. discussions are for Kermit developers.  They assume familiarity with the
  48. Kermit protocol, as described in "Kermit, A File Transfer Protocol", by Frank
  49. da Cruz, Digital Press (1987).
  50.  
  51. ------------------------------
  52.  
  53. Date: Mon, 11 Dec 89 19:15:07 EST
  54. >From: Christine M Gianone <cmg@watsun.cc.columbia.edu>
  55. Subject: Proposal for Kermit SET FILE COLLISION Command
  56. Keywords: Kermit Protocol, SET FILE Command
  57.  
  58. PROBLEM:
  59.  
  60. As pointed out by Gregg Wonderly in Info-Kermit V10 #4, as well as by John
  61. Chandler (author of Kermit-370) and many others previously, Kermit's SET
  62. WARNING (sometimes also known as SET FILE WARNING) command is misnamed and
  63. furthermore does not allow for certain desirable kinds of behavior when a file
  64. arrives which has the same name as an existing file.
  65.  
  66. SOLUTION:
  67.  
  68. A new command to replace the old SET [FILE] WARNING command (or which can
  69. coexist with it): SET FILE COLLISION, similar to the SET FILE EXISTS command
  70. which was proposed by Gregg.  The name was changed for grammar's sake, several
  71. additional options are suggested, and their behavior described somewhat
  72. differently:
  73.  
  74. SET FILE COLLISION REPLACE: Destroy the previously existing file, replace it
  75.     with the new copy (the current behavior of SET WARNING OFF).
  76.  
  77. SET FILE COLLISION RENAME: Give the incoming file a new, unique name so that
  78.     it won't overwrite any existing files (like SET WARNING ON).  This would
  79.     be the default behavior.
  80.  
  81. SET FILE COLLISION BACKUP: Give the existing file a new, unique name, using
  82.     the same algorithm that is used on the arriving file by SET FILE COLLISION
  83.     RENAME, and then accept the incoming file under its own name.
  84.  
  85. SET FILE COLLISION DISCARD: Reject any incoming file that has the same name as
  86.     an existing file using (a) the attribute refusal mechanism ("N" in the
  87.     data field of the ACK to the Attribute packet) if the use of attribute
  88.     packets was negotiated, (b) by putting an "X" in the data field of
  89.     acknowledgements to any Data packets that arrive to request cancellation
  90.     of the file.  Always use method (b), even if also using method (a), in
  91.     order to get on to the next file as quickly as possible.  In case the
  92.     sending Kermit does not understand either of these signals and the file
  93.     continues to arrive, do not open a new file and simply acknowledge and
  94.     discard all data packets up to the end of the file.
  95.  
  96.     As Gregg pointed out, the DISCARD option will be handy for resuming
  97.     transfer of a file group that had been interrupted.  This gives us a cheap
  98.     version of checkpointing.  A more general and protocol-driven
  99.     checkpointing mechanism will be proposed in the future.
  100.  
  101. SET FILE COLLISION APPEND: Append an arriving file to an existing file
  102.     that has the same name.  The resulting file keeps the same
  103.     system-dependent characteristics it had before, except that the date is
  104.     changed.  This option should be used with caution, since it opens the
  105.     door to creating files of mixed types (e.g. a text file appended to a
  106.     binary file, a spreadsheet appeneded to a database, etc).  Old versions
  107.     of IBM mainframe Kermit operated in this way.
  108.  
  109. SET FILE COLLISION ASK: Ask the user whether to replace, rename, discard,
  110.     or append each arriving file that has the same name as an existing file.
  111.     This option, too, should be used with caution because the file transfer
  112.     could time out if the user takes too long to answer the query.  There are
  113.     also user-interface issues: what happens to the active file transfer
  114.     display, etc.  Macintosh Kermit currently supports this in the form of
  115.     of "attended file transfer mode".
  116.  
  117. When the REPLACE and BACKUP options are in effect, a question arises
  118. (originally posed by John Chandler).  Should the receiving Kermit create the
  119. new file using its current file settings (SET FILE TYPE, etc), or should the
  120. new file inherit the characteristics of the existing file, like protection,
  121. blocksize, record format, etc, on systems where files have such things (IBM
  122. mainframes, VAX/VMS, etc)?  There should also be a command to let the user
  123. specify this:
  124.  
  125. SET FILE REPLACE {PRESERVE, DEFAULT}
  126.  
  127. where PRESERVE would create the new file with the same characteristics as the
  128. old one, and DEFAULT would use the current file settings of the receiving
  129. Kermit program and the host operating system when creating the new file.
  130.  
  131. The setting of SET FILE COLLISION will have an effect (as FILE WARNING does
  132. now) upon the receiving Kermit's handling of the file size attribute as
  133. reported in the incoming Attribute packet.  If the REPLACE option is in force,
  134. then the existing file's size must be added to the available space before
  135. deciding whether to accept or refuse the file on the basis of space.
  136.  
  137. This new command involves no new protocol.  Its operation is strictly local
  138. to the receiving Kermit program, and gives the user added control over its
  139. behavior when receiving files.
  140.  
  141. ------------------------------
  142.  
  143. Date: Mon, 11 Dec 89 19:15:07 EST
  144. >From: Christine M Gianone <cmg@watsun.cc.columbia.edu>
  145. Subject: Proposal for Kermit SET ATTRIBUTE Command
  146. Keywords: Kermit Protocol, SET ATTRIBUTE Command
  147.  
  148. PROBLEM:
  149.  
  150. As the use of File Attribute (A) packets within Kermit programs grows more
  151. widespread, it is becoming apparent that the user needs to have more control
  152. over this feature.  Currently, most Kermit programs that support attribute
  153. packets have a command SET ATTRIBUTES {ON, OFF}, so that if one or more
  154. attributes is causing problems on the receiving computer, the sender can be
  155. commanded not to send any attributes at all and the receiver can be told to
  156. ignore all incoming attributes.
  157.  
  158. For example, suppose both the sender and receiver programs support the file
  159. creation date attribute, and the receiver sets the arriving file's date from
  160. it.  On some computers, incremental backups work according the file date and
  161. so files that are received by Kermit won't be backed up.  If the user gives
  162. the SET ATTRIBUTES OFF command, then the current date will be used when
  163. creating the incoming file, but other useful attributes like file size will be
  164. absent or ignored.  In this case, the receiving Kermit will not be able to
  165. reject an arriving file in advance if it would be too big to fit on the
  166. available storage.
  167.  
  168. You should not have to sacrifice all file attributes if only one of them is
  169. causing problems.  Furthermore, it is possible to imagine situations in which
  170. you want a certain attribute to be effective when sending a file but not when
  171. receiving, or vice-versa.  For example, suppose the date attribute works
  172. correctly when receiving a file, but when sending a file it causes the other
  173. Kermit program to crash because of a bug.  In this case, you need a way of
  174. telling your Kermit program to not to send the date attribute, but still
  175. continue to handle for incoming files.
  176.  
  177. SOLUTION:
  178.  
  179. A new command, SET ATTRIBUTE <name> {IN, OUT} {ON, OFF}.  The <name> is the
  180. name of any Kermit attribute as listed on pp.272-279 of the Kermit book, or
  181. else the word ALL to mean all attributes.  IN OFF means that the attribute
  182. should be ignored if it appears in an incoming File Attribute packet.  OUT OFF
  183. means that the named attribute should not be included in any File Attribute
  184. packets which are sent.  IN ON and OUT ON are used to enable the named
  185. incoming or outbound attributes.  If you specify ALL OFF, then the Kermit
  186. program should not set Attribute bit in the capabilities field of its
  187. Send-Init packet (equivalent to the current command SET ATTRIBUTES OFF).
  188. Examples:
  189.  
  190.   Command                      Meaning
  191.  
  192.   SET ATTRIBUTE LENGTH IN OFF  Ignore incoming length attributes
  193.   SET ATTRIBUTE DATE OUT OFF   Omit date from outbound attributes
  194.   SET ATTRIBUTE DATE OUT ON    Include date from outbound attributes
  195.   SET ATTRIBUTE ALL OUT OFF    Don't send any attributes
  196.   SET ATTRIBUTE ALL IN OFF     Ignore all incoming attributes
  197.  
  198. This new command is completely self-contained within each Kermit program.
  199. There is no additional protocol between the two Kermit programs.
  200.  
  201. Thanks to John Chandler and Joe Doupnik for advice and suggestions on these
  202. new commands.
  203.  
  204. ------------------------------
  205.  
  206. Date: Mon, 11 Dec 89 19:15:07 EST
  207. >From: Christine M Gianone <cmg@watsun.cc.columbia.edu>
  208. Subject: Proposal for REMOTE SET Extension to the Kermit Protocol
  209. Keywords: Kermit Protocol, REMOTE SET Command
  210.  
  211. PROBLEM:
  212.  
  213. Certain Kermit programs (including MS-Kermit 3.0, C-Kermit 4F) include
  214. information about whether a file is text or binary in the File Attribute
  215. packet, so the receiver can put itself into the right mode automatically.  But
  216. when talking to a server there is no way for the client program, before
  217. issuing a GET command, to tell the server whether to send the file in text or
  218. binary mode.  This problem extends to various other protocol and file-related
  219. parameters.
  220.  
  221. NOTE:
  222.  
  223. The Kermit protocol definition includes a REMOTE KERMIT command, and the
  224. associated packet format and protocol.  It lets the user of the client program
  225. issue a command to the server in its own interactive-mode command language.
  226. But this is not a totally satisfactory answer because the syntax of Kermit
  227. programs can and does vary and, perhaps more to the point, some Kermit
  228. programs do not have an interactive command mode at all (Macintosh Kermit is
  229. one example).  What is needed is a standard mechanism and syntax that can
  230. apply to all Kermit programs uniformly.
  231.  
  232. SOLUTION:
  233.  
  234. A new addition to the Kermit protocol: REMOTE SET.  
  235.  
  236. REMOTE SET would be a Generic Kermit Server command.  A generic command looks
  237. like this:
  238.  
  239.     +-----+---------------------------------+
  240.     |  G  | x <len1> <op1> <len2> <op2> ... |
  241.     +-----+---------------------------------+
  242.      Type   Data
  243.  
  244. where "x" is the generic command, a single letter.  The letter S is not yet in
  245. use, so let's define S to mean SET.  The S is followed by a single operand,
  246. which includes a single-character length field, similar to other generic
  247. command packets.
  248.  
  249. The parameters which may be SET remotely are the ones having to do with file
  250. transfer and Kermit protocol in general, not system-dependent or
  251. communications-dependent parameters, since these must already have been set
  252. prior to making the initial connection, and must be set correctly in any event
  253. BEFORE you can successfully send a REMOTE SET (or any other) packet to the
  254. server. 
  255.  
  256. The most needed REMOTE SET command is REMOTE SET FILE TYPE {TEXT,BINARY}, but
  257. the others should be specified in the protocol too.  Numeric codes are
  258. assigned to the parameters and values, so that the mechanism for conveying
  259. this information is system- and language-independent and reasonably compact.
  260. The REMOTE SET command does exactly what the corresponding SET command would
  261. do if it had been given to the remote server as an interactive command before
  262. it entered server mode.
  263.   
  264.   Command                                Code   Values
  265.  
  266.   REMOTE SET ATTRIBUTES IN ALL            132   0 = OFF, 1 = ON
  267.   REMOTE SET ATTRIBUTES IN LENGTH         133   0 = OFF, 1 = ON
  268.   REMOTE SET ATTRIBUTES IN TYPE           134   0 = OFF, 1 = ON
  269.   REMOTE SET ATTRIBUTES IN DATE           135   0 = OFF, 1 = ON
  270.   REMOTE SET ATTRIBUTES IN CREATOR        136   0 = OFF, 1 = ON
  271.   REMOTE SET ATTRIBUTES IN ACCOUNT        137   0 = OFF, 1 = ON
  272.   REMOTE SET ATTRIBUTES IN AREA           138   0 = OFF, 1 = ON
  273.   REMOTE SET ATTRIBUTES IN BLOCK-SIZE     139   0 = OFF, 1 = ON
  274.   REMOTE SET ATTRIBUTES IN ACCESS         140   0 = OFF, 1 = ON
  275.   REMOTE SET ATTRIBUTES IN ENCODING       141   0 = OFF, 1 = ON
  276.   REMOTE SET ATTRIBUTES IN DISPOSITION    142   0 = OFF, 1 = ON
  277.   REMOTE SET ATTRIBUTES IN PROTECTION     143   0 = OFF, 1 = ON
  278.   REMOTE SET ATTRIBUTES IN GPROTECTION    144   0 = OFF, 1 = ON
  279.   REMOTE SET ATTRIBUTES IN SYSTEM-ID      145   0 = OFF, 1 = ON
  280.   REMOTE SET ATTRIBUTES IN FORMAT         146   0 = OFF, 1 = ON
  281.   REMOTE SET ATTRIBUTES IN SYS-INFO       147   0 = OFF, 1 = ON
  282.   REMOTE SET ATTRIBUTES IN BYTE-COUNT     148   0 = OFF, 1 = ON
  283.  
  284.   REMOTE SET ATTRIBUTES OUT ALL           232   0 = OFF, 1 = ON
  285.   REMOTE SET ATTRIBUTES OUT LENGTH        233   0 = OFF, 1 = ON
  286.   REMOTE SET ATTRIBUTES OUT TYPE          234   0 = OFF, 1 = ON
  287.   REMOTE SET ATTRIBUTES OUT DATE          235   0 = OFF, 1 = ON
  288.   REMOTE SET ATTRIBUTES OUT CREATOR       236   0 = OFF, 1 = ON
  289.   REMOTE SET ATTRIBUTES OUT ACCOUNT       237   0 = OFF, 1 = ON
  290.   REMOTE SET ATTRIBUTES OUT AREA          238   0 = OFF, 1 = ON
  291.   REMOTE SET ATTRIBUTES OUT BLOCK-SIZE    239   0 = OFF, 1 = ON
  292.   REMOTE SET ATTRIBUTES OUT ACCESS        240   0 = OFF, 1 = ON
  293.   REMOTE SET ATTRIBUTES OUT ENCODING      241   0 = OFF, 1 = ON
  294.   REMOTE SET ATTRIBUTES OUT DISPOSITION   242   0 = OFF, 1 = ON
  295.   REMOTE SET ATTRIBUTES OUT PROTECTION    243   0 = OFF, 1 = ON
  296.   REMOTE SET ATTRIBUTES OUT GPROTECTION   244   0 = OFF, 1 = ON
  297.   REMOTE SET ATTRIBUTES OUT SYSTEM-ID     245   0 = OFF, 1 = ON
  298.   REMOTE SET ATTRIBUTES OUT FORMAT        246   0 = OFF, 1 = ON
  299.   REMOTE SET ATTRIBUTES OUT SYS-INFO      247   0 = OFF, 1 = ON
  300.   REMOTE SET ATTRIBUTES OUT BYTE-COUNT    248   0 = OFF, 1 = ON
  301.  
  302.   REMOTE SET FILE TYPE                    300   0 = TEXT, 1 = BINARY
  303.   REMOTE SET FILE NAMES                   301   0 = CONVERTED, 1 = LITERAL
  304.   REMOTE SET FILE COLLISION               302   0 = RENAME,  1 = REPLACE,
  305.                                                 2 = BACKUP,  3 = APPEND,
  306.                                                 4 = DISCARD, 4 = ASK
  307.   REMOTE SET FILE REPLACE                 303   0 = PRESERVE, 1 = DEFAULT
  308.   REMOTE SET FILE INCOMPLETE              310   0 = DISCARD, 1 = KEEP
  309.   REMOTE SET INCOMPLETE (same as above)
  310.  
  311.   REMOTE SET BLOCK-CHECK                  400   number (1, 2, or 3)
  312.   REMOTE SET RECEIVE PACKET-LENGTH        401   number (10-9024)
  313.   REMOTE SET RECEIVE TIMEOUT              402   number (any, 0 = no timeout)
  314.   REMOTE SET RETRY                        403   number (any, 0 = no limit)
  315.   REMOTE SET SERVER TIMEOUT               404   number (any, 0 = no timeout)
  316.   REMOTE SET TRANSFER CHARACTER-SET       405   Character Set Designator
  317.   REMOTE SET WINDOW-SLOTS                 406   number (1-31)
  318.  
  319. One Kermit program should not have knowledge of another Kermit program's local
  320. character sets, therefore REMOTE SET FILE CHARACTER-SET is not included.  The
  321. Transfer Character Set Designator is the one described in the "ISO/Kermit"
  322. proposal.  For example "I2/100" (ISO Latin Alphabet 1), "I2/144" (ISO
  323. Latin/Cyrillic), or "I14/13" (Japanese Roman/Katakana).  The command would
  324. use the name (for example REMOTE SET TRANSFER CHARACTER-SET LATIN1) and the
  325. generic server command packet would use the corresponding designator.
  326.  
  327. REMOTE SET LANGUAGE is omitted for the present, but can be added later.  The
  328. problem here is assigning a unique code to each of the world's languages.
  329.  
  330. The numbers shown for the codes and values are expressed as character
  331. strings composed of ASCII digits, 0-9.  Here are examples, showing the TYPE
  332. and DATA fields of the Kermit packet:
  333.  
  334.   GS#101!0      = REMOTE SET ATTRIBUTE LENGTH OFF
  335.   GS#202!0      = REMOTE SET ATTRIBUTE TYPE OFF
  336.   GS#300!1      = REMOTE SET FILE TYPE BINARY
  337.   GS#400!2      = REMOTE SET BLOCK CHECK 2
  338.   GS#401$1000   = REMOTE SET RECEIVE PACKET-LENGTH 1000
  339.   GS#405&I2/100 = REMOTE SET TRANSFER CHARACTER-SET LATIN-1
  340.  
  341. ORGANIZATION AND EXPANSION:
  342.  
  343. The codes are numeric strings, with the hundred's place assigned roughly
  344. according to "topic": 100's for Incoming Attributes, 200's for Outbound
  345. Attributes, 300's for file-related items, and 400's for packet-related items.
  346. Note that the SET ATTRIBUTE codes are equal to 100 or 200 plus the value of
  347. the corresponding attribute designator.  There is plenty of room for expansion
  348. within each category, and new categories can be added as required.
  349.  
  350. PROTOCOL:
  351.  
  352. The person using the client Kermit program issues a REMOTE SET command for
  353. a single parameter, such as REMOTE SET FILE TYPE BINARY.  The program forms
  354. the corresponding G packet and sends it to the server.
  355.  
  356. The server program can respond in any of the following ways, and the client
  357. program should be prepared for each kind of response:
  358.  
  359.   E-packet:  An Error packet.  The server does not understand REMOTE SET
  360.              packets, or it is not able to perform the specific SET that was
  361.              requested.  Therefore the client must not assume that the SET has
  362.              been done, and if it is in local mode, it must give a message to
  363.              the user, as described below.
  364.  
  365.   Y-packet:  An Acknowledgement.  The server accepted the command, and
  366.              performed the requested SET.  The data field of the Y-packet can
  367.              be empty, to indicate that the requested value was accepted.  Or
  368.              it can contain the value which the server actually set.  For
  369.              example, the user types REMOTE SET RECEIVE PACKET-LENGTH 5000 but
  370.              the server only supports lengths up to 1000:
  371.  
  372.         To server -->  GS#400$5000
  373.                    Y1000        <-- To client
  374.  
  375. CLIENT IMPLEMENTATION:
  376.  
  377. A client can include support for any number of the REMOTE SET commands, or
  378. none at all.  A minimal implementation might include only REMOTE SET FILE
  379. TYPE.  This would include addition of the command to the program's command
  380. tables, code to send the generic packet, and code to interpret the response
  381. and issue any appropriate messages to the user, like the contents of the
  382. error packet data field, or any altered value that the server sent back in
  383. the data field of an acknowledgement.  Examples:
  384.         
  385.     REMOTE SET command succeeded
  386.     REMOTE SET value changed to 1000
  387.     REMOTE SET command failed: <reason from data field of E-packet>    
  388.  
  389. SERVER IMPLEMENTATION:
  390.  
  391. A server can also include support for any number of the REMOTE SET commands,
  392. or none at all.  If it supports none at all, then it will automatically
  393. respond to a REMOTE SET packet with an error packet containing a message
  394. like "Unimplemented REMOTE command".
  395.  
  396. If the server receives a REMOTE SET packet for a parameter it does not support
  397. the REMOTE SETting of, then it should respond with an error packet containing
  398. the message "Unknown REMOTE SET parameter".
  399.  
  400. If the server gets a REMOTE SET packet for a parameter which is known to it,
  401. then it should:
  402.  
  403. (a) Set the parameter to the requested value and respond with an empty Y
  404.     packet, or:
  405.  
  406. (b) If the requested value exceeds the server's maximum value for the
  407.     parameter, set it to its own maximum value and respond with a Y packet
  408.     containing the new value in its data field, as in the packet-length
  409.     example above.
  410.  
  411. If the server is a "permanent" Kermit server which cannot be terminated using
  412. BYE or FINISH, then when the user disengages from it using BYE, FINISH, or
  413. LOGOUT, then when the server receives a BYE, FINISH, or LOGOUT command, it
  414. should revert any parameters that were changed by REMOTE SET back to the
  415. values that were in use when server mode was entered.
  416.  
  417. Thanks to Joe Doupnik and John Chandler for their assistance in the design
  418. of this protocol extension.
  419.  
  420. ------------------------------
  421.  
  422. End of Info-Kermit Digest
  423. *************************
  424.  
  425.