summaryrefslogtreecommitdiff
path: root/doc/rfc/rfc133.txt
diff options
context:
space:
mode:
authorThomas Voss <mail@thomasvoss.com> 2024-11-27 20:54:24 +0100
committerThomas Voss <mail@thomasvoss.com> 2024-11-27 20:54:24 +0100
commit4bfd864f10b68b71482b35c818559068ef8d5797 (patch)
treee3989f47a7994642eb325063d46e8f08ffa681dc /doc/rfc/rfc133.txt
parentea76e11061bda059ae9f9ad130a9895cc85607db (diff)
doc: Add RFC documents
Diffstat (limited to 'doc/rfc/rfc133.txt')
-rw-r--r--doc/rfc/rfc133.txt227
1 files changed, 227 insertions, 0 deletions
diff --git a/doc/rfc/rfc133.txt b/doc/rfc/rfc133.txt
new file mode 100644
index 0000000..65b720b
--- /dev/null
+++ b/doc/rfc/rfc133.txt
@@ -0,0 +1,227 @@
+
+
+
+
+
+
+Network Working Group R. L. Sunberg
+Request for Comments: 133 Harvard University
+NIC 6710 27 April 1971
+[Categories C.4, C.5, C.6, D.4, D.7, D.7]
+
+
+ FILE TRANSFER AND ERROR RECOVERY
+
+
+1 FILE TRANSFER PROTOCOL
+
+1A Handshaking
+
+ 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.
+
+
+
+
+
+
+
+Sunberg [Page 1]
+
+RFC 133 File Transfer and Error Recovery April 1971
+
+
+1B Extensions to the file transfer protocol
+
+ 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>
+ --- --
+
+
+
+
+
+
+
+
+Sunberg [Page 2]
+
+RFC 133 File Transfer and Error Recovery April 1971
+
+
+ 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.
+
+2 ERROR RECOVERY
+
+2A Error recovery procedures have been noticeably lacking to date.
+ The usual approach has been to close the connection and start from
+ scratch. Mr Bhushan proposes a third level abort but doesn't
+ really detail the implementation. I propose a multilevel error
+ recovery procedure as follows.
+
+2B If an error occurs which does not cause a loss of third level
+ transaction boundaries and only affects one side of a duplex
+ connection, a third level recovery is possible via a transaction
+ sequence abort. An example is given:
+
+ 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.
+
+
+
+
+
+Sunberg [Page 3]
+
+RFC 133 File Transfer and Error Recovery April 1971
+
+
+2C Although the above examples are given in terms of Bhushan's
+ transaction codes, this form of error recovery is implementable in
+ any protocol which uses flagged blocking and duplex connections.
+
+2D If errors cannot be recovered as above, then some means must be
+ available to clear the link completely and resynchronize. I
+ suggest that an 8-bit argument be appended to the interrupt-on-link
+ NCP message (INR, INS). The receiver would send <INR><error> to
+ indicate that the block boundaries were lost and all incoming data
+ is being discarded. The sender, upon receiving the INR, would
+ flush all queued output and wait for the link to clear. The NCP
+ would then send a <INS><newsync> message and, when it was received
+ (RFNM returned), a negative termination would be sent on the link.
+ The receiver begins accepting data again when the INS is received.
+ This assumes that any process can flush untransmitted data and
+ detect a clear link. Note that this method is useable on any
+ simplex connection.
+
+2E If all else fails, one can resort to closing the faulty socket.
+
+3 NCP VERSION NUMBERS
+
+3A I suggest that the NCP be given a version number and the next
+ version include two new message types: <WRU> ('Who aRe yoU?')
+ requests a version number from the receiving host and <IAM><version>
+ ('I AM') supplies that number.
+
+3B The messages would probably be initially used in a 'can I talk to
+ you?' sense or not at all. Eventually, it would take on a 'what
+ can you do?' meaning. Accordingly, the <version> field should be
+ large (32 bits?) for expansion.
+
+
+
+ [ This RFC was put into machine readable form for entry ]
+ [ into the online RFC archives by Jose Tamayo 4/97 ]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Sunberg [Page 4]
+