分享
 
 
 

RFC614 - Response to RFC607: Comments on the File Transfer Protocol

王朝other·作者佚名  2008-05-31
窄屏简体版  字體: |||超大  

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 RFC607, "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 RFC607.

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. RFC607 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 RFC607.

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

RFC542) -- 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. RFC607 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 RFC607 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.

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有