|
Network Working Group Request for Comment: 281 NIC: 8163 Category: D.7 Reference: RFC #264, #265 |
A. McKenzie BBN 8 December 1971 |
a) The "information separators" (transaction type B4) which are available in both "transparent block" transfers and "descriptor and counts" transfers, and
b) The "sequence numbers" which can be used with the "descriptor and counts" transfer mode.
After some discussion, we seemed to agree that the "information separators" (as they would be used in "transparent block" transfer mode, i.e., without "sequence numbers") were unlikely to serve as UNAMBIGUOUS restart location marker, and therefore we suggest the use of "sequence numbers" as markers. We were aware of the fact that this choice might exclude TIPs and other Hosts which do not use sequence numbering from the type of recovery under discussion; we believe, however, that our suggestion eliminates at least some of this problem.
Imagine that some site, which we will call the "user site" or "user", has initiated a connection from its own file transfer process to a file transfer process at some other site, which we will call the "server site" or "server". After the appropriate exchanges of information, a file transfer (using the File Transfer Protocol) begins over the path between these two sites. After some information is transferred, the path between the user and server is broken. At some later time the user initiates a new connection between the file transfer processes at user and server, establishes relevant access privileges, and wishes to resume the transmission which was in progress when the path was broken. First we describe four new op- codes for the File Transfer Protocol:
Hex Operation --- --------- 10 Append at sequence number
This command is essentially the same as any of the "Store" or "Append..." commands except that a 16-bit sequence number immediately follows the op-code (before the pathname).
11 Retrieve at sequence number
This is the same as the "Retrieve"command except that a 16-bit sequence number immediately follows the op-code (before the pathname).
12 Resume Retrieve
To be used when the user wishes the server to choose the sequence number; in other respects this is identical to the "Retrieve" command.
13 Use the sequence number
This command contains only the op-code and a 16-bit sequence number. It is intended as a denial of the ability to locate the sequence number given in an "Append at sequence number" or "Retrieve at sequence number" command and, simultaneously, to suggest another number which can be located.
There are several possible cases which are shown below. The user site is always presumed to be the site at the left of the page.
/
/ Append at sequence number
| ------------------------------------------->
| Acknowledge
| <------------------------------------------
| Data
| ------------------------------------------->
|
\ The server site agrees to resume at the user-chosen point.
\ The first data transaction is numbered with the chosen
\ sequence number.
/ Append at sequence number
/ ------------------------------------------->
| Unsuccessful Terminate
| <-------------------------------------------
|
\ The server site will never permit restart for some reason
\ (seq. #s were ignored or not used initially, seq #s were not
\ stored with the file, the file was lost when the path was
\broken, etc.)
/ Append at sequence number
/ ------------------------------------------->
| Use this sequence number
| <-------------------------------------------
| / Data
| / --------------------------------->
| \ The user site agrees to use the server-chosen number
| \ and the first data transaction is numbered with the
| \ chosen number.
|
| or
|
| / Unsuccessful Terminate
\ / ------------------------------->
\ \ The user site cannot restart at this number for
\ \ some reason.
/ Resume Retrieve
/ ------------------------------------>
| Data
| <------------------------------------
| The server picks some point and begins transmission at
| that point. If sequence numbers were used during the
| original transmission, then the first transaction of
| this transmission must exactly match (including
| sequence number) some transaction of the original
\ transmission.
/ Resume Retrieve
/ ------------------------------------>
| Unsuccessful Terminate
\ <------------------------------------
\ The server site is unable or unwilling to restart the
\ transmission.
/ Retrieve at sequence number
/ ---------------------------------------->
| Data
| <----------------------------------------
\ The server agrees to resume at the user-chosen
\ point. The first data transaction is numbered
\ with the chosen sequence number.
/ Retrieve at sequence number
/ ---------------------------------------->
| Unsuccessful Terminate
| <----------------------------------------
|
| The server site will never permit restart for some
| reason.
| Retrieve at sequence number
| ---------------------------------------->
| Use this sequence number
| <-----------------------------------------
| / Acknowledge
| / ---------------------------->
| | Data
| | <----------------------------
| \ The user site agrees to use the
| \ server-chosen number. The first data
| \ transaction is numbered with the chosen
| \ number.
|
| or
|
| / Unsuccessful Terminate
| / ----------------------------->
| |
\ \ The server cannot use the user-chosen
\ \ number and the user cannot use the
\ \ server-chosen number. Therefore the attempt
\ \ to restart must be abandoned.
Some sites (e.g., UCLA-CCN) have agreed (in principle, at least) to implement these commands and, more important, to store sequence numbers (with files being transferred) on a non-volatile storage medium so that restarts may be effected. This will be done, of course, only if this, or some similar, proposal is accepted by the NWG as part of the File Transfer Protocol. We hope interested parties will communicate comments or counter-proposals to the FTP committee and/or publish their ideas in the RFC series.
AAM/jm
[This RFC was put into machine readable form for entry] [into the online RFC archives by Kelly Tardif, Viaginie 10/99]