|
Network Working Group Request for Comments: 133 NIC 6710 [Categories C.4, C.5, C.6, D.4, D.7, D.7] |
R. L. Sunberg Harvard University 27 April 1971 |
I think that Mr Bhushan(RFC #114, NIC 5823) is not strict enough in his concept of a transaction sequence. Every transaction should prompt a response from its recipient (recall Kalin's crates -- RFC #60, NIC 4762). Control should pass back and forth until the server terminates. The server _always_ gets the last word (more on error recovery later).
Some sample interchanges are given.
User Server Comments
<...> ==> Establish a connection
<== <...>
<I><...> ==> Identify self
<== <+> Ok, ready
<R><...> ==> Retrieval request
<== <rs> I've got your file
<rr> ==> Send it
<== <,><...> Here's the first part
<rr> ==> Got it
<== <+> All done
<S><...> ==> Store request
<== <rr> Ok, go ahead
<#><...> ==> Here's some protection stuff
<== <rr> Ok
<*><...> ==> Here's the file
<== <+> Got it. All done.
See section 2B, below, for examples of error recovery.
The file transfer protocol needs a mechanism for accessing individual records of a file. This will be particularly useful when very large data bases appear on the network. The following definitions should be added to the protocol:
The store(S) and retrieve(R) requests have the data field format
<key>, where <key> has the syntax:
<key>::=<devicename>RS<filename>US<keyname> | <filename>US<keyname>.
-- -- --
The <pathname> syntax is changed to:
<pathname>::=<devicename> | <filename> | <pathname>RS<filename>.
--
If a retrieve(R) request is given with a data field with <key>
syntax rather than <pathname> syntax, then the returned data will
consist of the record following the matching <key>. If a store(S)
request is given with a data field of <key> syntax, then the
supplied data will replace the record following the matching
<keyname>. If the keyname does not exist, the record will be
appended to the named file. The individual installation must
provide the linkage between the <keyname> and the record it
references.
In addition, the lookup(L) request will provide a list of keynames into a file (or the name of a file which contains the keynames).
Transaction code F (request File directory) requests a listing of available files. The data field of the F transaction is of the form: <pathname>GS<pathname>GS... All files in the server system
-- --
which match one or more of the given <pathname> specifiers are
listed in a return file. The format of the data fields of this
file is: <pathname>GS<pathname>GS... If a <pathname> field in
-- --
the request transaction does not include a <name> field, the
default is all files on the given device. Some examples are given:
<F><DC1 DSK[62,50]] GS JOE>
--- --
This example requests a list of all files on the disk specified by [62,50] plus all files named JOE. The response could contain in the data field:
<DC1 DSK[62,50] RS ALPHA RS BETA RS JOE GS DC1 DSK[10,50] RS JOE>
--- -- -- -- -- --- --
This message states that in the [62,50] area of the disk there are files ALPHA, BETA, and JOE, and that JOE is also a file in the [10,50] area of the disk.
User Server Comments
<R><...> ==> Send me this file
<== <rs> Ok, I've got it
<rr> ==> Ready
<== <*><...error> Here it is (with an error)
<-><D> ==> No. (data) error
<== <-><D> Sorry, forget it
<R><...> ==> Send the file (again)
|<== <rs> Ready (doesn't get there)
... (waiting)
<-><0> ==> Error, timeout
<== <-><0> Sorry, forget it
<R><...> ==> Send the file (third time)
<== <rs> Got it
<rr> ==> Ready
<== <*><...> There it is
<rr> ==> Got it
<== <+> Done (finally>
Note that the server always gets the last word in error situations as well as normal transmission.
[ This RFC was put into machine readable form for entry ] [ into the online RFC archives by Jose Tamayo 4/97 ]