diff options
author | Thomas Voss <mail@thomasvoss.com> | 2024-11-27 20:54:24 +0100 |
---|---|---|
committer | Thomas Voss <mail@thomasvoss.com> | 2024-11-27 20:54:24 +0100 |
commit | 4bfd864f10b68b71482b35c818559068ef8d5797 (patch) | |
tree | e3989f47a7994642eb325063d46e8f08ffa681dc /doc/rfc/rfc520.txt | |
parent | ea76e11061bda059ae9f9ad130a9895cc85607db (diff) |
doc: Add RFC documents
Diffstat (limited to 'doc/rfc/rfc520.txt')
-rw-r--r-- | doc/rfc/rfc520.txt | 451 |
1 files changed, 451 insertions, 0 deletions
diff --git a/doc/rfc/rfc520.txt b/doc/rfc/rfc520.txt new file mode 100644 index 0000000..d79deaf --- /dev/null +++ b/doc/rfc/rfc520.txt @@ -0,0 +1,451 @@ + + + + + + +Network Working Group J. Day +Request for Comments: 520 Center for Advanced Computation +NIC: 16819 25 June 1973 + + + A Proposed File Access Protocol Specification + + Attached is a proposal for the File Access Protocol. FAP is an + extension to FTP. I believe the specification is fairly general and + should provide a good jumping-off place. I hope the protocol is + specified in such a way as to fit with idiosyncrasies of most + systems. If the protocol would cause an inordinate amount of burden + on your system for one reason or another I would like to hear about + it. + + At some later date when the difficulties of implementation are better + known, I would like to see several levels of implementation specified + and implementation be done in terms of those levels. + + From rumors I have heard I believe this will also allow creation and + transfer of what TENEX calls "holey" files. But, I am not sure of + all of the implications of that, or what would happen (or should + happen) when a "holey" file is moved to a site that doesn't really + have such a thing, per se. Comments from the TENEX crowd would be + appreciated. + + I think some further work could be done to make FAP easier for record + oriented systems. This would probably require an extra command or + parameter to specify all operations are in terms of records. + Comments are invited. + + In the long run though, I would like to see FAP thrown away. The + commands as they are described merely add a finer structure to the + present RETR, STOR, and APPE without much additional overhead. The + sequence: + + OPEN R FOO.BAR CRLF + READ ALL CRLF + CLOS CRLF + + is equivalent to RETR FOO.BAR CRLF. FAP could be merged with FTP to + give a much richer, coherent whole. + + In writing this document, I ran into the deficiency of reply codes + for protocols. Three digits is no where near enough. I would like + to suggest that as another interim solution we go to a five digit + + + + + +Day [Page 1] + +RFC 520 A Proposed File Access Protocol Specification 25 June 1973 + + + reply with two for specific categories (such as Primary access, FTP + results, etc.) and two for specific results. In the meantime, the + NWG should begin considering a general scheme for reply codes -- one + that doesn't need revising every two years. + + Comments, complaints, etc. are welcomed. I may be reached through + network mail at ISI (DAY) or Multics (DAY Cnet) or by phone at the + University of Illinois (217) 333-6544. + + A + Proposed + File Access Protocol + Specification + + John Day + + 6/7/73 + +I. INTRODUCTION + + The purpose of the File Access Protocol is to provide a method for + processes to access non-local files in either a sequential or non- + sequential manner. Unlike the proposed Mail Protocol, FAP is an + extension of FTP and not a subsystem. In general FAP is compatible + with the rest of FTP. Those modifications which are necessary are + specified below. + + The intent of this protocol is to allow processes to specify to the + remote file system where in the file they wish the next operation to + start and how much data to move. Thus only the part of a file + necessary for a process' computation need be transferred, rather than + the entire file. Thus transmission times and storage requirements + may be held down. In short, the rationale for a File Access Protocol + on the network is the same as the rationale for "random-accessed" + files in a standard operating system. + + The file Access Protocol uses the connection model, data + representations, and transmission methods of the File transfer + Protocol. All data transmissions in FAP are handled according to the + description in FTP Section III.C with the following modifications. + In Stream mode, the minimum byte size is increased to 4 bits. + Another control code (value 4) is used to indicate "end of + transmission". An combination of EOT, EOR, or EOF may be indicated + by the proper control code. With this method it is not necessary to + close the connection after each access; a practice not highly + recommended. In Block mode, bit 5 of the descriptor field of the + header is set noting that this block is the end of transmission. In + addition to this, FAP uses a File Pointer (FP). The file pointer + + + +Day [Page 2] + +RFC 520 A Proposed File Access Protocol Specification 25 June 1973 + + + points into the file and is the point at which the next FAP read or + write will commence. The file pointer is a general mechanism for + addressing a file and should be flexible enough to handle both stream + and record oriented systems. + +II. PROBLEMS OF IMPLEMENTATION + + As usual, not all systems will be able to implement this protocol in + its full generality. The approach that should be taken is that no + host should be required to provide for network users (in the name of + complete protocol implementation) service it does not provide its + local users. + + Some systems allow "random" access to some kinds of files on its + system and not to others. In this case, this should be their + implementation, i.e., not all operations are valid for all kinds of + files. + + Some systems cannot move the byte pointer backwards without opening + and closing the file. They should not be required to do this + (although they may if they wish), but they should allow "spacing" + down a file some distance before starting a transfer. + + Some systems may not allow read and write access to be available + without closing and reopening the file. Systems should not be + required to do both. + + In general, the rules of implementation are: + + 1) If a system normally allows that particular kind of access to + that particular file then it should be allowed; if not, the system + should not be forced to implement it. (In many cases, the legality + cannot be known until the operation is attempted; i.e., it cannot + be told of the first two cases above if they are legal when the + file is opened but only on the read or write which violates the + implementation restrictions). + + 2) A system should not try to simulate a facility if the + simulation has side effects. For example, if simulating the + capability of moving the byte pointer to the desired position has + some side effects, then the simulation should be left to the + process accessing the file. + + 3) All implementors should make known the capabilities of their + implementations via NIC documents. + + + + + + +Day [Page 3] + +RFC 520 A Proposed File Access Protocol Specification 25 June 1973 + + +III. FILE ACCESS PROTOCOL + + The FAP extension to FTP includes 6 new commands and the file + pointer. Any implementation requires the file pointer and all six + commands. But, as described above, it is not necessary to implement + the commands in their full generality. + +III.1 THE FILE POINTER + + The file pointer represents an index or address within the file. The + units by which the index is measured, is "logical byte size" and does + not include any bytes related to transmission or structure. In + particular, for transmission mode Stream and structure Record, the + EOR and EOF markers are not counted. Local transformations on data + must be taken into account. For example, Multics stores CRLF as NL. + In this case, NL counts as two ASCII bytes since it was transmitted + to or will be sent from Multics as CRLF. If transmission Mode is + Image then the logical byte size is taken as the transmission byte + size. There are two commands which operate on the file pointer: 1) + SETP to move the pointer and 2) GETP to find out where it is at. + These are described below in more detail. + + The file pointer may take on three classes of values. All may be + mapped to some decimal number. The value B represents the beginning + of the file (Byte 0). The value E represents the end of the file (or + Byte n for a file n bytes long). The byte pointer may also take on + any value between 0 and n. + + A file of n bytes + + .......... + |----|----|----|----|-----------|----|----|----|----| + ^ 1 2 3 4 n-4 n-3 n-2 n-1 ^ + | | + 0 n + B E + + If a file is stored under set of parameters (TYPE, etc.) and + operations are attempted on it under different parameters, the server + does not guarantee that the information will be valid. + +III.2 COMMANDS + +III.2.1 OPEN <direction> <pathname> + + This command instructs the server to "open" the file <pathname> for + access in the direction specified. The directions are read, R write, + W; or both, B. A read direction implies that the data connection is + + + +Day [Page 4] + +RFC 520 A Proposed File Access Protocol Specification 25 June 1973 + + + from server to user; write, from user to server; and both implies + connections each ways. Functionally, this command corresponds to + RETR or STOR. Therefore, all the FTP parameter commands (TYPE, MODE, + etc.) must be sent before the file is opened. If the direction is + write (W) and the file specified by the pathname does not exist, + there is an implied create with the open. The success of this + create, is, of course, dependent on local access privileges and + possibly whether or not an ALL command was sent. If applicable, the + file created should be of the most general kind of file on which + "random" access is allowed. (This is to allow the largest degree of + compatibility with operations that may follow). This should be + ignored if some site specific command has already specified the kind + of file. This command identifies the file on which subsequent + operations are to be performed. After the file is opened, the file + pointer is at B and any of the other five FAP commands may be sent. + It is acknowledged that some systems cannot open a file for access in + both directions; an error reply 402 should be sent for this response. + + Replies + ------- + 258 451 500 504 550 + 402 454 501 505 + 434 455 502 506 + 4550 457 503 507 + +III.2.2 SETP <argument> + + This command causes the file pointer to be set to the number + specified in the argument. This value will be the ordinal number of + the starting position of the next operation. (Byte 0 is the first + byte in the file). The argument may take on two other values besides + <decimal number> : B, for BEGIN, which sets the file pointer at the + beginning of a file (i.e. 0) and E, for END, which sets the file + pointer to the last byte in the file. Two error conditions are + possible. If the argument specifies an illegal change of file + pointer (such as moving it backwards on some systems), then the error + reply 402 should be sent. If the argument attempts to move the file + pointer off the end of the file, then the EOF: <byte number> reply + should be sent with the address of the end of the file (E), and the + file pointer left at E. + + Replies + ------- + 258 + 402 + 480 + + + + + +Day [Page 5] + +RFC 520 A Proposed File Access Protocol Specification 25 June 1973 + + +III.2.3 GETP + + This command requests the server to return the value of the file + pointer as a decimal number. + + Reply + ----- + 483 + 504 + +III.2.4 READ <arg> + + This command instructs the server to move as many bytes as specified + (of size logical byte size) from the server to the user. The values + the argument may take on are <decimal number> and ALL. ALL is + interpreted as all data from the present position of the file pointer + to the end-of-file. If a read requests more bytes than in the file, + the number of bytes from the present position to the end of file + should be transferred and an EOF: <byte number> response returned + noting the position of the end of file. If the file is Record + structured and a READ requests more bytes than in the record, then + the number of bytes in the record from the file pointer are moved and + the EOR: <byte number> reply is sent noting the end of record. The + action of a READ leaves the file pointer at the position before the + read plus the number of bytes moved, (i.e., updated). The EOF + condition leaves it at E. + + Replies + ------- + 258 480 + 402 481 + 450 482 + 452 500-507 + 455 + +III.2.5 WRITe <arg> + + This command instructs the server to accept as many bytes as + specified from the user. The result updates the value of the file + pointer. The values the argument may take on are <decimal number> or + ALL. ALL is interpreted as all data from the present position of the + byte pointer to the end-of-file (or beyond). Associated with the + write is an implied "append", if necessary previous information has + been sent (such as allocation) and if the file's access privilege + allow the append. If a write specifies more bytes than there are + between the file pointer and the end-of-file, and expansion is not + allowed, no data is sent and the file pointer is not moved. An error + is returned specifying the byte position of the EOF. If the file is + + + +Day [Page 6] + +RFC 520 A Proposed File Access Protocol Specification 25 June 1973 + + + Record structured and a WRIT attempts to move more bytes than there + are in the record, the file pointer is not moved and the EOR: <byte + number> reply is sent noting the end of record. + + Replies + ------- + 258 480 + 402 481 + 450 482 + 452 500-507 + 453 + +III.2.6 CLOS + + This command instructs the server to "close" the presently open file, + if any. The receipt of a CLOS without an open file is not an error. + The effect is to notify the server that further operations are not + directed at the file which is presently open. If an open is received + by the server and it has a file open, it should close the open file + and open the new one. + + Reply + ----- + 258 + +IV. SUMMARY + +IV.1 SYNTAX + + OPEN <direction> <pathname> CRLF + CLOS CRLF + SETP <byte pointer arg> CRLF + GETP CRLF + READ <transfer argument> CRLF + WRIT <transfer argument> CRLF + + <direction>::= R|W|B + + <byte pointer argument>::= B|E|<decimal number> + + <transfer argument>::=ALL|<decimal number> + + <byte number>::= <decimal number> + + + + + + + + +Day [Page 7] + +RFC 520 A Proposed File Access Protocol Specification 25 June 1973 + + +IV.2 REPLIES USED BY FAP + + 258 Operation successful + 402 Command not implemented for requested value or action + 433 Cannot transfer files w/o valid account. Enter account & + resend command. + 450 FTP: file not found + 451 FTP: file access denied + 452 FTP: file transfer incomplete, data connection closed. + 453 FTP: file transfer incomplete, insufficient storage space. + 454 FTP: cannot connect to your data socket + 455 FTP: file system error not covered by other reply codes. + 457 FTP: transfer parameters in error. + 480 EOR: <byte number> + 481 EOF: <byte number> + 482 File not open for operation + 483 FP: <byte pointer> + 500 Last command line completely unrecognized. + 501 Syntax of last command is incorrect. + 502 Last command invalid (ignored), illegal parameter combination. + 504 Last command invalid, action not possible at this time. + 505 Last command conflicts illegally with previous command(s). + 506 Last command not implemented by the server. + 507 Catchall error reply. + 550 Bad pathname specification (e.g., syntax error). + + + [ This RFC was put into machine readable form for entry ] + [ into the online RFC archives by Via Genie ] + + + + + + + + + + + + + + + + + + + + + + +Day [Page 8] + |