diff options
Diffstat (limited to 'doc/rfc/rfc614.txt')
-rw-r--r-- | doc/rfc/rfc614.txt | 233 |
1 files changed, 233 insertions, 0 deletions
diff --git a/doc/rfc/rfc614.txt b/doc/rfc/rfc614.txt new file mode 100644 index 0000000..1058eb7 --- /dev/null +++ b/doc/rfc/rfc614.txt @@ -0,0 +1,233 @@ +Network Working Group K. Pogran (MIT-Multics) +Request for Comments: 614 N. Neigus (BBN-NET) +NIC #21530 Jan 1974 +References: RFC #607, RFC #542 + + + Response to RFC 607, "Comments on the File Transfer Protocol" + + +Mark Krilanovich and George Gregg have pointed out a number of "sticky" +issues in the current File Transfer Protocol. Although we don't agree +with all of their proposed protocol modifications, we do feel that each +of the points they have raised should be given some thought by everyone +concerned about FTP. Each numbered paragraph in the discussion below is a +comment on the identically-numbered paragraph in RFC 607. + +1. Instructions to the Server to be "passive" are defined to apply only +to the next single file transfer operation, after which the Server +reverts to active mode. RFC 607 does, however, point out a drawback in +the present specification, in that there is no way for a user to "change +his mind": once he has told a server to be "passive", he has to initiate +some file transfer operation. The suggested solution is a welcome one. We +suggest that the text of the "successful reply" to the ACTV command +indicate whether the server had previously been in "active" or "passive" +mode, viz: + +200 MODE CHANGED TO ACTIVE + +or + +200 MODE IS ALREADY ACTIVE + +It is important to note that once some servers "listen" on a connection +in response to a PASV command, they no longer can examine the Telnet +control connection for the possible arrival of an ACTV command. User-FTP +programs should precede the ACTV command with a SYNC sequence to ensure +that the server will see the ACTV command. + +2. While the length of an FTP command -- either three or four characters +-- might often be irrelevant to a system which interacts over Telnet +connections on a line-at-a-time basis, we can see how a variable command +length might be harder for a character-at-a-time system to handle, +especially for a server implemented in assembly language. Quite a bit is +gained, and nothing seems to be lost, by requiring that FTP commands be +four characters, so we agree with the suggestion in RFC 607. + +3. While the FTP document may be somewhat ambiguous in its specification +of the order of the handshaking which takes place following a file +transfer command, such an order does exist as far as is possible for the +two asynchronous processes described in "The FTP Model" (section II. B of +RFC 542) -- the Telnet Control process (Protocol Interpreter) and the +Data Transfer process. The user is required to "listen" on the data +connection before sending the transfer command. Upon receipt of the +command the server should first check that the status of the file +specified by the argument to the file transfer command is okay, and, if +so, attempt to open the data connection. If there are file system +problems, no attempt should be made to open the connection. In this way, + + -1- + +the primary response to the command gives an accurate picture of the +transfer status -- i. e., connection opened and transfer started (250), +or connection not opened because of file problems (450, 451, 455, 457) or +connection problems (454). The secondary reply follows the conclusion of +the transfer, and describes its success or failure. + +If a particular FTP implementation cannot monitor the data connection and +the Telnet control connection simultaneously, then it must establish a +timeout waiting for the data connection RFC. In addition, a minimum +interval should be specified for which all servers must wait before +deciding that the data connection cannot be opened. We suggest that this +interval be no shorter than fifteen seconds. + +4. The protocol states that servers should return "success", replies to +commands such as ACCT and ALLO which were irrelevant to them. We +recommend that the protocol say "must" rather than "should". + +5. Specification of maximum lengths for lines, pathnames, etc. is a fine +idea, as is the suggestion of a Server poll. Typical values for the +present Multics implementation (provided by Ken Pogran) are as follows: + +Telnet lines: 256 +User names: 32 +Passwords: 8 +Account Numbers: (na) +Pathnames: 168 (yes, 168) + +6. We strongly disagree with Mark on this point. The algorithm a user-FTP +should use goes something like this: + +a. Examine the first four characters of the reply. +b. If the fourth character is a space, the reply is not a multi-line reply. +c. If the fourth character is a hyphen, the reply is a multi-line reply, +and the text portion of this line and succeeding lines should be reported +to the user if this is desired. +d. On each succeeding line, if the first four characters are not the +three digits of the original reply code followed by a space, the line is +entirely a text line and should either be reported to the user or +discarded. +e. If the first four characters on the line are the three digits of the +reply code followed by space, this line is the last line of the reply. + +This algorithm seems simple enough, if nesting of replies is not required +(see comments on paragraph 7, below). This sort of continuation-line +convention provides a number of benefits to the person coding a server. +Consider the problem of providing a directory listing, in response to a +STAT command whose argument is the pathname of a directory. If the FTP +Telnet control connection is treated as a pseudo-typewriter (as most +ordinary Telnet connections are), the writer of an FTP Server may be able +to "borrow" the code from the system command which provides directory +status (listing) information, as follows (in a pseudo-PL/l syntax): + +call write_out_line ("151- Directory listing follows") ; +call list_directory_contents (directory_pathname); +call write_out_line ("151 Directory listing complete"); + + -2- + +The same can be done for the file status reply (code 150). Otherwise, a +program must be written which performs the function of the +directory-listing command, but uses a special output format. If the +implementor of an FTP Server wants to be "nice" and list file attributes, +as well as file names, in the directory listing (as many +directory-listing commands do), this could be a fairly big job. If +already-written software can be borrowed and incorporated into the FTP +Server, the implementor of the FTP Server can put more of his effort into +doing a better job of building the "guts" of the FTP Server. + +7. It is not obvious why multi-line replies are allowed to be nested to +an arbitrary depth. Only truly spontaneous replies may nest inside other +replies -- and it is easy to convince yourself that they will only nest +to depth one. It was envisioned that some messages from "the system" +might not allow the "exterior" multi-line message to finish; the scenario +might go something like this:. + +151- Directory listing follows: +a1pha.p11 +alpha +rfc.runoff +mailbox +010- From Operator: +010 Emergency shutdown in 5 mins. due to hardware probs. +beta.fortran +foo.lisp +151 Directory listing complete. +It has been pointed out to us that: + +a. Messages from "the system" in general cannot be guaranteed to come at +the beginning of a line. + +b. It may be difficult to modify "the system" to preface such messages +with an appropriate FTP reply code. + +Therefore, we propose that, since user-FTP implementations must handle +multi-line replies, system messages "splattered" into the middle of +replies need not be escorted by FTP reply codes. The user-FTP thus need +not detect and handle "nested" FTP replies. + +8. RFC 607 proposes that any data between the last end-of-record marker +of a file and the end-of-file marker be discarded. We agree. The sender +of the data has clearly violated the protocol, and the receiver cannot +divine the sender's original intent. + +9-11. The suggestion that reply codes beginning with the digit "2" be +taken as successful, and all others be taken as failures, severely +restricts use of the available "reply code space". We agree that the +present scheme is disorganized and requires far too much "intelligence" +on the part of a user-ftp automaton. With the present scheme, unless the +automaton's reply-interpretation is table-driven, it is extremely likely +to make a mistake. We feel that the whole reply code strategy should be +redesigned; some of the ideas proposed in RFC 607 could fit in with such +a redesign, but we do not think that Mark's suggestion is the way to go. + + -3- + +12. 000 and 020 are used by the Server to indicate that it has heard and +answered the ICP to socket 3, but cannot accept file transfer commands +yet. 020 was intended to indicate how much of a time delay could be +expected, while 000 was ambiguous on this point. We suggest that the two +be merged to mean "I am here; please wait a specified or unspecified +amount of time"; then, 300 would clearly mean "I am ready; you may now +send me commands". + +13. There is no typographical error here. A TENEX representative +suggested that, rather than give a "fail" reply to a particular request +because the user is not logged in, a server might ask for his account +number (or ask him to log in) and then proceed with the previous request, +which has been held in abeyance. While this may be convenient for a +server, it is not necessary, and certainly ambiguous to hold a command in +abeyance while obtaining an account number. Since any server may spring +this on a user, all user-FTP implementations must be able to cope with +this twist, which adds a good deal of required complication to the +"minimal" user-FTP implementation. We propose that the 331 reply be +eliminated, and that the server forget the requested operation and return +a 4XX reply if an account is needed. + +Jon Postel has remarked that "mail text should follow the same limit as +commands and long 'lines' of mail text have been trouble for some FTP +Servers." We agree. In fact, mail transmitted over the FTP Telnet control +connection has other problems, too: Since FTP is (nominally, at least) +supposed to be usable from TIPs, Multics implemented its standard +character erase and line kill conventions on the control connection for +the convenience of TIP users (it was actually easier to have those +conventions in effect than to turn them off!). Of course, no erase/kill +processing was done on the data connection. The intent of the MAIL +request was to allow users at terminals to access an FTP Server directly +and transmit mail; it was presumed that mail-sending automata which +gathered the mail to be sent into a file would use the MLFL command and +transmit the mail over the data connection. Presumably, long lines would +not be a problem, and, of course, no erase/kill conventions would be in +effect. Well, at least one major system (TENEX) has a mail-sending +automaton which transmits mail over the Telnet control connection using +the MAIL command - even though it has previously gathered the mail into a +file! Line-length considerations could be a severe problem here, and the +fact that the Multics line-kill character is the at-sign (@) caused grief +in reading mail from TENEX users who included their "return address" in +TENEX's SNDMSG syntax, as USERNAME@HOST. We propose that mail-sending +automata be required to use MLFL, rather than MAIL. + + + + + + + + + + + + + + + -4-
\ No newline at end of file |