|
1 |
|
2 |
|
3 Network Working Group J. Postel |
|
4 Request for Comments: 959 J. Reynolds |
|
5 ISI |
|
6 Obsoletes RFC: 765 (IEN 149) October 1985 |
|
7 |
|
8 FILE TRANSFER PROTOCOL (FTP) |
|
9 |
|
10 |
|
11 Status of this Memo |
|
12 |
|
13 This memo is the official specification of the File Transfer |
|
14 Protocol (FTP). Distribution of this memo is unlimited. |
|
15 |
|
16 The following new optional commands are included in this edition of |
|
17 the specification: |
|
18 |
|
19 CDUP (Change to Parent Directory), SMNT (Structure Mount), STOU |
|
20 (Store Unique), RMD (Remove Directory), MKD (Make Directory), PWD |
|
21 (Print Directory), and SYST (System). |
|
22 |
|
23 Note that this specification is compatible with the previous edition. |
|
24 |
|
25 1. INTRODUCTION |
|
26 |
|
27 The objectives of FTP are 1) to promote sharing of files (computer |
|
28 programs and/or data), 2) to encourage indirect or implicit (via |
|
29 programs) use of remote computers, 3) to shield a user from |
|
30 variations in file storage systems among hosts, and 4) to transfer |
|
31 data reliably and efficiently. FTP, though usable directly by a user |
|
32 at a terminal, is designed mainly for use by programs. |
|
33 |
|
34 The attempt in this specification is to satisfy the diverse needs of |
|
35 users of maxi-hosts, mini-hosts, personal workstations, and TACs, |
|
36 with a simple, and easily implemented protocol design. |
|
37 |
|
38 This paper assumes knowledge of the Transmission Control Protocol |
|
39 (TCP) [2] and the Telnet Protocol [3]. These documents are contained |
|
40 in the ARPA-Internet protocol handbook [1]. |
|
41 |
|
42 2. OVERVIEW |
|
43 |
|
44 In this section, the history, the terminology, and the FTP model are |
|
45 discussed. The terms defined in this section are only those that |
|
46 have special significance in FTP. Some of the terminology is very |
|
47 specific to the FTP model; some readers may wish to turn to the |
|
48 section on the FTP model while reviewing the terminology. |
|
49 |
|
50 |
|
51 |
|
52 |
|
53 |
|
54 |
|
55 |
|
56 Postel & Reynolds [Page 1] |
|
57 |
|
58 |
|
59 |
|
60 RFC 959 October 1985 |
|
61 File Transfer Protocol |
|
62 |
|
63 |
|
64 2.1. HISTORY |
|
65 |
|
66 FTP has had a long evolution over the years. Appendix III is a |
|
67 chronological compilation of Request for Comments documents |
|
68 relating to FTP. These include the first proposed file transfer |
|
69 mechanisms in 1971 that were developed for implementation on hosts |
|
70 at M.I.T. (RFC 114), plus comments and discussion in RFC 141. |
|
71 |
|
72 RFC 172 provided a user-level oriented protocol for file transfer |
|
73 between host computers (including terminal IMPs). A revision of |
|
74 this as RFC 265, restated FTP for additional review, while RFC 281 |
|
75 suggested further changes. The use of a "Set Data Type" |
|
76 transaction was proposed in RFC 294 in January 1982. |
|
77 |
|
78 RFC 354 obsoleted RFCs 264 and 265. The File Transfer Protocol |
|
79 was now defined as a protocol for file transfer between HOSTs on |
|
80 the ARPANET, with the primary function of FTP defined as |
|
81 transfering files efficiently and reliably among hosts and |
|
82 allowing the convenient use of remote file storage capabilities. |
|
83 RFC 385 further commented on errors, emphasis points, and |
|
84 additions to the protocol, while RFC 414 provided a status report |
|
85 on the working server and user FTPs. RFC 430, issued in 1973, |
|
86 (among other RFCs too numerous to mention) presented further |
|
87 comments on FTP. Finally, an "official" FTP document was |
|
88 published as RFC 454. |
|
89 |
|
90 By July 1973, considerable changes from the last versions of FTP |
|
91 were made, but the general structure remained the same. RFC 542 |
|
92 was published as a new "official" specification to reflect these |
|
93 changes. However, many implementations based on the older |
|
94 specification were not updated. |
|
95 |
|
96 In 1974, RFCs 607 and 614 continued comments on FTP. RFC 624 |
|
97 proposed further design changes and minor modifications. In 1975, |
|
98 RFC 686 entitled, "Leaving Well Enough Alone", discussed the |
|
99 differences between all of the early and later versions of FTP. |
|
100 RFC 691 presented a minor revision of RFC 686, regarding the |
|
101 subject of print files. |
|
102 |
|
103 Motivated by the transition from the NCP to the TCP as the |
|
104 underlying protocol, a phoenix was born out of all of the above |
|
105 efforts in RFC 765 as the specification of FTP for use on TCP. |
|
106 |
|
107 This current edition of the FTP specification is intended to |
|
108 correct some minor documentation errors, to improve the |
|
109 explanation of some protocol features, and to add some new |
|
110 optional commands. |
|
111 |
|
112 |
|
113 Postel & Reynolds [Page 2] |
|
114 |
|
115 |
|
116 |
|
117 RFC 959 October 1985 |
|
118 File Transfer Protocol |
|
119 |
|
120 |
|
121 In particular, the following new optional commands are included in |
|
122 this edition of the specification: |
|
123 |
|
124 CDUP - Change to Parent Directory |
|
125 |
|
126 SMNT - Structure Mount |
|
127 |
|
128 STOU - Store Unique |
|
129 |
|
130 RMD - Remove Directory |
|
131 |
|
132 MKD - Make Directory |
|
133 |
|
134 PWD - Print Directory |
|
135 |
|
136 SYST - System |
|
137 |
|
138 This specification is compatible with the previous edition. A |
|
139 program implemented in conformance to the previous specification |
|
140 should automatically be in conformance to this specification. |
|
141 |
|
142 2.2. TERMINOLOGY |
|
143 |
|
144 ASCII |
|
145 |
|
146 The ASCII character set is as defined in the ARPA-Internet |
|
147 Protocol Handbook. In FTP, ASCII characters are defined to be |
|
148 the lower half of an eight-bit code set (i.e., the most |
|
149 significant bit is zero). |
|
150 |
|
151 access controls |
|
152 |
|
153 Access controls define users' access privileges to the use of a |
|
154 system, and to the files in that system. Access controls are |
|
155 necessary to prevent unauthorized or accidental use of files. |
|
156 It is the prerogative of a server-FTP process to invoke access |
|
157 controls. |
|
158 |
|
159 byte size |
|
160 |
|
161 There are two byte sizes of interest in FTP: the logical byte |
|
162 size of the file, and the transfer byte size used for the |
|
163 transmission of the data. The transfer byte size is always 8 |
|
164 bits. The transfer byte size is not necessarily the byte size |
|
165 in which data is to be stored in a system, nor the logical byte |
|
166 size for interpretation of the structure of the data. |
|
167 |
|
168 |
|
169 |
|
170 Postel & Reynolds [Page 3] |
|
171 |
|
172 |
|
173 |
|
174 RFC 959 October 1985 |
|
175 File Transfer Protocol |
|
176 |
|
177 |
|
178 control connection |
|
179 |
|
180 The communication path between the USER-PI and SERVER-PI for |
|
181 the exchange of commands and replies. This connection follows |
|
182 the Telnet Protocol. |
|
183 |
|
184 data connection |
|
185 |
|
186 A full duplex connection over which data is transferred, in a |
|
187 specified mode and type. The data transferred may be a part of |
|
188 a file, an entire file or a number of files. The path may be |
|
189 between a server-DTP and a user-DTP, or between two |
|
190 server-DTPs. |
|
191 |
|
192 data port |
|
193 |
|
194 The passive data transfer process "listens" on the data port |
|
195 for a connection from the active transfer process in order to |
|
196 open the data connection. |
|
197 |
|
198 DTP |
|
199 |
|
200 The data transfer process establishes and manages the data |
|
201 connection. The DTP can be passive or active. |
|
202 |
|
203 End-of-Line |
|
204 |
|
205 The end-of-line sequence defines the separation of printing |
|
206 lines. The sequence is Carriage Return, followed by Line Feed. |
|
207 |
|
208 EOF |
|
209 |
|
210 The end-of-file condition that defines the end of a file being |
|
211 transferred. |
|
212 |
|
213 EOR |
|
214 |
|
215 The end-of-record condition that defines the end of a record |
|
216 being transferred. |
|
217 |
|
218 error recovery |
|
219 |
|
220 A procedure that allows a user to recover from certain errors |
|
221 such as failure of either host system or transfer process. In |
|
222 FTP, error recovery may involve restarting a file transfer at a |
|
223 given checkpoint. |
|
224 |
|
225 |
|
226 |
|
227 Postel & Reynolds [Page 4] |
|
228 |
|
229 |
|
230 |
|
231 RFC 959 October 1985 |
|
232 File Transfer Protocol |
|
233 |
|
234 |
|
235 FTP commands |
|
236 |
|
237 A set of commands that comprise the control information flowing |
|
238 from the user-FTP to the server-FTP process. |
|
239 |
|
240 file |
|
241 |
|
242 An ordered set of computer data (including programs), of |
|
243 arbitrary length, uniquely identified by a pathname. |
|
244 |
|
245 mode |
|
246 |
|
247 The mode in which data is to be transferred via the data |
|
248 connection. The mode defines the data format during transfer |
|
249 including EOR and EOF. The transfer modes defined in FTP are |
|
250 described in the Section on Transmission Modes. |
|
251 |
|
252 NVT |
|
253 |
|
254 The Network Virtual Terminal as defined in the Telnet Protocol. |
|
255 |
|
256 NVFS |
|
257 |
|
258 The Network Virtual File System. A concept which defines a |
|
259 standard network file system with standard commands and |
|
260 pathname conventions. |
|
261 |
|
262 page |
|
263 |
|
264 A file may be structured as a set of independent parts called |
|
265 pages. FTP supports the transmission of discontinuous files as |
|
266 independent indexed pages. |
|
267 |
|
268 pathname |
|
269 |
|
270 Pathname is defined to be the character string which must be |
|
271 input to a file system by a user in order to identify a file. |
|
272 Pathname normally contains device and/or directory names, and |
|
273 file name specification. FTP does not yet specify a standard |
|
274 pathname convention. Each user must follow the file naming |
|
275 conventions of the file systems involved in the transfer. |
|
276 |
|
277 PI |
|
278 |
|
279 The protocol interpreter. The user and server sides of the |
|
280 protocol have distinct roles implemented in a user-PI and a |
|
281 server-PI. |
|
282 |
|
283 |
|
284 Postel & Reynolds [Page 5] |
|
285 |
|
286 |
|
287 |
|
288 RFC 959 October 1985 |
|
289 File Transfer Protocol |
|
290 |
|
291 |
|
292 record |
|
293 |
|
294 A sequential file may be structured as a number of contiguous |
|
295 parts called records. Record structures are supported by FTP |
|
296 but a file need not have record structure. |
|
297 |
|
298 reply |
|
299 |
|
300 A reply is an acknowledgment (positive or negative) sent from |
|
301 server to user via the control connection in response to FTP |
|
302 commands. The general form of a reply is a completion code |
|
303 (including error codes) followed by a text string. The codes |
|
304 are for use by programs and the text is usually intended for |
|
305 human users. |
|
306 |
|
307 server-DTP |
|
308 |
|
309 The data transfer process, in its normal "active" state, |
|
310 establishes the data connection with the "listening" data port. |
|
311 It sets up parameters for transfer and storage, and transfers |
|
312 data on command from its PI. The DTP can be placed in a |
|
313 "passive" state to listen for, rather than initiate a |
|
314 connection on the data port. |
|
315 |
|
316 server-FTP process |
|
317 |
|
318 A process or set of processes which perform the function of |
|
319 file transfer in cooperation with a user-FTP process and, |
|
320 possibly, another server. The functions consist of a protocol |
|
321 interpreter (PI) and a data transfer process (DTP). |
|
322 |
|
323 server-PI |
|
324 |
|
325 The server protocol interpreter "listens" on Port L for a |
|
326 connection from a user-PI and establishes a control |
|
327 communication connection. It receives standard FTP commands |
|
328 from the user-PI, sends replies, and governs the server-DTP. |
|
329 |
|
330 type |
|
331 |
|
332 The data representation type used for data transfer and |
|
333 storage. Type implies certain transformations between the time |
|
334 of data storage and data transfer. The representation types |
|
335 defined in FTP are described in the Section on Establishing |
|
336 Data Connections. |
|
337 |
|
338 |
|
339 |
|
340 |
|
341 Postel & Reynolds [Page 6] |
|
342 |
|
343 |
|
344 |
|
345 RFC 959 October 1985 |
|
346 File Transfer Protocol |
|
347 |
|
348 |
|
349 user |
|
350 |
|
351 A person or a process on behalf of a person wishing to obtain |
|
352 file transfer service. The human user may interact directly |
|
353 with a server-FTP process, but use of a user-FTP process is |
|
354 preferred since the protocol design is weighted towards |
|
355 automata. |
|
356 |
|
357 user-DTP |
|
358 |
|
359 The data transfer process "listens" on the data port for a |
|
360 connection from a server-FTP process. If two servers are |
|
361 transferring data between them, the user-DTP is inactive. |
|
362 |
|
363 user-FTP process |
|
364 |
|
365 A set of functions including a protocol interpreter, a data |
|
366 transfer process and a user interface which together perform |
|
367 the function of file transfer in cooperation with one or more |
|
368 server-FTP processes. The user interface allows a local |
|
369 language to be used in the command-reply dialogue with the |
|
370 user. |
|
371 |
|
372 user-PI |
|
373 |
|
374 The user protocol interpreter initiates the control connection |
|
375 from its port U to the server-FTP process, initiates FTP |
|
376 commands, and governs the user-DTP if that process is part of |
|
377 the file transfer. |
|
378 |
|
379 |
|
380 |
|
381 |
|
382 |
|
383 |
|
384 |
|
385 |
|
386 |
|
387 |
|
388 |
|
389 |
|
390 |
|
391 |
|
392 |
|
393 |
|
394 |
|
395 |
|
396 |
|
397 |
|
398 Postel & Reynolds [Page 7] |
|
399 |
|
400 |
|
401 |
|
402 RFC 959 October 1985 |
|
403 File Transfer Protocol |
|
404 |
|
405 |
|
406 2.3. THE FTP MODEL |
|
407 |
|
408 With the above definitions in mind, the following model (shown in |
|
409 Figure 1) may be diagrammed for an FTP service. |
|
410 |
|
411 ------------- |
|
412 |/---------\| |
|
413 || User || -------- |
|
414 ||Interface|<--->| User | |
|
415 |\----^----/| -------- |
|
416 ---------- | | | |
|
417 |/------\| FTP Commands |/----V----\| |
|
418 ||Server|<---------------->| User || |
|
419 || PI || FTP Replies || PI || |
|
420 |\--^---/| |\----^----/| |
|
421 | | | | | | |
|
422 -------- |/--V---\| Data |/----V----\| -------- |
|
423 | File |<--->|Server|<---------------->| User |<--->| File | |
|
424 |System| || DTP || Connection || DTP || |System| |
|
425 -------- |\------/| |\---------/| -------- |
|
426 ---------- ------------- |
|
427 |
|
428 Server-FTP USER-FTP |
|
429 |
|
430 NOTES: 1. The data connection may be used in either direction. |
|
431 2. The data connection need not exist all of the time. |
|
432 |
|
433 Figure 1 Model for FTP Use |
|
434 |
|
435 In the model described in Figure 1, the user-protocol interpreter |
|
436 initiates the control connection. The control connection follows |
|
437 the Telnet protocol. At the initiation of the user, standard FTP |
|
438 commands are generated by the user-PI and transmitted to the |
|
439 server process via the control connection. (The user may |
|
440 establish a direct control connection to the server-FTP, from a |
|
441 TAC terminal for example, and generate standard FTP commands |
|
442 independently, bypassing the user-FTP process.) Standard replies |
|
443 are sent from the server-PI to the user-PI over the control |
|
444 connection in response to the commands. |
|
445 |
|
446 The FTP commands specify the parameters for the data connection |
|
447 (data port, transfer mode, representation type, and structure) and |
|
448 the nature of file system operation (store, retrieve, append, |
|
449 delete, etc.). The user-DTP or its designate should "listen" on |
|
450 the specified data port, and the server initiate the data |
|
451 connection and data transfer in accordance with the specified |
|
452 parameters. It should be noted that the data port need not be in |
|
453 |
|
454 |
|
455 Postel & Reynolds [Page 8] |
|
456 |
|
457 |
|
458 |
|
459 RFC 959 October 1985 |
|
460 File Transfer Protocol |
|
461 |
|
462 |
|
463 the same host that initiates the FTP commands via the control |
|
464 connection, but the user or the user-FTP process must ensure a |
|
465 "listen" on the specified data port. It ought to also be noted |
|
466 that the data connection may be used for simultaneous sending and |
|
467 receiving. |
|
468 |
|
469 In another situation a user might wish to transfer files between |
|
470 two hosts, neither of which is a local host. The user sets up |
|
471 control connections to the two servers and then arranges for a |
|
472 data connection between them. In this manner, control information |
|
473 is passed to the user-PI but data is transferred between the |
|
474 server data transfer processes. Following is a model of this |
|
475 server-server interaction. |
|
476 |
|
477 |
|
478 Control ------------ Control |
|
479 ---------->| User-FTP |<----------- |
|
480 | | User-PI | | |
|
481 | | "C" | | |
|
482 V ------------ V |
|
483 -------------- -------------- |
|
484 | Server-FTP | Data Connection | Server-FTP | |
|
485 | "A" |<---------------------->| "B" | |
|
486 -------------- Port (A) Port (B) -------------- |
|
487 |
|
488 |
|
489 Figure 2 |
|
490 |
|
491 The protocol requires that the control connections be open while |
|
492 data transfer is in progress. It is the responsibility of the |
|
493 user to request the closing of the control connections when |
|
494 finished using the FTP service, while it is the server who takes |
|
495 the action. The server may abort data transfer if the control |
|
496 connections are closed without command. |
|
497 |
|
498 The Relationship between FTP and Telnet: |
|
499 |
|
500 The FTP uses the Telnet protocol on the control connection. |
|
501 This can be achieved in two ways: first, the user-PI or the |
|
502 server-PI may implement the rules of the Telnet Protocol |
|
503 directly in their own procedures; or, second, the user-PI or |
|
504 the server-PI may make use of the existing Telnet module in the |
|
505 system. |
|
506 |
|
507 Ease of implementaion, sharing code, and modular programming |
|
508 argue for the second approach. Efficiency and independence |
|
509 |
|
510 |
|
511 |
|
512 Postel & Reynolds [Page 9] |
|
513 |
|
514 |
|
515 |
|
516 RFC 959 October 1985 |
|
517 File Transfer Protocol |
|
518 |
|
519 |
|
520 argue for the first approach. In practice, FTP relies on very |
|
521 little of the Telnet Protocol, so the first approach does not |
|
522 necessarily involve a large amount of code. |
|
523 |
|
524 3. DATA TRANSFER FUNCTIONS |
|
525 |
|
526 Files are transferred only via the data connection. The control |
|
527 connection is used for the transfer of commands, which describe the |
|
528 functions to be performed, and the replies to these commands (see the |
|
529 Section on FTP Replies). Several commands are concerned with the |
|
530 transfer of data between hosts. These data transfer commands include |
|
531 the MODE command which specify how the bits of the data are to be |
|
532 transmitted, and the STRUcture and TYPE commands, which are used to |
|
533 define the way in which the data are to be represented. The |
|
534 transmission and representation are basically independent but the |
|
535 "Stream" transmission mode is dependent on the file structure |
|
536 attribute and if "Compressed" transmission mode is used, the nature |
|
537 of the filler byte depends on the representation type. |
|
538 |
|
539 3.1. DATA REPRESENTATION AND STORAGE |
|
540 |
|
541 Data is transferred from a storage device in the sending host to a |
|
542 storage device in the receiving host. Often it is necessary to |
|
543 perform certain transformations on the data because data storage |
|
544 representations in the two systems are different. For example, |
|
545 NVT-ASCII has different data storage representations in different |
|
546 systems. DEC TOPS-20s's generally store NVT-ASCII as five 7-bit |
|
547 ASCII characters, left-justified in a 36-bit word. IBM Mainframe's |
|
548 store NVT-ASCII as 8-bit EBCDIC codes. Multics stores NVT-ASCII |
|
549 as four 9-bit characters in a 36-bit word. It is desirable to |
|
550 convert characters into the standard NVT-ASCII representation when |
|
551 transmitting text between dissimilar systems. The sending and |
|
552 receiving sites would have to perform the necessary |
|
553 transformations between the standard representation and their |
|
554 internal representations. |
|
555 |
|
556 A different problem in representation arises when transmitting |
|
557 binary data (not character codes) between host systems with |
|
558 different word lengths. It is not always clear how the sender |
|
559 should send data, and the receiver store it. For example, when |
|
560 transmitting 32-bit bytes from a 32-bit word-length system to a |
|
561 36-bit word-length system, it may be desirable (for reasons of |
|
562 efficiency and usefulness) to store the 32-bit bytes |
|
563 right-justified in a 36-bit word in the latter system. In any |
|
564 case, the user should have the option of specifying data |
|
565 representation and transformation functions. It should be noted |
|
566 |
|
567 |
|
568 |
|
569 Postel & Reynolds [Page 10] |
|
570 |
|
571 |
|
572 |
|
573 RFC 959 October 1985 |
|
574 File Transfer Protocol |
|
575 |
|
576 |
|
577 that FTP provides for very limited data type representations. |
|
578 Transformations desired beyond this limited capability should be |
|
579 performed by the user directly. |
|
580 |
|
581 3.1.1. DATA TYPES |
|
582 |
|
583 Data representations are handled in FTP by a user specifying a |
|
584 representation type. This type may implicitly (as in ASCII or |
|
585 EBCDIC) or explicitly (as in Local byte) define a byte size for |
|
586 interpretation which is referred to as the "logical byte size." |
|
587 Note that this has nothing to do with the byte size used for |
|
588 transmission over the data connection, called the "transfer |
|
589 byte size", and the two should not be confused. For example, |
|
590 NVT-ASCII has a logical byte size of 8 bits. If the type is |
|
591 Local byte, then the TYPE command has an obligatory second |
|
592 parameter specifying the logical byte size. The transfer byte |
|
593 size is always 8 bits. |
|
594 |
|
595 3.1.1.1. ASCII TYPE |
|
596 |
|
597 This is the default type and must be accepted by all FTP |
|
598 implementations. It is intended primarily for the transfer |
|
599 of text files, except when both hosts would find the EBCDIC |
|
600 type more convenient. |
|
601 |
|
602 The sender converts the data from an internal character |
|
603 representation to the standard 8-bit NVT-ASCII |
|
604 representation (see the Telnet specification). The receiver |
|
605 will convert the data from the standard form to his own |
|
606 internal form. |
|
607 |
|
608 In accordance with the NVT standard, the <CRLF> sequence |
|
609 should be used where necessary to denote the end of a line |
|
610 of text. (See the discussion of file structure at the end |
|
611 of the Section on Data Representation and Storage.) |
|
612 |
|
613 Using the standard NVT-ASCII representation means that data |
|
614 must be interpreted as 8-bit bytes. |
|
615 |
|
616 The Format parameter for ASCII and EBCDIC types is discussed |
|
617 below. |
|
618 |
|
619 |
|
620 |
|
621 |
|
622 |
|
623 |
|
624 |
|
625 |
|
626 Postel & Reynolds [Page 11] |
|
627 |
|
628 |
|
629 |
|
630 RFC 959 October 1985 |
|
631 File Transfer Protocol |
|
632 |
|
633 |
|
634 3.1.1.2. EBCDIC TYPE |
|
635 |
|
636 This type is intended for efficient transfer between hosts |
|
637 which use EBCDIC for their internal character |
|
638 representation. |
|
639 |
|
640 For transmission, the data are represented as 8-bit EBCDIC |
|
641 characters. The character code is the only difference |
|
642 between the functional specifications of EBCDIC and ASCII |
|
643 types. |
|
644 |
|
645 End-of-line (as opposed to end-of-record--see the discussion |
|
646 of structure) will probably be rarely used with EBCDIC type |
|
647 for purposes of denoting structure, but where it is |
|
648 necessary the <NL> character should be used. |
|
649 |
|
650 3.1.1.3. IMAGE TYPE |
|
651 |
|
652 The data are sent as contiguous bits which, for transfer, |
|
653 are packed into the 8-bit transfer bytes. The receiving |
|
654 site must store the data as contiguous bits. The structure |
|
655 of the storage system might necessitate the padding of the |
|
656 file (or of each record, for a record-structured file) to |
|
657 some convenient boundary (byte, word or block). This |
|
658 padding, which must be all zeros, may occur only at the end |
|
659 of the file (or at the end of each record) and there must be |
|
660 a way of identifying the padding bits so that they may be |
|
661 stripped off if the file is retrieved. The padding |
|
662 transformation should be well publicized to enable a user to |
|
663 process a file at the storage site. |
|
664 |
|
665 Image type is intended for the efficient storage and |
|
666 retrieval of files and for the transfer of binary data. It |
|
667 is recommended that this type be accepted by all FTP |
|
668 implementations. |
|
669 |
|
670 3.1.1.4. LOCAL TYPE |
|
671 |
|
672 The data is transferred in logical bytes of the size |
|
673 specified by the obligatory second parameter, Byte size. |
|
674 The value of Byte size must be a decimal integer; there is |
|
675 no default value. The logical byte size is not necessarily |
|
676 the same as the transfer byte size. If there is a |
|
677 difference in byte sizes, then the logical bytes should be |
|
678 packed contiguously, disregarding transfer byte boundaries |
|
679 and with any necessary padding at the end. |
|
680 |
|
681 |
|
682 |
|
683 Postel & Reynolds [Page 12] |
|
684 |
|
685 |
|
686 |
|
687 RFC 959 October 1985 |
|
688 File Transfer Protocol |
|
689 |
|
690 |
|
691 When the data reaches the receiving host, it will be |
|
692 transformed in a manner dependent on the logical byte size |
|
693 and the particular host. This transformation must be |
|
694 invertible (i.e., an identical file can be retrieved if the |
|
695 same parameters are used) and should be well publicized by |
|
696 the FTP implementors. |
|
697 |
|
698 For example, a user sending 36-bit floating-point numbers to |
|
699 a host with a 32-bit word could send that data as Local byte |
|
700 with a logical byte size of 36. The receiving host would |
|
701 then be expected to store the logical bytes so that they |
|
702 could be easily manipulated; in this example putting the |
|
703 36-bit logical bytes into 64-bit double words should |
|
704 suffice. |
|
705 |
|
706 In another example, a pair of hosts with a 36-bit word size |
|
707 may send data to one another in words by using TYPE L 36. |
|
708 The data would be sent in the 8-bit transmission bytes |
|
709 packed so that 9 transmission bytes carried two host words. |
|
710 |
|
711 3.1.1.5. FORMAT CONTROL |
|
712 |
|
713 The types ASCII and EBCDIC also take a second (optional) |
|
714 parameter; this is to indicate what kind of vertical format |
|
715 control, if any, is associated with a file. The following |
|
716 data representation types are defined in FTP: |
|
717 |
|
718 A character file may be transferred to a host for one of |
|
719 three purposes: for printing, for storage and later |
|
720 retrieval, or for processing. If a file is sent for |
|
721 printing, the receiving host must know how the vertical |
|
722 format control is represented. In the second case, it must |
|
723 be possible to store a file at a host and then retrieve it |
|
724 later in exactly the same form. Finally, it should be |
|
725 possible to move a file from one host to another and process |
|
726 the file at the second host without undue trouble. A single |
|
727 ASCII or EBCDIC format does not satisfy all these |
|
728 conditions. Therefore, these types have a second parameter |
|
729 specifying one of the following three formats: |
|
730 |
|
731 3.1.1.5.1. NON PRINT |
|
732 |
|
733 This is the default format to be used if the second |
|
734 (format) parameter is omitted. Non-print format must be |
|
735 accepted by all FTP implementations. |
|
736 |
|
737 |
|
738 |
|
739 |
|
740 Postel & Reynolds [Page 13] |
|
741 |
|
742 |
|
743 |
|
744 RFC 959 October 1985 |
|
745 File Transfer Protocol |
|
746 |
|
747 |
|
748 The file need contain no vertical format information. If |
|
749 it is passed to a printer process, this process may |
|
750 assume standard values for spacing and margins. |
|
751 |
|
752 Normally, this format will be used with files destined |
|
753 for processing or just storage. |
|
754 |
|
755 3.1.1.5.2. TELNET FORMAT CONTROLS |
|
756 |
|
757 The file contains ASCII/EBCDIC vertical format controls |
|
758 (i.e., <CR>, <LF>, <NL>, <VT>, <FF>) which the printer |
|
759 process will interpret appropriately. <CRLF>, in exactly |
|
760 this sequence, also denotes end-of-line. |
|
761 |
|
762 3.1.1.5.2. CARRIAGE CONTROL (ASA) |
|
763 |
|
764 The file contains ASA (FORTRAN) vertical format control |
|
765 characters. (See RFC 740 Appendix C; and Communications |
|
766 of the ACM, Vol. 7, No. 10, p. 606, October 1964.) In a |
|
767 line or a record formatted according to the ASA Standard, |
|
768 the first character is not to be printed. Instead, it |
|
769 should be used to determine the vertical movement of the |
|
770 paper which should take place before the rest of the |
|
771 record is printed. |
|
772 |
|
773 The ASA Standard specifies the following control |
|
774 characters: |
|
775 |
|
776 Character Vertical Spacing |
|
777 |
|
778 blank Move paper up one line |
|
779 0 Move paper up two lines |
|
780 1 Move paper to top of next page |
|
781 + No movement, i.e., overprint |
|
782 |
|
783 Clearly there must be some way for a printer process to |
|
784 distinguish the end of the structural entity. If a file |
|
785 has record structure (see below) this is no problem; |
|
786 records will be explicitly marked during transfer and |
|
787 storage. If the file has no record structure, the <CRLF> |
|
788 end-of-line sequence is used to separate printing lines, |
|
789 but these format effectors are overridden by the ASA |
|
790 controls. |
|
791 |
|
792 |
|
793 |
|
794 |
|
795 |
|
796 |
|
797 Postel & Reynolds [Page 14] |
|
798 |
|
799 |
|
800 |
|
801 RFC 959 October 1985 |
|
802 File Transfer Protocol |
|
803 |
|
804 |
|
805 3.1.2. DATA STRUCTURES |
|
806 |
|
807 In addition to different representation types, FTP allows the |
|
808 structure of a file to be specified. Three file structures are |
|
809 defined in FTP: |
|
810 |
|
811 file-structure, where there is no internal structure and |
|
812 the file is considered to be a |
|
813 continuous sequence of data bytes, |
|
814 |
|
815 record-structure, where the file is made up of sequential |
|
816 records, |
|
817 |
|
818 and page-structure, where the file is made up of independent |
|
819 indexed pages. |
|
820 |
|
821 File-structure is the default to be assumed if the STRUcture |
|
822 command has not been used but both file and record structures |
|
823 must be accepted for "text" files (i.e., files with TYPE ASCII |
|
824 or EBCDIC) by all FTP implementations. The structure of a file |
|
825 will affect both the transfer mode of a file (see the Section |
|
826 on Transmission Modes) and the interpretation and storage of |
|
827 the file. |
|
828 |
|
829 The "natural" structure of a file will depend on which host |
|
830 stores the file. A source-code file will usually be stored on |
|
831 an IBM Mainframe in fixed length records but on a DEC TOPS-20 |
|
832 as a stream of characters partitioned into lines, for example |
|
833 by <CRLF>. If the transfer of files between such disparate |
|
834 sites is to be useful, there must be some way for one site to |
|
835 recognize the other's assumptions about the file. |
|
836 |
|
837 With some sites being naturally file-oriented and others |
|
838 naturally record-oriented there may be problems if a file with |
|
839 one structure is sent to a host oriented to the other. If a |
|
840 text file is sent with record-structure to a host which is file |
|
841 oriented, then that host should apply an internal |
|
842 transformation to the file based on the record structure. |
|
843 Obviously, this transformation should be useful, but it must |
|
844 also be invertible so that an identical file may be retrieved |
|
845 using record structure. |
|
846 |
|
847 In the case of a file being sent with file-structure to a |
|
848 record-oriented host, there exists the question of what |
|
849 criteria the host should use to divide the file into records |
|
850 which can be processed locally. If this division is necessary, |
|
851 the FTP implementation should use the end-of-line sequence, |
|
852 |
|
853 |
|
854 Postel & Reynolds [Page 15] |
|
855 |
|
856 |
|
857 |
|
858 RFC 959 October 1985 |
|
859 File Transfer Protocol |
|
860 |
|
861 |
|
862 <CRLF> for ASCII, or <NL> for EBCDIC text files, as the |
|
863 delimiter. If an FTP implementation adopts this technique, it |
|
864 must be prepared to reverse the transformation if the file is |
|
865 retrieved with file-structure. |
|
866 |
|
867 3.1.2.1. FILE STRUCTURE |
|
868 |
|
869 File structure is the default to be assumed if the STRUcture |
|
870 command has not been used. |
|
871 |
|
872 In file-structure there is no internal structure and the |
|
873 file is considered to be a continuous sequence of data |
|
874 bytes. |
|
875 |
|
876 3.1.2.2. RECORD STRUCTURE |
|
877 |
|
878 Record structures must be accepted for "text" files (i.e., |
|
879 files with TYPE ASCII or EBCDIC) by all FTP implementations. |
|
880 |
|
881 In record-structure the file is made up of sequential |
|
882 records. |
|
883 |
|
884 3.1.2.3. PAGE STRUCTURE |
|
885 |
|
886 To transmit files that are discontinuous, FTP defines a page |
|
887 structure. Files of this type are sometimes known as |
|
888 "random access files" or even as "holey files". In these |
|
889 files there is sometimes other information associated with |
|
890 the file as a whole (e.g., a file descriptor), or with a |
|
891 section of the file (e.g., page access controls), or both. |
|
892 In FTP, the sections of the file are called pages. |
|
893 |
|
894 To provide for various page sizes and associated |
|
895 information, each page is sent with a page header. The page |
|
896 header has the following defined fields: |
|
897 |
|
898 Header Length |
|
899 |
|
900 The number of logical bytes in the page header |
|
901 including this byte. The minimum header length is 4. |
|
902 |
|
903 Page Index |
|
904 |
|
905 The logical page number of this section of the file. |
|
906 This is not the transmission sequence number of this |
|
907 page, but the index used to identify this page of the |
|
908 file. |
|
909 |
|
910 |
|
911 Postel & Reynolds [Page 16] |
|
912 |
|
913 |
|
914 |
|
915 RFC 959 October 1985 |
|
916 File Transfer Protocol |
|
917 |
|
918 |
|
919 Data Length |
|
920 |
|
921 The number of logical bytes in the page data. The |
|
922 minimum data length is 0. |
|
923 |
|
924 Page Type |
|
925 |
|
926 The type of page this is. The following page types |
|
927 are defined: |
|
928 |
|
929 0 = Last Page |
|
930 |
|
931 This is used to indicate the end of a paged |
|
932 structured transmission. The header length must |
|
933 be 4, and the data length must be 0. |
|
934 |
|
935 1 = Simple Page |
|
936 |
|
937 This is the normal type for simple paged files |
|
938 with no page level associated control |
|
939 information. The header length must be 4. |
|
940 |
|
941 2 = Descriptor Page |
|
942 |
|
943 This type is used to transmit the descriptive |
|
944 information for the file as a whole. |
|
945 |
|
946 3 = Access Controlled Page |
|
947 |
|
948 This type includes an additional header field |
|
949 for paged files with page level access control |
|
950 information. The header length must be 5. |
|
951 |
|
952 Optional Fields |
|
953 |
|
954 Further header fields may be used to supply per page |
|
955 control information, for example, per page access |
|
956 control. |
|
957 |
|
958 All fields are one logical byte in length. The logical byte |
|
959 size is specified by the TYPE command. See Appendix I for |
|
960 further details and a specific case at the page structure. |
|
961 |
|
962 A note of caution about parameters: a file must be stored and |
|
963 retrieved with the same parameters if the retrieved version is to |
|
964 |
|
965 |
|
966 |
|
967 |
|
968 Postel & Reynolds [Page 17] |
|
969 |
|
970 |
|
971 |
|
972 RFC 959 October 1985 |
|
973 File Transfer Protocol |
|
974 |
|
975 |
|
976 be identical to the version originally transmitted. Conversely, |
|
977 FTP implementations must return a file identical to the original |
|
978 if the parameters used to store and retrieve a file are the same. |
|
979 |
|
980 3.2. ESTABLISHING DATA CONNECTIONS |
|
981 |
|
982 The mechanics of transferring data consists of setting up the data |
|
983 connection to the appropriate ports and choosing the parameters |
|
984 for transfer. Both the user and the server-DTPs have a default |
|
985 data port. The user-process default data port is the same as the |
|
986 control connection port (i.e., U). The server-process default |
|
987 data port is the port adjacent to the control connection port |
|
988 (i.e., L-1). |
|
989 |
|
990 The transfer byte size is 8-bit bytes. This byte size is relevant |
|
991 only for the actual transfer of the data; it has no bearing on |
|
992 representation of the data within a host's file system. |
|
993 |
|
994 The passive data transfer process (this may be a user-DTP or a |
|
995 second server-DTP) shall "listen" on the data port prior to |
|
996 sending a transfer request command. The FTP request command |
|
997 determines the direction of the data transfer. The server, upon |
|
998 receiving the transfer request, will initiate the data connection |
|
999 to the port. When the connection is established, the data |
|
1000 transfer begins between DTP's, and the server-PI sends a |
|
1001 confirming reply to the user-PI. |
|
1002 |
|
1003 Every FTP implementation must support the use of the default data |
|
1004 ports, and only the USER-PI can initiate a change to non-default |
|
1005 ports. |
|
1006 |
|
1007 It is possible for the user to specify an alternate data port by |
|
1008 use of the PORT command. The user may want a file dumped on a TAC |
|
1009 line printer or retrieved from a third party host. In the latter |
|
1010 case, the user-PI sets up control connections with both |
|
1011 server-PI's. One server is then told (by an FTP command) to |
|
1012 "listen" for a connection which the other will initiate. The |
|
1013 user-PI sends one server-PI a PORT command indicating the data |
|
1014 port of the other. Finally, both are sent the appropriate |
|
1015 transfer commands. The exact sequence of commands and replies |
|
1016 sent between the user-controller and the servers is defined in the |
|
1017 Section on FTP Replies. |
|
1018 |
|
1019 In general, it is the server's responsibility to maintain the data |
|
1020 connection--to initiate it and to close it. The exception to this |
|
1021 |
|
1022 |
|
1023 |
|
1024 |
|
1025 Postel & Reynolds [Page 18] |
|
1026 |
|
1027 |
|
1028 |
|
1029 RFC 959 October 1985 |
|
1030 File Transfer Protocol |
|
1031 |
|
1032 |
|
1033 is when the user-DTP is sending the data in a transfer mode that |
|
1034 requires the connection to be closed to indicate EOF. The server |
|
1035 MUST close the data connection under the following conditions: |
|
1036 |
|
1037 1. The server has completed sending data in a transfer mode |
|
1038 that requires a close to indicate EOF. |
|
1039 |
|
1040 2. The server receives an ABORT command from the user. |
|
1041 |
|
1042 3. The port specification is changed by a command from the |
|
1043 user. |
|
1044 |
|
1045 4. The control connection is closed legally or otherwise. |
|
1046 |
|
1047 5. An irrecoverable error condition occurs. |
|
1048 |
|
1049 Otherwise the close is a server option, the exercise of which the |
|
1050 server must indicate to the user-process by either a 250 or 226 |
|
1051 reply only. |
|
1052 |
|
1053 3.3. DATA CONNECTION MANAGEMENT |
|
1054 |
|
1055 Default Data Connection Ports: All FTP implementations must |
|
1056 support use of the default data connection ports, and only the |
|
1057 User-PI may initiate the use of non-default ports. |
|
1058 |
|
1059 Negotiating Non-Default Data Ports: The User-PI may specify a |
|
1060 non-default user side data port with the PORT command. The |
|
1061 User-PI may request the server side to identify a non-default |
|
1062 server side data port with the PASV command. Since a connection |
|
1063 is defined by the pair of addresses, either of these actions is |
|
1064 enough to get a different data connection, still it is permitted |
|
1065 to do both commands to use new ports on both ends of the data |
|
1066 connection. |
|
1067 |
|
1068 Reuse of the Data Connection: When using the stream mode of data |
|
1069 transfer the end of the file must be indicated by closing the |
|
1070 connection. This causes a problem if multiple files are to be |
|
1071 transfered in the session, due to need for TCP to hold the |
|
1072 connection record for a time out period to guarantee the reliable |
|
1073 communication. Thus the connection can not be reopened at once. |
|
1074 |
|
1075 There are two solutions to this problem. The first is to |
|
1076 negotiate a non-default port. The second is to use another |
|
1077 transfer mode. |
|
1078 |
|
1079 A comment on transfer modes. The stream transfer mode is |
|
1080 |
|
1081 |
|
1082 Postel & Reynolds [Page 19] |
|
1083 |
|
1084 |
|
1085 |
|
1086 RFC 959 October 1985 |
|
1087 File Transfer Protocol |
|
1088 |
|
1089 |
|
1090 inherently unreliable, since one can not determine if the |
|
1091 connection closed prematurely or not. The other transfer modes |
|
1092 (Block, Compressed) do not close the connection to indicate the |
|
1093 end of file. They have enough FTP encoding that the data |
|
1094 connection can be parsed to determine the end of the file. |
|
1095 Thus using these modes one can leave the data connection open |
|
1096 for multiple file transfers. |
|
1097 |
|
1098 3.4. TRANSMISSION MODES |
|
1099 |
|
1100 The next consideration in transferring data is choosing the |
|
1101 appropriate transmission mode. There are three modes: one which |
|
1102 formats the data and allows for restart procedures; one which also |
|
1103 compresses the data for efficient transfer; and one which passes |
|
1104 the data with little or no processing. In this last case the mode |
|
1105 interacts with the structure attribute to determine the type of |
|
1106 processing. In the compressed mode, the representation type |
|
1107 determines the filler byte. |
|
1108 |
|
1109 All data transfers must be completed with an end-of-file (EOF) |
|
1110 which may be explicitly stated or implied by the closing of the |
|
1111 data connection. For files with record structure, all the |
|
1112 end-of-record markers (EOR) are explicit, including the final one. |
|
1113 For files transmitted in page structure a "last-page" page type is |
|
1114 used. |
|
1115 |
|
1116 NOTE: In the rest of this section, byte means "transfer byte" |
|
1117 except where explicitly stated otherwise. |
|
1118 |
|
1119 For the purpose of standardized transfer, the sending host will |
|
1120 translate its internal end of line or end of record denotation |
|
1121 into the representation prescribed by the transfer mode and file |
|
1122 structure, and the receiving host will perform the inverse |
|
1123 translation to its internal denotation. An IBM Mainframe record |
|
1124 count field may not be recognized at another host, so the |
|
1125 end-of-record information may be transferred as a two byte control |
|
1126 code in Stream mode or as a flagged bit in a Block or Compressed |
|
1127 mode descriptor. End-of-line in an ASCII or EBCDIC file with no |
|
1128 record structure should be indicated by <CRLF> or <NL>, |
|
1129 respectively. Since these transformations imply extra work for |
|
1130 some systems, identical systems transferring non-record structured |
|
1131 text files might wish to use a binary representation and stream |
|
1132 mode for the transfer. |
|
1133 |
|
1134 |
|
1135 |
|
1136 |
|
1137 |
|
1138 |
|
1139 Postel & Reynolds [Page 20] |
|
1140 |
|
1141 |
|
1142 |
|
1143 RFC 959 October 1985 |
|
1144 File Transfer Protocol |
|
1145 |
|
1146 |
|
1147 The following transmission modes are defined in FTP: |
|
1148 |
|
1149 3.4.1. STREAM MODE |
|
1150 |
|
1151 The data is transmitted as a stream of bytes. There is no |
|
1152 restriction on the representation type used; record structures |
|
1153 are allowed. |
|
1154 |
|
1155 In a record structured file EOR and EOF will each be indicated |
|
1156 by a two-byte control code. The first byte of the control code |
|
1157 will be all ones, the escape character. The second byte will |
|
1158 have the low order bit on and zeros elsewhere for EOR and the |
|
1159 second low order bit on for EOF; that is, the byte will have |
|
1160 value 1 for EOR and value 2 for EOF. EOR and EOF may be |
|
1161 indicated together on the last byte transmitted by turning both |
|
1162 low order bits on (i.e., the value 3). If a byte of all ones |
|
1163 was intended to be sent as data, it should be repeated in the |
|
1164 second byte of the control code. |
|
1165 |
|
1166 If the structure is a file structure, the EOF is indicated by |
|
1167 the sending host closing the data connection and all bytes are |
|
1168 data bytes. |
|
1169 |
|
1170 3.4.2. BLOCK MODE |
|
1171 |
|
1172 The file is transmitted as a series of data blocks preceded by |
|
1173 one or more header bytes. The header bytes contain a count |
|
1174 field, and descriptor code. The count field indicates the |
|
1175 total length of the data block in bytes, thus marking the |
|
1176 beginning of the next data block (there are no filler bits). |
|
1177 The descriptor code defines: last block in the file (EOF) last |
|
1178 block in the record (EOR), restart marker (see the Section on |
|
1179 Error Recovery and Restart) or suspect data (i.e., the data |
|
1180 being transferred is suspected of errors and is not reliable). |
|
1181 This last code is NOT intended for error control within FTP. |
|
1182 It is motivated by the desire of sites exchanging certain types |
|
1183 of data (e.g., seismic or weather data) to send and receive all |
|
1184 the data despite local errors (such as "magnetic tape read |
|
1185 errors"), but to indicate in the transmission that certain |
|
1186 portions are suspect). Record structures are allowed in this |
|
1187 mode, and any representation type may be used. |
|
1188 |
|
1189 The header consists of the three bytes. Of the 24 bits of |
|
1190 header information, the 16 low order bits shall represent byte |
|
1191 count, and the 8 high order bits shall represent descriptor |
|
1192 codes as shown below. |
|
1193 |
|
1194 |
|
1195 |
|
1196 Postel & Reynolds [Page 21] |
|
1197 |
|
1198 |
|
1199 |
|
1200 RFC 959 October 1985 |
|
1201 File Transfer Protocol |
|
1202 |
|
1203 |
|
1204 Block Header |
|
1205 |
|
1206 +----------------+----------------+----------------+ |
|
1207 | Descriptor | Byte Count | |
|
1208 | 8 bits | 16 bits | |
|
1209 +----------------+----------------+----------------+ |
|
1210 |
|
1211 |
|
1212 The descriptor codes are indicated by bit flags in the |
|
1213 descriptor byte. Four codes have been assigned, where each |
|
1214 code number is the decimal value of the corresponding bit in |
|
1215 the byte. |
|
1216 |
|
1217 Code Meaning |
|
1218 |
|
1219 128 End of data block is EOR |
|
1220 64 End of data block is EOF |
|
1221 32 Suspected errors in data block |
|
1222 16 Data block is a restart marker |
|
1223 |
|
1224 With this encoding, more than one descriptor coded condition |
|
1225 may exist for a particular block. As many bits as necessary |
|
1226 may be flagged. |
|
1227 |
|
1228 The restart marker is embedded in the data stream as an |
|
1229 integral number of 8-bit bytes representing printable |
|
1230 characters in the language being used over the control |
|
1231 connection (e.g., default--NVT-ASCII). <SP> (Space, in the |
|
1232 appropriate language) must not be used WITHIN a restart marker. |
|
1233 |
|
1234 For example, to transmit a six-character marker, the following |
|
1235 would be sent: |
|
1236 |
|
1237 +--------+--------+--------+ |
|
1238 |Descrptr| Byte count | |
|
1239 |code= 16| = 6 | |
|
1240 +--------+--------+--------+ |
|
1241 |
|
1242 +--------+--------+--------+ |
|
1243 | Marker | Marker | Marker | |
|
1244 | 8 bits | 8 bits | 8 bits | |
|
1245 +--------+--------+--------+ |
|
1246 |
|
1247 +--------+--------+--------+ |
|
1248 | Marker | Marker | Marker | |
|
1249 | 8 bits | 8 bits | 8 bits | |
|
1250 +--------+--------+--------+ |
|
1251 |
|
1252 |
|
1253 Postel & Reynolds [Page 22] |
|
1254 |
|
1255 |
|
1256 |
|
1257 RFC 959 October 1985 |
|
1258 File Transfer Protocol |
|
1259 |
|
1260 |
|
1261 3.4.3. COMPRESSED MODE |
|
1262 |
|
1263 There are three kinds of information to be sent: regular data, |
|
1264 sent in a byte string; compressed data, consisting of |
|
1265 replications or filler; and control information, sent in a |
|
1266 two-byte escape sequence. If n>0 bytes (up to 127) of regular |
|
1267 data are sent, these n bytes are preceded by a byte with the |
|
1268 left-most bit set to 0 and the right-most 7 bits containing the |
|
1269 number n. |
|
1270 |
|
1271 Byte string: |
|
1272 |
|
1273 1 7 8 8 |
|
1274 +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+ |
|
1275 |0| n | | d(1) | ... | d(n) | |
|
1276 +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+ |
|
1277 ^ ^ |
|
1278 |---n bytes---| |
|
1279 of data |
|
1280 |
|
1281 String of n data bytes d(1),..., d(n) |
|
1282 Count n must be positive. |
|
1283 |
|
1284 To compress a string of n replications of the data byte d, the |
|
1285 following 2 bytes are sent: |
|
1286 |
|
1287 Replicated Byte: |
|
1288 |
|
1289 2 6 8 |
|
1290 +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+ |
|
1291 |1 0| n | | d | |
|
1292 +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+ |
|
1293 |
|
1294 A string of n filler bytes can be compressed into a single |
|
1295 byte, where the filler byte varies with the representation |
|
1296 type. If the type is ASCII or EBCDIC the filler byte is <SP> |
|
1297 (Space, ASCII code 32, EBCDIC code 64). If the type is Image |
|
1298 or Local byte the filler is a zero byte. |
|
1299 |
|
1300 Filler String: |
|
1301 |
|
1302 2 6 |
|
1303 +-+-+-+-+-+-+-+-+ |
|
1304 |1 1| n | |
|
1305 +-+-+-+-+-+-+-+-+ |
|
1306 |
|
1307 The escape sequence is a double byte, the first of which is the |
|
1308 |
|
1309 |
|
1310 Postel & Reynolds [Page 23] |
|
1311 |
|
1312 |
|
1313 |
|
1314 RFC 959 October 1985 |
|
1315 File Transfer Protocol |
|
1316 |
|
1317 |
|
1318 escape byte (all zeros) and the second of which contains |
|
1319 descriptor codes as defined in Block mode. The descriptor |
|
1320 codes have the same meaning as in Block mode and apply to the |
|
1321 succeeding string of bytes. |
|
1322 |
|
1323 Compressed mode is useful for obtaining increased bandwidth on |
|
1324 very large network transmissions at a little extra CPU cost. |
|
1325 It can be most effectively used to reduce the size of printer |
|
1326 files such as those generated by RJE hosts. |
|
1327 |
|
1328 3.5. ERROR RECOVERY AND RESTART |
|
1329 |
|
1330 There is no provision for detecting bits lost or scrambled in data |
|
1331 transfer; this level of error control is handled by the TCP. |
|
1332 However, a restart procedure is provided to protect users from |
|
1333 gross system failures (including failures of a host, an |
|
1334 FTP-process, or the underlying network). |
|
1335 |
|
1336 The restart procedure is defined only for the block and compressed |
|
1337 modes of data transfer. It requires the sender of data to insert |
|
1338 a special marker code in the data stream with some marker |
|
1339 information. The marker information has meaning only to the |
|
1340 sender, but must consist of printable characters in the default or |
|
1341 negotiated language of the control connection (ASCII or EBCDIC). |
|
1342 The marker could represent a bit-count, a record-count, or any |
|
1343 other information by which a system may identify a data |
|
1344 checkpoint. The receiver of data, if it implements the restart |
|
1345 procedure, would then mark the corresponding position of this |
|
1346 marker in the receiving system, and return this information to the |
|
1347 user. |
|
1348 |
|
1349 In the event of a system failure, the user can restart the data |
|
1350 transfer by identifying the marker point with the FTP restart |
|
1351 procedure. The following example illustrates the use of the |
|
1352 restart procedure. |
|
1353 |
|
1354 The sender of the data inserts an appropriate marker block in the |
|
1355 data stream at a convenient point. The receiving host marks the |
|
1356 corresponding data point in its file system and conveys the last |
|
1357 known sender and receiver marker information to the user, either |
|
1358 directly or over the control connection in a 110 reply (depending |
|
1359 on who is the sender). In the event of a system failure, the user |
|
1360 or controller process restarts the server at the last server |
|
1361 marker by sending a restart command with server's marker code as |
|
1362 its argument. The restart command is transmitted over the control |
|
1363 |
|
1364 |
|
1365 |
|
1366 |
|
1367 Postel & Reynolds [Page 24] |
|
1368 |
|
1369 |
|
1370 |
|
1371 RFC 959 October 1985 |
|
1372 File Transfer Protocol |
|
1373 |
|
1374 |
|
1375 connection and is immediately followed by the command (such as |
|
1376 RETR, STOR or LIST) which was being executed when the system |
|
1377 failure occurred. |
|
1378 |
|
1379 4. FILE TRANSFER FUNCTIONS |
|
1380 |
|
1381 The communication channel from the user-PI to the server-PI is |
|
1382 established as a TCP connection from the user to the standard server |
|
1383 port. The user protocol interpreter is responsible for sending FTP |
|
1384 commands and interpreting the replies received; the server-PI |
|
1385 interprets commands, sends replies and directs its DTP to set up the |
|
1386 data connection and transfer the data. If the second party to the |
|
1387 data transfer (the passive transfer process) is the user-DTP, then it |
|
1388 is governed through the internal protocol of the user-FTP host; if it |
|
1389 is a second server-DTP, then it is governed by its PI on command from |
|
1390 the user-PI. The FTP replies are discussed in the next section. In |
|
1391 the description of a few of the commands in this section, it is |
|
1392 helpful to be explicit about the possible replies. |
|
1393 |
|
1394 4.1. FTP COMMANDS |
|
1395 |
|
1396 4.1.1. ACCESS CONTROL COMMANDS |
|
1397 |
|
1398 The following commands specify access control identifiers |
|
1399 (command codes are shown in parentheses). |
|
1400 |
|
1401 USER NAME (USER) |
|
1402 |
|
1403 The argument field is a Telnet string identifying the user. |
|
1404 The user identification is that which is required by the |
|
1405 server for access to its file system. This command will |
|
1406 normally be the first command transmitted by the user after |
|
1407 the control connections are made (some servers may require |
|
1408 this). Additional identification information in the form of |
|
1409 a password and/or an account command may also be required by |
|
1410 some servers. Servers may allow a new USER command to be |
|
1411 entered at any point in order to change the access control |
|
1412 and/or accounting information. This has the effect of |
|
1413 flushing any user, password, and account information already |
|
1414 supplied and beginning the login sequence again. All |
|
1415 transfer parameters are unchanged and any file transfer in |
|
1416 progress is completed under the old access control |
|
1417 parameters. |
|
1418 |
|
1419 |
|
1420 |
|
1421 |
|
1422 |
|
1423 |
|
1424 Postel & Reynolds [Page 25] |
|
1425 |
|
1426 |
|
1427 |
|
1428 RFC 959 October 1985 |
|
1429 File Transfer Protocol |
|
1430 |
|
1431 |
|
1432 PASSWORD (PASS) |
|
1433 |
|
1434 The argument field is a Telnet string specifying the user's |
|
1435 password. This command must be immediately preceded by the |
|
1436 user name command, and, for some sites, completes the user's |
|
1437 identification for access control. Since password |
|
1438 information is quite sensitive, it is desirable in general |
|
1439 to "mask" it or suppress typeout. It appears that the |
|
1440 server has no foolproof way to achieve this. It is |
|
1441 therefore the responsibility of the user-FTP process to hide |
|
1442 the sensitive password information. |
|
1443 |
|
1444 ACCOUNT (ACCT) |
|
1445 |
|
1446 The argument field is a Telnet string identifying the user's |
|
1447 account. The command is not necessarily related to the USER |
|
1448 command, as some sites may require an account for login and |
|
1449 others only for specific access, such as storing files. In |
|
1450 the latter case the command may arrive at any time. |
|
1451 |
|
1452 There are reply codes to differentiate these cases for the |
|
1453 automation: when account information is required for login, |
|
1454 the response to a successful PASSword command is reply code |
|
1455 332. On the other hand, if account information is NOT |
|
1456 required for login, the reply to a successful PASSword |
|
1457 command is 230; and if the account information is needed for |
|
1458 a command issued later in the dialogue, the server should |
|
1459 return a 332 or 532 reply depending on whether it stores |
|
1460 (pending receipt of the ACCounT command) or discards the |
|
1461 command, respectively. |
|
1462 |
|
1463 CHANGE WORKING DIRECTORY (CWD) |
|
1464 |
|
1465 This command allows the user to work with a different |
|
1466 directory or dataset for file storage or retrieval without |
|
1467 altering his login or accounting information. Transfer |
|
1468 parameters are similarly unchanged. The argument is a |
|
1469 pathname specifying a directory or other system dependent |
|
1470 file group designator. |
|
1471 |
|
1472 CHANGE TO PARENT DIRECTORY (CDUP) |
|
1473 |
|
1474 This command is a special case of CWD, and is included to |
|
1475 simplify the implementation of programs for transferring |
|
1476 directory trees between operating systems having different |
|
1477 |
|
1478 |
|
1479 |
|
1480 |
|
1481 Postel & Reynolds [Page 26] |
|
1482 |
|
1483 |
|
1484 |
|
1485 RFC 959 October 1985 |
|
1486 File Transfer Protocol |
|
1487 |
|
1488 |
|
1489 syntaxes for naming the parent directory. The reply codes |
|
1490 shall be identical to the reply codes of CWD. See |
|
1491 Appendix II for further details. |
|
1492 |
|
1493 STRUCTURE MOUNT (SMNT) |
|
1494 |
|
1495 This command allows the user to mount a different file |
|
1496 system data structure without altering his login or |
|
1497 accounting information. Transfer parameters are similarly |
|
1498 unchanged. The argument is a pathname specifying a |
|
1499 directory or other system dependent file group designator. |
|
1500 |
|
1501 REINITIALIZE (REIN) |
|
1502 |
|
1503 This command terminates a USER, flushing all I/O and account |
|
1504 information, except to allow any transfer in progress to be |
|
1505 completed. All parameters are reset to the default settings |
|
1506 and the control connection is left open. This is identical |
|
1507 to the state in which a user finds himself immediately after |
|
1508 the control connection is opened. A USER command may be |
|
1509 expected to follow. |
|
1510 |
|
1511 LOGOUT (QUIT) |
|
1512 |
|
1513 This command terminates a USER and if file transfer is not |
|
1514 in progress, the server closes the control connection. If |
|
1515 file transfer is in progress, the connection will remain |
|
1516 open for result response and the server will then close it. |
|
1517 If the user-process is transferring files for several USERs |
|
1518 but does not wish to close and then reopen connections for |
|
1519 each, then the REIN command should be used instead of QUIT. |
|
1520 |
|
1521 An unexpected close on the control connection will cause the |
|
1522 server to take the effective action of an abort (ABOR) and a |
|
1523 logout (QUIT). |
|
1524 |
|
1525 4.1.2. TRANSFER PARAMETER COMMANDS |
|
1526 |
|
1527 All data transfer parameters have default values, and the |
|
1528 commands specifying data transfer parameters are required only |
|
1529 if the default parameter values are to be changed. The default |
|
1530 value is the last specified value, or if no value has been |
|
1531 specified, the standard default value is as stated here. This |
|
1532 implies that the server must "remember" the applicable default |
|
1533 values. The commands may be in any order except that they must |
|
1534 precede the FTP service request. The following commands |
|
1535 specify data transfer parameters: |
|
1536 |
|
1537 |
|
1538 Postel & Reynolds [Page 27] |
|
1539 |
|
1540 |
|
1541 |
|
1542 RFC 959 October 1985 |
|
1543 File Transfer Protocol |
|
1544 |
|
1545 |
|
1546 DATA PORT (PORT) |
|
1547 |
|
1548 The argument is a HOST-PORT specification for the data port |
|
1549 to be used in data connection. There are defaults for both |
|
1550 the user and server data ports, and under normal |
|
1551 circumstances this command and its reply are not needed. If |
|
1552 this command is used, the argument is the concatenation of a |
|
1553 32-bit internet host address and a 16-bit TCP port address. |
|
1554 This address information is broken into 8-bit fields and the |
|
1555 value of each field is transmitted as a decimal number (in |
|
1556 character string representation). The fields are separated |
|
1557 by commas. A port command would be: |
|
1558 |
|
1559 PORT h1,h2,h3,h4,p1,p2 |
|
1560 |
|
1561 where h1 is the high order 8 bits of the internet host |
|
1562 address. |
|
1563 |
|
1564 PASSIVE (PASV) |
|
1565 |
|
1566 This command requests the server-DTP to "listen" on a data |
|
1567 port (which is not its default data port) and to wait for a |
|
1568 connection rather than initiate one upon receipt of a |
|
1569 transfer command. The response to this command includes the |
|
1570 host and port address this server is listening on. |
|
1571 |
|
1572 REPRESENTATION TYPE (TYPE) |
|
1573 |
|
1574 The argument specifies the representation type as described |
|
1575 in the Section on Data Representation and Storage. Several |
|
1576 types take a second parameter. The first parameter is |
|
1577 denoted by a single Telnet character, as is the second |
|
1578 Format parameter for ASCII and EBCDIC; the second parameter |
|
1579 for local byte is a decimal integer to indicate Bytesize. |
|
1580 The parameters are separated by a <SP> (Space, ASCII code |
|
1581 32). |
|
1582 |
|
1583 The following codes are assigned for type: |
|
1584 |
|
1585 \ / |
|
1586 A - ASCII | | N - Non-print |
|
1587 |-><-| T - Telnet format effectors |
|
1588 E - EBCDIC| | C - Carriage Control (ASA) |
|
1589 / \ |
|
1590 I - Image |
|
1591 |
|
1592 L <byte size> - Local byte Byte size |
|
1593 |
|
1594 |
|
1595 Postel & Reynolds [Page 28] |
|
1596 |
|
1597 |
|
1598 |
|
1599 RFC 959 October 1985 |
|
1600 File Transfer Protocol |
|
1601 |
|
1602 |
|
1603 The default representation type is ASCII Non-print. If the |
|
1604 Format parameter is changed, and later just the first |
|
1605 argument is changed, Format then returns to the Non-print |
|
1606 default. |
|
1607 |
|
1608 FILE STRUCTURE (STRU) |
|
1609 |
|
1610 The argument is a single Telnet character code specifying |
|
1611 file structure described in the Section on Data |
|
1612 Representation and Storage. |
|
1613 |
|
1614 The following codes are assigned for structure: |
|
1615 |
|
1616 F - File (no record structure) |
|
1617 R - Record structure |
|
1618 P - Page structure |
|
1619 |
|
1620 The default structure is File. |
|
1621 |
|
1622 TRANSFER MODE (MODE) |
|
1623 |
|
1624 The argument is a single Telnet character code specifying |
|
1625 the data transfer modes described in the Section on |
|
1626 Transmission Modes. |
|
1627 |
|
1628 The following codes are assigned for transfer modes: |
|
1629 |
|
1630 S - Stream |
|
1631 B - Block |
|
1632 C - Compressed |
|
1633 |
|
1634 The default transfer mode is Stream. |
|
1635 |
|
1636 4.1.3. FTP SERVICE COMMANDS |
|
1637 |
|
1638 The FTP service commands define the file transfer or the file |
|
1639 system function requested by the user. The argument of an FTP |
|
1640 service command will normally be a pathname. The syntax of |
|
1641 pathnames must conform to server site conventions (with |
|
1642 standard defaults applicable), and the language conventions of |
|
1643 the control connection. The suggested default handling is to |
|
1644 use the last specified device, directory or file name, or the |
|
1645 standard default defined for local users. The commands may be |
|
1646 in any order except that a "rename from" command must be |
|
1647 followed by a "rename to" command and the restart command must |
|
1648 be followed by the interrupted service command (e.g., STOR or |
|
1649 RETR). The data, when transferred in response to FTP service |
|
1650 |
|
1651 |
|
1652 Postel & Reynolds [Page 29] |
|
1653 |
|
1654 |
|
1655 |
|
1656 RFC 959 October 1985 |
|
1657 File Transfer Protocol |
|
1658 |
|
1659 |
|
1660 commands, shall always be sent over the data connection, except |
|
1661 for certain informative replies. The following commands |
|
1662 specify FTP service requests: |
|
1663 |
|
1664 RETRIEVE (RETR) |
|
1665 |
|
1666 This command causes the server-DTP to transfer a copy of the |
|
1667 file, specified in the pathname, to the server- or user-DTP |
|
1668 at the other end of the data connection. The status and |
|
1669 contents of the file at the server site shall be unaffected. |
|
1670 |
|
1671 STORE (STOR) |
|
1672 |
|
1673 This command causes the server-DTP to accept the data |
|
1674 transferred via the data connection and to store the data as |
|
1675 a file at the server site. If the file specified in the |
|
1676 pathname exists at the server site, then its contents shall |
|
1677 be replaced by the data being transferred. A new file is |
|
1678 created at the server site if the file specified in the |
|
1679 pathname does not already exist. |
|
1680 |
|
1681 STORE UNIQUE (STOU) |
|
1682 |
|
1683 This command behaves like STOR except that the resultant |
|
1684 file is to be created in the current directory under a name |
|
1685 unique to that directory. The 250 Transfer Started response |
|
1686 must include the name generated. |
|
1687 |
|
1688 APPEND (with create) (APPE) |
|
1689 |
|
1690 This command causes the server-DTP to accept the data |
|
1691 transferred via the data connection and to store the data in |
|
1692 a file at the server site. If the file specified in the |
|
1693 pathname exists at the server site, then the data shall be |
|
1694 appended to that file; otherwise the file specified in the |
|
1695 pathname shall be created at the server site. |
|
1696 |
|
1697 ALLOCATE (ALLO) |
|
1698 |
|
1699 This command may be required by some servers to reserve |
|
1700 sufficient storage to accommodate the new file to be |
|
1701 transferred. The argument shall be a decimal integer |
|
1702 representing the number of bytes (using the logical byte |
|
1703 size) of storage to be reserved for the file. For files |
|
1704 sent with record or page structure a maximum record or page |
|
1705 size (in logical bytes) might also be necessary; this is |
|
1706 indicated by a decimal integer in a second argument field of |
|
1707 |
|
1708 |
|
1709 Postel & Reynolds [Page 30] |
|
1710 |
|
1711 |
|
1712 |
|
1713 RFC 959 October 1985 |
|
1714 File Transfer Protocol |
|
1715 |
|
1716 |
|
1717 the command. This second argument is optional, but when |
|
1718 present should be separated from the first by the three |
|
1719 Telnet characters <SP> R <SP>. This command shall be |
|
1720 followed by a STORe or APPEnd command. The ALLO command |
|
1721 should be treated as a NOOP (no operation) by those servers |
|
1722 which do not require that the maximum size of the file be |
|
1723 declared beforehand, and those servers interested in only |
|
1724 the maximum record or page size should accept a dummy value |
|
1725 in the first argument and ignore it. |
|
1726 |
|
1727 RESTART (REST) |
|
1728 |
|
1729 The argument field represents the server marker at which |
|
1730 file transfer is to be restarted. This command does not |
|
1731 cause file transfer but skips over the file to the specified |
|
1732 data checkpoint. This command shall be immediately followed |
|
1733 by the appropriate FTP service command which shall cause |
|
1734 file transfer to resume. |
|
1735 |
|
1736 RENAME FROM (RNFR) |
|
1737 |
|
1738 This command specifies the old pathname of the file which is |
|
1739 to be renamed. This command must be immediately followed by |
|
1740 a "rename to" command specifying the new file pathname. |
|
1741 |
|
1742 RENAME TO (RNTO) |
|
1743 |
|
1744 This command specifies the new pathname of the file |
|
1745 specified in the immediately preceding "rename from" |
|
1746 command. Together the two commands cause a file to be |
|
1747 renamed. |
|
1748 |
|
1749 ABORT (ABOR) |
|
1750 |
|
1751 This command tells the server to abort the previous FTP |
|
1752 service command and any associated transfer of data. The |
|
1753 abort command may require "special action", as discussed in |
|
1754 the Section on FTP Commands, to force recognition by the |
|
1755 server. No action is to be taken if the previous command |
|
1756 has been completed (including data transfer). The control |
|
1757 connection is not to be closed by the server, but the data |
|
1758 connection must be closed. |
|
1759 |
|
1760 There are two cases for the server upon receipt of this |
|
1761 command: (1) the FTP service command was already completed, |
|
1762 or (2) the FTP service command is still in progress. |
|
1763 |
|
1764 |
|
1765 |
|
1766 Postel & Reynolds [Page 31] |
|
1767 |
|
1768 |
|
1769 |
|
1770 RFC 959 October 1985 |
|
1771 File Transfer Protocol |
|
1772 |
|
1773 |
|
1774 In the first case, the server closes the data connection |
|
1775 (if it is open) and responds with a 226 reply, indicating |
|
1776 that the abort command was successfully processed. |
|
1777 |
|
1778 In the second case, the server aborts the FTP service in |
|
1779 progress and closes the data connection, returning a 426 |
|
1780 reply to indicate that the service request terminated |
|
1781 abnormally. The server then sends a 226 reply, |
|
1782 indicating that the abort command was successfully |
|
1783 processed. |
|
1784 |
|
1785 DELETE (DELE) |
|
1786 |
|
1787 This command causes the file specified in the pathname to be |
|
1788 deleted at the server site. If an extra level of protection |
|
1789 is desired (such as the query, "Do you really wish to |
|
1790 delete?"), it should be provided by the user-FTP process. |
|
1791 |
|
1792 REMOVE DIRECTORY (RMD) |
|
1793 |
|
1794 This command causes the directory specified in the pathname |
|
1795 to be removed as a directory (if the pathname is absolute) |
|
1796 or as a subdirectory of the current working directory (if |
|
1797 the pathname is relative). See Appendix II. |
|
1798 |
|
1799 MAKE DIRECTORY (MKD) |
|
1800 |
|
1801 This command causes the directory specified in the pathname |
|
1802 to be created as a directory (if the pathname is absolute) |
|
1803 or as a subdirectory of the current working directory (if |
|
1804 the pathname is relative). See Appendix II. |
|
1805 |
|
1806 PRINT WORKING DIRECTORY (PWD) |
|
1807 |
|
1808 This command causes the name of the current working |
|
1809 directory to be returned in the reply. See Appendix II. |
|
1810 |
|
1811 LIST (LIST) |
|
1812 |
|
1813 This command causes a list to be sent from the server to the |
|
1814 passive DTP. If the pathname specifies a directory or other |
|
1815 group of files, the server should transfer a list of files |
|
1816 in the specified directory. If the pathname specifies a |
|
1817 file then the server should send current information on the |
|
1818 file. A null argument implies the user's current working or |
|
1819 default directory. The data transfer is over the data |
|
1820 connection in type ASCII or type EBCDIC. (The user must |
|
1821 |
|
1822 |
|
1823 Postel & Reynolds [Page 32] |
|
1824 |
|
1825 |
|
1826 |
|
1827 RFC 959 October 1985 |
|
1828 File Transfer Protocol |
|
1829 |
|
1830 |
|
1831 ensure that the TYPE is appropriately ASCII or EBCDIC). |
|
1832 Since the information on a file may vary widely from system |
|
1833 to system, this information may be hard to use automatically |
|
1834 in a program, but may be quite useful to a human user. |
|
1835 |
|
1836 NAME LIST (NLST) |
|
1837 |
|
1838 This command causes a directory listing to be sent from |
|
1839 server to user site. The pathname should specify a |
|
1840 directory or other system-specific file group descriptor; a |
|
1841 null argument implies the current directory. The server |
|
1842 will return a stream of names of files and no other |
|
1843 information. The data will be transferred in ASCII or |
|
1844 EBCDIC type over the data connection as valid pathname |
|
1845 strings separated by <CRLF> or <NL>. (Again the user must |
|
1846 ensure that the TYPE is correct.) This command is intended |
|
1847 to return information that can be used by a program to |
|
1848 further process the files automatically. For example, in |
|
1849 the implementation of a "multiple get" function. |
|
1850 |
|
1851 SITE PARAMETERS (SITE) |
|
1852 |
|
1853 This command is used by the server to provide services |
|
1854 specific to his system that are essential to file transfer |
|
1855 but not sufficiently universal to be included as commands in |
|
1856 the protocol. The nature of these services and the |
|
1857 specification of their syntax can be stated in a reply to |
|
1858 the HELP SITE command. |
|
1859 |
|
1860 SYSTEM (SYST) |
|
1861 |
|
1862 This command is used to find out the type of operating |
|
1863 system at the server. The reply shall have as its first |
|
1864 word one of the system names listed in the current version |
|
1865 of the Assigned Numbers document [4]. |
|
1866 |
|
1867 STATUS (STAT) |
|
1868 |
|
1869 This command shall cause a status response to be sent over |
|
1870 the control connection in the form of a reply. The command |
|
1871 may be sent during a file transfer (along with the Telnet IP |
|
1872 and Synch signals--see the Section on FTP Commands) in which |
|
1873 case the server will respond with the status of the |
|
1874 operation in progress, or it may be sent between file |
|
1875 transfers. In the latter case, the command may have an |
|
1876 argument field. If the argument is a pathname, the command |
|
1877 is analogous to the "list" command except that data shall be |
|
1878 |
|
1879 |
|
1880 Postel & Reynolds [Page 33] |
|
1881 |
|
1882 |
|
1883 |
|
1884 RFC 959 October 1985 |
|
1885 File Transfer Protocol |
|
1886 |
|
1887 |
|
1888 transferred over the control connection. If a partial |
|
1889 pathname is given, the server may respond with a list of |
|
1890 file names or attributes associated with that specification. |
|
1891 If no argument is given, the server should return general |
|
1892 status information about the server FTP process. This |
|
1893 should include current values of all transfer parameters and |
|
1894 the status of connections. |
|
1895 |
|
1896 HELP (HELP) |
|
1897 |
|
1898 This command shall cause the server to send helpful |
|
1899 information regarding its implementation status over the |
|
1900 control connection to the user. The command may take an |
|
1901 argument (e.g., any command name) and return more specific |
|
1902 information as a response. The reply is type 211 or 214. |
|
1903 It is suggested that HELP be allowed before entering a USER |
|
1904 command. The server may use this reply to specify |
|
1905 site-dependent parameters, e.g., in response to HELP SITE. |
|
1906 |
|
1907 NOOP (NOOP) |
|
1908 |
|
1909 This command does not affect any parameters or previously |
|
1910 entered commands. It specifies no action other than that the |
|
1911 server send an OK reply. |
|
1912 |
|
1913 The File Transfer Protocol follows the specifications of the Telnet |
|
1914 protocol for all communications over the control connection. Since |
|
1915 the language used for Telnet communication may be a negotiated |
|
1916 option, all references in the next two sections will be to the |
|
1917 "Telnet language" and the corresponding "Telnet end-of-line code". |
|
1918 Currently, one may take these to mean NVT-ASCII and <CRLF>. No other |
|
1919 specifications of the Telnet protocol will be cited. |
|
1920 |
|
1921 FTP commands are "Telnet strings" terminated by the "Telnet end of |
|
1922 line code". The command codes themselves are alphabetic characters |
|
1923 terminated by the character <SP> (Space) if parameters follow and |
|
1924 Telnet-EOL otherwise. The command codes and the semantics of |
|
1925 commands are described in this section; the detailed syntax of |
|
1926 commands is specified in the Section on Commands, the reply sequences |
|
1927 are discussed in the Section on Sequencing of Commands and Replies, |
|
1928 and scenarios illustrating the use of commands are provided in the |
|
1929 Section on Typical FTP Scenarios. |
|
1930 |
|
1931 FTP commands may be partitioned as those specifying access-control |
|
1932 identifiers, data transfer parameters, or FTP service requests. |
|
1933 Certain commands (such as ABOR, STAT, QUIT) may be sent over the |
|
1934 control connection while a data transfer is in progress. Some |
|
1935 |
|
1936 |
|
1937 Postel & Reynolds [Page 34] |
|
1938 |
|
1939 |
|
1940 |
|
1941 RFC 959 October 1985 |
|
1942 File Transfer Protocol |
|
1943 |
|
1944 |
|
1945 servers may not be able to monitor the control and data connections |
|
1946 simultaneously, in which case some special action will be necessary |
|
1947 to get the server's attention. The following ordered format is |
|
1948 tentatively recommended: |
|
1949 |
|
1950 1. User system inserts the Telnet "Interrupt Process" (IP) signal |
|
1951 in the Telnet stream. |
|
1952 |
|
1953 2. User system sends the Telnet "Synch" signal. |
|
1954 |
|
1955 3. User system inserts the command (e.g., ABOR) in the Telnet |
|
1956 stream. |
|
1957 |
|
1958 4. Server PI, after receiving "IP", scans the Telnet stream for |
|
1959 EXACTLY ONE FTP command. |
|
1960 |
|
1961 (For other servers this may not be necessary but the actions listed |
|
1962 above should have no unusual effect.) |
|
1963 |
|
1964 4.2. FTP REPLIES |
|
1965 |
|
1966 Replies to File Transfer Protocol commands are devised to ensure |
|
1967 the synchronization of requests and actions in the process of file |
|
1968 transfer, and to guarantee that the user process always knows the |
|
1969 state of the Server. Every command must generate at least one |
|
1970 reply, although there may be more than one; in the latter case, |
|
1971 the multiple replies must be easily distinguished. In addition, |
|
1972 some commands occur in sequential groups, such as USER, PASS and |
|
1973 ACCT, or RNFR and RNTO. The replies show the existence of an |
|
1974 intermediate state if all preceding commands have been successful. |
|
1975 A failure at any point in the sequence necessitates the repetition |
|
1976 of the entire sequence from the beginning. |
|
1977 |
|
1978 The details of the command-reply sequence are made explicit in |
|
1979 a set of state diagrams below. |
|
1980 |
|
1981 An FTP reply consists of a three digit number (transmitted as |
|
1982 three alphanumeric characters) followed by some text. The number |
|
1983 is intended for use by automata to determine what state to enter |
|
1984 next; the text is intended for the human user. It is intended |
|
1985 that the three digits contain enough encoded information that the |
|
1986 user-process (the User-PI) will not need to examine the text and |
|
1987 may either discard it or pass it on to the user, as appropriate. |
|
1988 In particular, the text may be server-dependent, so there are |
|
1989 likely to be varying texts for each reply code. |
|
1990 |
|
1991 A reply is defined to contain the 3-digit code, followed by Space |
|
1992 |
|
1993 |
|
1994 Postel & Reynolds [Page 35] |
|
1995 |
|
1996 |
|
1997 |
|
1998 RFC 959 October 1985 |
|
1999 File Transfer Protocol |
|
2000 |
|
2001 |
|
2002 <SP>, followed by one line of text (where some maximum line length |
|
2003 has been specified), and terminated by the Telnet end-of-line |
|
2004 code. There will be cases however, where the text is longer than |
|
2005 a single line. In these cases the complete text must be bracketed |
|
2006 so the User-process knows when it may stop reading the reply (i.e. |
|
2007 stop processing input on the control connection) and go do other |
|
2008 things. This requires a special format on the first line to |
|
2009 indicate that more than one line is coming, and another on the |
|
2010 last line to designate it as the last. At least one of these must |
|
2011 contain the appropriate reply code to indicate the state of the |
|
2012 transaction. To satisfy all factions, it was decided that both |
|
2013 the first and last line codes should be the same. |
|
2014 |
|
2015 Thus the format for multi-line replies is that the first line |
|
2016 will begin with the exact required reply code, followed |
|
2017 immediately by a Hyphen, "-" (also known as Minus), followed by |
|
2018 text. The last line will begin with the same code, followed |
|
2019 immediately by Space <SP>, optionally some text, and the Telnet |
|
2020 end-of-line code. |
|
2021 |
|
2022 For example: |
|
2023 123-First line |
|
2024 Second line |
|
2025 234 A line beginning with numbers |
|
2026 123 The last line |
|
2027 |
|
2028 The user-process then simply needs to search for the second |
|
2029 occurrence of the same reply code, followed by <SP> (Space), at |
|
2030 the beginning of a line, and ignore all intermediary lines. If |
|
2031 an intermediary line begins with a 3-digit number, the Server |
|
2032 must pad the front to avoid confusion. |
|
2033 |
|
2034 This scheme allows standard system routines to be used for |
|
2035 reply information (such as for the STAT reply), with |
|
2036 "artificial" first and last lines tacked on. In rare cases |
|
2037 where these routines are able to generate three digits and a |
|
2038 Space at the beginning of any line, the beginning of each |
|
2039 text line should be offset by some neutral text, like Space. |
|
2040 |
|
2041 This scheme assumes that multi-line replies may not be nested. |
|
2042 |
|
2043 The three digits of the reply each have a special significance. |
|
2044 This is intended to allow a range of very simple to very |
|
2045 sophisticated responses by the user-process. The first digit |
|
2046 denotes whether the response is good, bad or incomplete. |
|
2047 (Referring to the state diagram), an unsophisticated user-process |
|
2048 will be able to determine its next action (proceed as planned, |
|
2049 |
|
2050 |
|
2051 Postel & Reynolds [Page 36] |
|
2052 |
|
2053 |
|
2054 |
|
2055 RFC 959 October 1985 |
|
2056 File Transfer Protocol |
|
2057 |
|
2058 |
|
2059 redo, retrench, etc.) by simply examining this first digit. A |
|
2060 user-process that wants to know approximately what kind of error |
|
2061 occurred (e.g. file system error, command syntax error) may |
|
2062 examine the second digit, reserving the third digit for the finest |
|
2063 gradation of information (e.g., RNTO command without a preceding |
|
2064 RNFR). |
|
2065 |
|
2066 There are five values for the first digit of the reply code: |
|
2067 |
|
2068 1yz Positive Preliminary reply |
|
2069 |
|
2070 The requested action is being initiated; expect another |
|
2071 reply before proceeding with a new command. (The |
|
2072 user-process sending another command before the |
|
2073 completion reply would be in violation of protocol; but |
|
2074 server-FTP processes should queue any commands that |
|
2075 arrive while a preceding command is in progress.) This |
|
2076 type of reply can be used to indicate that the command |
|
2077 was accepted and the user-process may now pay attention |
|
2078 to the data connections, for implementations where |
|
2079 simultaneous monitoring is difficult. The server-FTP |
|
2080 process may send at most, one 1yz reply per command. |
|
2081 |
|
2082 2yz Positive Completion reply |
|
2083 |
|
2084 The requested action has been successfully completed. A |
|
2085 new request may be initiated. |
|
2086 |
|
2087 3yz Positive Intermediate reply |
|
2088 |
|
2089 The command has been accepted, but the requested action |
|
2090 is being held in abeyance, pending receipt of further |
|
2091 information. The user should send another command |
|
2092 specifying this information. This reply is used in |
|
2093 command sequence groups. |
|
2094 |
|
2095 4yz Transient Negative Completion reply |
|
2096 |
|
2097 The command was not accepted and the requested action did |
|
2098 not take place, but the error condition is temporary and |
|
2099 the action may be requested again. The user should |
|
2100 return to the beginning of the command sequence, if any. |
|
2101 It is difficult to assign a meaning to "transient", |
|
2102 particularly when two distinct sites (Server- and |
|
2103 User-processes) have to agree on the interpretation. |
|
2104 Each reply in the 4yz category might have a slightly |
|
2105 different time value, but the intent is that the |
|
2106 |
|
2107 |
|
2108 Postel & Reynolds [Page 37] |
|
2109 |
|
2110 |
|
2111 |
|
2112 RFC 959 October 1985 |
|
2113 File Transfer Protocol |
|
2114 |
|
2115 |
|
2116 user-process is encouraged to try again. A rule of thumb |
|
2117 in determining if a reply fits into the 4yz or the 5yz |
|
2118 (Permanent Negative) category is that replies are 4yz if |
|
2119 the commands can be repeated without any change in |
|
2120 command form or in properties of the User or Server |
|
2121 (e.g., the command is spelled the same with the same |
|
2122 arguments used; the user does not change his file access |
|
2123 or user name; the server does not put up a new |
|
2124 implementation.) |
|
2125 |
|
2126 5yz Permanent Negative Completion reply |
|
2127 |
|
2128 The command was not accepted and the requested action did |
|
2129 not take place. The User-process is discouraged from |
|
2130 repeating the exact request (in the same sequence). Even |
|
2131 some "permanent" error conditions can be corrected, so |
|
2132 the human user may want to direct his User-process to |
|
2133 reinitiate the command sequence by direct action at some |
|
2134 point in the future (e.g., after the spelling has been |
|
2135 changed, or the user has altered his directory status.) |
|
2136 |
|
2137 The following function groupings are encoded in the second |
|
2138 digit: |
|
2139 |
|
2140 x0z Syntax - These replies refer to syntax errors, |
|
2141 syntactically correct commands that don't fit any |
|
2142 functional category, unimplemented or superfluous |
|
2143 commands. |
|
2144 |
|
2145 x1z Information - These are replies to requests for |
|
2146 information, such as status or help. |
|
2147 |
|
2148 x2z Connections - Replies referring to the control and |
|
2149 data connections. |
|
2150 |
|
2151 x3z Authentication and accounting - Replies for the login |
|
2152 process and accounting procedures. |
|
2153 |
|
2154 x4z Unspecified as yet. |
|
2155 |
|
2156 x5z File system - These replies indicate the status of the |
|
2157 Server file system vis-a-vis the requested transfer or |
|
2158 other file system action. |
|
2159 |
|
2160 The third digit gives a finer gradation of meaning in each of |
|
2161 the function categories, specified by the second digit. The |
|
2162 list of replies below will illustrate this. Note that the text |
|
2163 |
|
2164 |
|
2165 Postel & Reynolds [Page 38] |
|
2166 |
|
2167 |
|
2168 |
|
2169 RFC 959 October 1985 |
|
2170 File Transfer Protocol |
|
2171 |
|
2172 |
|
2173 associated with each reply is recommended, rather than |
|
2174 mandatory, and may even change according to the command with |
|
2175 which it is associated. The reply codes, on the other hand, |
|
2176 must strictly follow the specifications in the last section; |
|
2177 that is, Server implementations should not invent new codes for |
|
2178 situations that are only slightly different from the ones |
|
2179 described here, but rather should adapt codes already defined. |
|
2180 |
|
2181 A command such as TYPE or ALLO whose successful execution |
|
2182 does not offer the user-process any new information will |
|
2183 cause a 200 reply to be returned. If the command is not |
|
2184 implemented by a particular Server-FTP process because it |
|
2185 has no relevance to that computer system, for example ALLO |
|
2186 at a TOPS20 site, a Positive Completion reply is still |
|
2187 desired so that the simple User-process knows it can proceed |
|
2188 with its course of action. A 202 reply is used in this case |
|
2189 with, for example, the reply text: "No storage allocation |
|
2190 necessary." If, on the other hand, the command requests a |
|
2191 non-site-specific action and is unimplemented, the response |
|
2192 is 502. A refinement of that is the 504 reply for a command |
|
2193 that is implemented, but that requests an unimplemented |
|
2194 parameter. |
|
2195 |
|
2196 4.2.1 Reply Codes by Function Groups |
|
2197 |
|
2198 200 Command okay. |
|
2199 500 Syntax error, command unrecognized. |
|
2200 This may include errors such as command line too long. |
|
2201 501 Syntax error in parameters or arguments. |
|
2202 202 Command not implemented, superfluous at this site. |
|
2203 502 Command not implemented. |
|
2204 503 Bad sequence of commands. |
|
2205 504 Command not implemented for that parameter. |
|
2206 |
|
2207 |
|
2208 |
|
2209 |
|
2210 |
|
2211 |
|
2212 |
|
2213 |
|
2214 |
|
2215 |
|
2216 |
|
2217 |
|
2218 |
|
2219 |
|
2220 |
|
2221 |
|
2222 Postel & Reynolds [Page 39] |
|
2223 |
|
2224 |
|
2225 |
|
2226 RFC 959 October 1985 |
|
2227 File Transfer Protocol |
|
2228 |
|
2229 |
|
2230 110 Restart marker reply. |
|
2231 In this case, the text is exact and not left to the |
|
2232 particular implementation; it must read: |
|
2233 MARK yyyy = mmmm |
|
2234 Where yyyy is User-process data stream marker, and mmmm |
|
2235 server's equivalent marker (note the spaces between markers |
|
2236 and "="). |
|
2237 211 System status, or system help reply. |
|
2238 212 Directory status. |
|
2239 213 File status. |
|
2240 214 Help message. |
|
2241 On how to use the server or the meaning of a particular |
|
2242 non-standard command. This reply is useful only to the |
|
2243 human user. |
|
2244 215 NAME system type. |
|
2245 Where NAME is an official system name from the list in the |
|
2246 Assigned Numbers document. |
|
2247 |
|
2248 120 Service ready in nnn minutes. |
|
2249 220 Service ready for new user. |
|
2250 221 Service closing control connection. |
|
2251 Logged out if appropriate. |
|
2252 421 Service not available, closing control connection. |
|
2253 This may be a reply to any command if the service knows it |
|
2254 must shut down. |
|
2255 125 Data connection already open; transfer starting. |
|
2256 225 Data connection open; no transfer in progress. |
|
2257 425 Can't open data connection. |
|
2258 226 Closing data connection. |
|
2259 Requested file action successful (for example, file |
|
2260 transfer or file abort). |
|
2261 426 Connection closed; transfer aborted. |
|
2262 227 Entering Passive Mode (h1,h2,h3,h4,p1,p2). |
|
2263 |
|
2264 230 User logged in, proceed. |
|
2265 530 Not logged in. |
|
2266 331 User name okay, need password. |
|
2267 332 Need account for login. |
|
2268 532 Need account for storing files. |
|
2269 |
|
2270 |
|
2271 |
|
2272 |
|
2273 |
|
2274 |
|
2275 |
|
2276 |
|
2277 |
|
2278 |
|
2279 Postel & Reynolds [Page 40] |
|
2280 |
|
2281 |
|
2282 |
|
2283 RFC 959 October 1985 |
|
2284 File Transfer Protocol |
|
2285 |
|
2286 |
|
2287 150 File status okay; about to open data connection. |
|
2288 250 Requested file action okay, completed. |
|
2289 257 "PATHNAME" created. |
|
2290 350 Requested file action pending further information. |
|
2291 450 Requested file action not taken. |
|
2292 File unavailable (e.g., file busy). |
|
2293 550 Requested action not taken. |
|
2294 File unavailable (e.g., file not found, no access). |
|
2295 451 Requested action aborted. Local error in processing. |
|
2296 551 Requested action aborted. Page type unknown. |
|
2297 452 Requested action not taken. |
|
2298 Insufficient storage space in system. |
|
2299 552 Requested file action aborted. |
|
2300 Exceeded storage allocation (for current directory or |
|
2301 dataset). |
|
2302 553 Requested action not taken. |
|
2303 File name not allowed. |
|
2304 |
|
2305 |
|
2306 4.2.2 Numeric Order List of Reply Codes |
|
2307 |
|
2308 110 Restart marker reply. |
|
2309 In this case, the text is exact and not left to the |
|
2310 particular implementation; it must read: |
|
2311 MARK yyyy = mmmm |
|
2312 Where yyyy is User-process data stream marker, and mmmm |
|
2313 server's equivalent marker (note the spaces between markers |
|
2314 and "="). |
|
2315 120 Service ready in nnn minutes. |
|
2316 125 Data connection already open; transfer starting. |
|
2317 150 File status okay; about to open data connection. |
|
2318 |
|
2319 |
|
2320 |
|
2321 |
|
2322 |
|
2323 |
|
2324 |
|
2325 |
|
2326 |
|
2327 |
|
2328 |
|
2329 |
|
2330 |
|
2331 |
|
2332 |
|
2333 |
|
2334 |
|
2335 |
|
2336 Postel & Reynolds [Page 41] |
|
2337 |
|
2338 |
|
2339 |
|
2340 RFC 959 October 1985 |
|
2341 File Transfer Protocol |
|
2342 |
|
2343 |
|
2344 200 Command okay. |
|
2345 202 Command not implemented, superfluous at this site. |
|
2346 211 System status, or system help reply. |
|
2347 212 Directory status. |
|
2348 213 File status. |
|
2349 214 Help message. |
|
2350 On how to use the server or the meaning of a particular |
|
2351 non-standard command. This reply is useful only to the |
|
2352 human user. |
|
2353 215 NAME system type. |
|
2354 Where NAME is an official system name from the list in the |
|
2355 Assigned Numbers document. |
|
2356 220 Service ready for new user. |
|
2357 221 Service closing control connection. |
|
2358 Logged out if appropriate. |
|
2359 225 Data connection open; no transfer in progress. |
|
2360 226 Closing data connection. |
|
2361 Requested file action successful (for example, file |
|
2362 transfer or file abort). |
|
2363 227 Entering Passive Mode (h1,h2,h3,h4,p1,p2). |
|
2364 230 User logged in, proceed. |
|
2365 250 Requested file action okay, completed. |
|
2366 257 "PATHNAME" created. |
|
2367 |
|
2368 331 User name okay, need password. |
|
2369 332 Need account for login. |
|
2370 350 Requested file action pending further information. |
|
2371 |
|
2372 421 Service not available, closing control connection. |
|
2373 This may be a reply to any command if the service knows it |
|
2374 must shut down. |
|
2375 425 Can't open data connection. |
|
2376 426 Connection closed; transfer aborted. |
|
2377 450 Requested file action not taken. |
|
2378 File unavailable (e.g., file busy). |
|
2379 451 Requested action aborted: local error in processing. |
|
2380 452 Requested action not taken. |
|
2381 Insufficient storage space in system. |
|
2382 |
|
2383 |
|
2384 |
|
2385 |
|
2386 |
|
2387 |
|
2388 |
|
2389 |
|
2390 |
|
2391 |
|
2392 |
|
2393 Postel & Reynolds [Page 42] |
|
2394 |
|
2395 |
|
2396 |
|
2397 RFC 959 October 1985 |
|
2398 File Transfer Protocol |
|
2399 |
|
2400 |
|
2401 500 Syntax error, command unrecognized. |
|
2402 This may include errors such as command line too long. |
|
2403 501 Syntax error in parameters or arguments. |
|
2404 502 Command not implemented. |
|
2405 503 Bad sequence of commands. |
|
2406 504 Command not implemented for that parameter. |
|
2407 530 Not logged in. |
|
2408 532 Need account for storing files. |
|
2409 550 Requested action not taken. |
|
2410 File unavailable (e.g., file not found, no access). |
|
2411 551 Requested action aborted: page type unknown. |
|
2412 552 Requested file action aborted. |
|
2413 Exceeded storage allocation (for current directory or |
|
2414 dataset). |
|
2415 553 Requested action not taken. |
|
2416 File name not allowed. |
|
2417 |
|
2418 |
|
2419 5. DECLARATIVE SPECIFICATIONS |
|
2420 |
|
2421 5.1. MINIMUM IMPLEMENTATION |
|
2422 |
|
2423 In order to make FTP workable without needless error messages, the |
|
2424 following minimum implementation is required for all servers: |
|
2425 |
|
2426 TYPE - ASCII Non-print |
|
2427 MODE - Stream |
|
2428 STRUCTURE - File, Record |
|
2429 COMMANDS - USER, QUIT, PORT, |
|
2430 TYPE, MODE, STRU, |
|
2431 for the default values |
|
2432 RETR, STOR, |
|
2433 NOOP. |
|
2434 |
|
2435 The default values for transfer parameters are: |
|
2436 |
|
2437 TYPE - ASCII Non-print |
|
2438 MODE - Stream |
|
2439 STRU - File |
|
2440 |
|
2441 All hosts must accept the above as the standard defaults. |
|
2442 |
|
2443 |
|
2444 |
|
2445 |
|
2446 |
|
2447 |
|
2448 |
|
2449 |
|
2450 Postel & Reynolds [Page 43] |
|
2451 |
|
2452 |
|
2453 |
|
2454 RFC 959 October 1985 |
|
2455 File Transfer Protocol |
|
2456 |
|
2457 |
|
2458 5.2. CONNECTIONS |
|
2459 |
|
2460 The server protocol interpreter shall "listen" on Port L. The |
|
2461 user or user protocol interpreter shall initiate the full-duplex |
|
2462 control connection. Server- and user- processes should follow the |
|
2463 conventions of the Telnet protocol as specified in the |
|
2464 ARPA-Internet Protocol Handbook [1]. Servers are under no |
|
2465 obligation to provide for editing of command lines and may require |
|
2466 that it be done in the user host. The control connection shall be |
|
2467 closed by the server at the user's request after all transfers and |
|
2468 replies are completed. |
|
2469 |
|
2470 The user-DTP must "listen" on the specified data port; this may be |
|
2471 the default user port (U) or a port specified in the PORT command. |
|
2472 The server shall initiate the data connection from his own default |
|
2473 data port (L-1) using the specified user data port. The direction |
|
2474 of the transfer and the port used will be determined by the FTP |
|
2475 service command. |
|
2476 |
|
2477 Note that all FTP implementation must support data transfer using |
|
2478 the default port, and that only the USER-PI may initiate the use |
|
2479 of non-default ports. |
|
2480 |
|
2481 When data is to be transferred between two servers, A and B (refer |
|
2482 to Figure 2), the user-PI, C, sets up control connections with |
|
2483 both server-PI's. One of the servers, say A, is then sent a PASV |
|
2484 command telling him to "listen" on his data port rather than |
|
2485 initiate a connection when he receives a transfer service command. |
|
2486 When the user-PI receives an acknowledgment to the PASV command, |
|
2487 which includes the identity of the host and port being listened |
|
2488 on, the user-PI then sends A's port, a, to B in a PORT command; a |
|
2489 reply is returned. The user-PI may then send the corresponding |
|
2490 service commands to A and B. Server B initiates the connection |
|
2491 and the transfer proceeds. The command-reply sequence is listed |
|
2492 below where the messages are vertically synchronous but |
|
2493 horizontally asynchronous: |
|
2494 |
|
2495 |
|
2496 |
|
2497 |
|
2498 |
|
2499 |
|
2500 |
|
2501 |
|
2502 |
|
2503 |
|
2504 |
|
2505 |
|
2506 |
|
2507 Postel & Reynolds [Page 44] |
|
2508 |
|
2509 |
|
2510 |
|
2511 RFC 959 October 1985 |
|
2512 File Transfer Protocol |
|
2513 |
|
2514 |
|
2515 User-PI - Server A User-PI - Server B |
|
2516 ------------------ ------------------ |
|
2517 |
|
2518 C->A : Connect C->B : Connect |
|
2519 C->A : PASV |
|
2520 A->C : 227 Entering Passive Mode. A1,A2,A3,A4,a1,a2 |
|
2521 C->B : PORT A1,A2,A3,A4,a1,a2 |
|
2522 B->C : 200 Okay |
|
2523 C->A : STOR C->B : RETR |
|
2524 B->A : Connect to HOST-A, PORT-a |
|
2525 |
|
2526 Figure 3 |
|
2527 |
|
2528 The data connection shall be closed by the server under the |
|
2529 conditions described in the Section on Establishing Data |
|
2530 Connections. If the data connection is to be closed following a |
|
2531 data transfer where closing the connection is not required to |
|
2532 indicate the end-of-file, the server must do so immediately. |
|
2533 Waiting until after a new transfer command is not permitted |
|
2534 because the user-process will have already tested the data |
|
2535 connection to see if it needs to do a "listen"; (remember that the |
|
2536 user must "listen" on a closed data port BEFORE sending the |
|
2537 transfer request). To prevent a race condition here, the server |
|
2538 sends a reply (226) after closing the data connection (or if the |
|
2539 connection is left open, a "file transfer completed" reply (250) |
|
2540 and the user-PI should wait for one of these replies before |
|
2541 issuing a new transfer command). |
|
2542 |
|
2543 Any time either the user or server see that the connection is |
|
2544 being closed by the other side, it should promptly read any |
|
2545 remaining data queued on the connection and issue the close on its |
|
2546 own side. |
|
2547 |
|
2548 5.3. COMMANDS |
|
2549 |
|
2550 The commands are Telnet character strings transmitted over the |
|
2551 control connections as described in the Section on FTP Commands. |
|
2552 The command functions and semantics are described in the Section |
|
2553 on Access Control Commands, Transfer Parameter Commands, FTP |
|
2554 Service Commands, and Miscellaneous Commands. The command syntax |
|
2555 is specified here. |
|
2556 |
|
2557 The commands begin with a command code followed by an argument |
|
2558 field. The command codes are four or fewer alphabetic characters. |
|
2559 Upper and lower case alphabetic characters are to be treated |
|
2560 identically. Thus, any of the following may represent the |
|
2561 retrieve command: |
|
2562 |
|
2563 |
|
2564 Postel & Reynolds [Page 45] |
|
2565 |
|
2566 |
|
2567 |
|
2568 RFC 959 October 1985 |
|
2569 File Transfer Protocol |
|
2570 |
|
2571 |
|
2572 RETR Retr retr ReTr rETr |
|
2573 |
|
2574 This also applies to any symbols representing parameter values, |
|
2575 such as A or a for ASCII TYPE. The command codes and the argument |
|
2576 fields are separated by one or more spaces. |
|
2577 |
|
2578 The argument field consists of a variable length character string |
|
2579 ending with the character sequence <CRLF> (Carriage Return, Line |
|
2580 Feed) for NVT-ASCII representation; for other negotiated languages |
|
2581 a different end of line character might be used. It should be |
|
2582 noted that the server is to take no action until the end of line |
|
2583 code is received. |
|
2584 |
|
2585 The syntax is specified below in NVT-ASCII. All characters in the |
|
2586 argument field are ASCII characters including any ASCII |
|
2587 represented decimal integers. Square brackets denote an optional |
|
2588 argument field. If the option is not taken, the appropriate |
|
2589 default is implied. |
|
2590 |
|
2591 |
|
2592 |
|
2593 |
|
2594 |
|
2595 |
|
2596 |
|
2597 |
|
2598 |
|
2599 |
|
2600 |
|
2601 |
|
2602 |
|
2603 |
|
2604 |
|
2605 |
|
2606 |
|
2607 |
|
2608 |
|
2609 |
|
2610 |
|
2611 |
|
2612 |
|
2613 |
|
2614 |
|
2615 |
|
2616 |
|
2617 |
|
2618 |
|
2619 |
|
2620 |
|
2621 Postel & Reynolds [Page 46] |
|
2622 |
|
2623 |
|
2624 |
|
2625 RFC 959 October 1985 |
|
2626 File Transfer Protocol |
|
2627 |
|
2628 |
|
2629 5.3.1. FTP COMMANDS |
|
2630 |
|
2631 The following are the FTP commands: |
|
2632 |
|
2633 USER <SP> <username> <CRLF> |
|
2634 PASS <SP> <password> <CRLF> |
|
2635 ACCT <SP> <account-information> <CRLF> |
|
2636 CWD <SP> <pathname> <CRLF> |
|
2637 CDUP <CRLF> |
|
2638 SMNT <SP> <pathname> <CRLF> |
|
2639 QUIT <CRLF> |
|
2640 REIN <CRLF> |
|
2641 PORT <SP> <host-port> <CRLF> |
|
2642 PASV <CRLF> |
|
2643 TYPE <SP> <type-code> <CRLF> |
|
2644 STRU <SP> <structure-code> <CRLF> |
|
2645 MODE <SP> <mode-code> <CRLF> |
|
2646 RETR <SP> <pathname> <CRLF> |
|
2647 STOR <SP> <pathname> <CRLF> |
|
2648 STOU <CRLF> |
|
2649 APPE <SP> <pathname> <CRLF> |
|
2650 ALLO <SP> <decimal-integer> |
|
2651 [<SP> R <SP> <decimal-integer>] <CRLF> |
|
2652 REST <SP> <marker> <CRLF> |
|
2653 RNFR <SP> <pathname> <CRLF> |
|
2654 RNTO <SP> <pathname> <CRLF> |
|
2655 ABOR <CRLF> |
|
2656 DELE <SP> <pathname> <CRLF> |
|
2657 RMD <SP> <pathname> <CRLF> |
|
2658 MKD <SP> <pathname> <CRLF> |
|
2659 PWD <CRLF> |
|
2660 LIST [<SP> <pathname>] <CRLF> |
|
2661 NLST [<SP> <pathname>] <CRLF> |
|
2662 SITE <SP> <string> <CRLF> |
|
2663 SYST <CRLF> |
|
2664 STAT [<SP> <pathname>] <CRLF> |
|
2665 HELP [<SP> <string>] <CRLF> |
|
2666 NOOP <CRLF> |
|
2667 |
|
2668 |
|
2669 |
|
2670 |
|
2671 |
|
2672 |
|
2673 |
|
2674 |
|
2675 |
|
2676 |
|
2677 |
|
2678 Postel & Reynolds [Page 47] |
|
2679 |
|
2680 |
|
2681 |
|
2682 RFC 959 October 1985 |
|
2683 File Transfer Protocol |
|
2684 |
|
2685 |
|
2686 5.3.2. FTP COMMAND ARGUMENTS |
|
2687 |
|
2688 The syntax of the above argument fields (using BNF notation |
|
2689 where applicable) is: |
|
2690 |
|
2691 <username> ::= <string> |
|
2692 <password> ::= <string> |
|
2693 <account-information> ::= <string> |
|
2694 <string> ::= <char> | <char><string> |
|
2695 <char> ::= any of the 128 ASCII characters except <CR> and |
|
2696 <LF> |
|
2697 <marker> ::= <pr-string> |
|
2698 <pr-string> ::= <pr-char> | <pr-char><pr-string> |
|
2699 <pr-char> ::= printable characters, any |
|
2700 ASCII code 33 through 126 |
|
2701 <byte-size> ::= <number> |
|
2702 <host-port> ::= <host-number>,<port-number> |
|
2703 <host-number> ::= <number>,<number>,<number>,<number> |
|
2704 <port-number> ::= <number>,<number> |
|
2705 <number> ::= any decimal integer 1 through 255 |
|
2706 <form-code> ::= N | T | C |
|
2707 <type-code> ::= A [<sp> <form-code>] |
|
2708 | E [<sp> <form-code>] |
|
2709 | I |
|
2710 | L <sp> <byte-size> |
|
2711 <structure-code> ::= F | R | P |
|
2712 <mode-code> ::= S | B | C |
|
2713 <pathname> ::= <string> |
|
2714 <decimal-integer> ::= any decimal integer |
|
2715 |
|
2716 |
|
2717 |
|
2718 |
|
2719 |
|
2720 |
|
2721 |
|
2722 |
|
2723 |
|
2724 |
|
2725 |
|
2726 |
|
2727 |
|
2728 |
|
2729 |
|
2730 |
|
2731 |
|
2732 |
|
2733 |
|
2734 |
|
2735 Postel & Reynolds [Page 48] |
|
2736 |
|
2737 |
|
2738 |
|
2739 RFC 959 October 1985 |
|
2740 File Transfer Protocol |
|
2741 |
|
2742 |
|
2743 5.4. SEQUENCING OF COMMANDS AND REPLIES |
|
2744 |
|
2745 The communication between the user and server is intended to be an |
|
2746 alternating dialogue. As such, the user issues an FTP command and |
|
2747 the server responds with a prompt primary reply. The user should |
|
2748 wait for this initial primary success or failure response before |
|
2749 sending further commands. |
|
2750 |
|
2751 Certain commands require a second reply for which the user should |
|
2752 also wait. These replies may, for example, report on the progress |
|
2753 or completion of file transfer or the closing of the data |
|
2754 connection. They are secondary replies to file transfer commands. |
|
2755 |
|
2756 One important group of informational replies is the connection |
|
2757 greetings. Under normal circumstances, a server will send a 220 |
|
2758 reply, "awaiting input", when the connection is completed. The |
|
2759 user should wait for this greeting message before sending any |
|
2760 commands. If the server is unable to accept input right away, a |
|
2761 120 "expected delay" reply should be sent immediately and a 220 |
|
2762 reply when ready. The user will then know not to hang up if there |
|
2763 is a delay. |
|
2764 |
|
2765 Spontaneous Replies |
|
2766 |
|
2767 Sometimes "the system" spontaneously has a message to be sent |
|
2768 to a user (usually all users). For example, "System going down |
|
2769 in 15 minutes". There is no provision in FTP for such |
|
2770 spontaneous information to be sent from the server to the user. |
|
2771 It is recommended that such information be queued in the |
|
2772 server-PI and delivered to the user-PI in the next reply |
|
2773 (possibly making it a multi-line reply). |
|
2774 |
|
2775 The table below lists alternative success and failure replies for |
|
2776 each command. These must be strictly adhered to; a server may |
|
2777 substitute text in the replies, but the meaning and action implied |
|
2778 by the code numbers and by the specific command reply sequence |
|
2779 cannot be altered. |
|
2780 |
|
2781 Command-Reply Sequences |
|
2782 |
|
2783 In this section, the command-reply sequence is presented. Each |
|
2784 command is listed with its possible replies; command groups are |
|
2785 listed together. Preliminary replies are listed first (with |
|
2786 their succeeding replies indented and under them), then |
|
2787 positive and negative completion, and finally intermediary |
|
2788 |
|
2789 |
|
2790 |
|
2791 |
|
2792 Postel & Reynolds [Page 49] |
|
2793 |
|
2794 |
|
2795 |
|
2796 RFC 959 October 1985 |
|
2797 File Transfer Protocol |
|
2798 |
|
2799 |
|
2800 replies with the remaining commands from the sequence |
|
2801 following. This listing forms the basis for the state |
|
2802 diagrams, which will be presented separately. |
|
2803 |
|
2804 Connection Establishment |
|
2805 120 |
|
2806 220 |
|
2807 220 |
|
2808 421 |
|
2809 Login |
|
2810 USER |
|
2811 230 |
|
2812 530 |
|
2813 500, 501, 421 |
|
2814 331, 332 |
|
2815 PASS |
|
2816 230 |
|
2817 202 |
|
2818 530 |
|
2819 500, 501, 503, 421 |
|
2820 332 |
|
2821 ACCT |
|
2822 230 |
|
2823 202 |
|
2824 530 |
|
2825 500, 501, 503, 421 |
|
2826 CWD |
|
2827 250 |
|
2828 500, 501, 502, 421, 530, 550 |
|
2829 CDUP |
|
2830 200 |
|
2831 500, 501, 502, 421, 530, 550 |
|
2832 SMNT |
|
2833 202, 250 |
|
2834 500, 501, 502, 421, 530, 550 |
|
2835 Logout |
|
2836 REIN |
|
2837 120 |
|
2838 220 |
|
2839 220 |
|
2840 421 |
|
2841 500, 502 |
|
2842 QUIT |
|
2843 221 |
|
2844 500 |
|
2845 |
|
2846 |
|
2847 |
|
2848 |
|
2849 Postel & Reynolds [Page 50] |
|
2850 |
|
2851 |
|
2852 |
|
2853 RFC 959 October 1985 |
|
2854 File Transfer Protocol |
|
2855 |
|
2856 |
|
2857 Transfer parameters |
|
2858 PORT |
|
2859 200 |
|
2860 500, 501, 421, 530 |
|
2861 PASV |
|
2862 227 |
|
2863 500, 501, 502, 421, 530 |
|
2864 MODE |
|
2865 200 |
|
2866 500, 501, 504, 421, 530 |
|
2867 TYPE |
|
2868 200 |
|
2869 500, 501, 504, 421, 530 |
|
2870 STRU |
|
2871 200 |
|
2872 500, 501, 504, 421, 530 |
|
2873 File action commands |
|
2874 ALLO |
|
2875 200 |
|
2876 202 |
|
2877 500, 501, 504, 421, 530 |
|
2878 REST |
|
2879 500, 501, 502, 421, 530 |
|
2880 350 |
|
2881 STOR |
|
2882 125, 150 |
|
2883 (110) |
|
2884 226, 250 |
|
2885 425, 426, 451, 551, 552 |
|
2886 532, 450, 452, 553 |
|
2887 500, 501, 421, 530 |
|
2888 STOU |
|
2889 125, 150 |
|
2890 (110) |
|
2891 226, 250 |
|
2892 425, 426, 451, 551, 552 |
|
2893 532, 450, 452, 553 |
|
2894 500, 501, 421, 530 |
|
2895 RETR |
|
2896 125, 150 |
|
2897 (110) |
|
2898 226, 250 |
|
2899 425, 426, 451 |
|
2900 450, 550 |
|
2901 500, 501, 421, 530 |
|
2902 |
|
2903 |
|
2904 |
|
2905 |
|
2906 Postel & Reynolds [Page 51] |
|
2907 |
|
2908 |
|
2909 |
|
2910 RFC 959 October 1985 |
|
2911 File Transfer Protocol |
|
2912 |
|
2913 |
|
2914 LIST |
|
2915 125, 150 |
|
2916 226, 250 |
|
2917 425, 426, 451 |
|
2918 450 |
|
2919 500, 501, 502, 421, 530 |
|
2920 NLST |
|
2921 125, 150 |
|
2922 226, 250 |
|
2923 425, 426, 451 |
|
2924 450 |
|
2925 500, 501, 502, 421, 530 |
|
2926 APPE |
|
2927 125, 150 |
|
2928 (110) |
|
2929 226, 250 |
|
2930 425, 426, 451, 551, 552 |
|
2931 532, 450, 550, 452, 553 |
|
2932 500, 501, 502, 421, 530 |
|
2933 RNFR |
|
2934 450, 550 |
|
2935 500, 501, 502, 421, 530 |
|
2936 350 |
|
2937 RNTO |
|
2938 250 |
|
2939 532, 553 |
|
2940 500, 501, 502, 503, 421, 530 |
|
2941 DELE |
|
2942 250 |
|
2943 450, 550 |
|
2944 500, 501, 502, 421, 530 |
|
2945 RMD |
|
2946 250 |
|
2947 500, 501, 502, 421, 530, 550 |
|
2948 MKD |
|
2949 257 |
|
2950 500, 501, 502, 421, 530, 550 |
|
2951 PWD |
|
2952 257 |
|
2953 500, 501, 502, 421, 550 |
|
2954 ABOR |
|
2955 225, 226 |
|
2956 500, 501, 502, 421 |
|
2957 |
|
2958 |
|
2959 |
|
2960 |
|
2961 |
|
2962 |
|
2963 Postel & Reynolds [Page 52] |
|
2964 |
|
2965 |
|
2966 |
|
2967 RFC 959 October 1985 |
|
2968 File Transfer Protocol |
|
2969 |
|
2970 |
|
2971 Informational commands |
|
2972 SYST |
|
2973 215 |
|
2974 500, 501, 502, 421 |
|
2975 STAT |
|
2976 211, 212, 213 |
|
2977 450 |
|
2978 500, 501, 502, 421, 530 |
|
2979 HELP |
|
2980 211, 214 |
|
2981 500, 501, 502, 421 |
|
2982 Miscellaneous commands |
|
2983 SITE |
|
2984 200 |
|
2985 202 |
|
2986 500, 501, 530 |
|
2987 NOOP |
|
2988 200 |
|
2989 500 421 |
|
2990 |
|
2991 |
|
2992 |
|
2993 |
|
2994 |
|
2995 |
|
2996 |
|
2997 |
|
2998 |
|
2999 |
|
3000 |
|
3001 |
|
3002 |
|
3003 |
|
3004 |
|
3005 |
|
3006 |
|
3007 |
|
3008 |
|
3009 |
|
3010 |
|
3011 |
|
3012 |
|
3013 |
|
3014 |
|
3015 |
|
3016 |
|
3017 |
|
3018 |
|
3019 |
|
3020 Postel & Reynolds [Page 53] |
|
3021 |
|
3022 |
|
3023 |
|
3024 RFC 959 October 1985 |
|
3025 File Transfer Protocol |
|
3026 |
|
3027 |
|
3028 6. STATE DIAGRAMS |
|
3029 |
|
3030 Here we present state diagrams for a very simple minded FTP |
|
3031 implementation. Only the first digit of the reply codes is used. |
|
3032 There is one state diagram for each group of FTP commands or command |
|
3033 sequences. |
|
3034 |
|
3035 The command groupings were determined by constructing a model for |
|
3036 each command then collecting together the commands with structurally |
|
3037 identical models. |
|
3038 |
|
3039 For each command or command sequence there are three possible |
|
3040 outcomes: success (S), failure (F), and error (E). In the state |
|
3041 diagrams below we use the symbol B for "begin", and the symbol W for |
|
3042 "wait for reply". |
|
3043 |
|
3044 We first present the diagram that represents the largest group of FTP |
|
3045 commands: |
|
3046 |
|
3047 |
|
3048 1,3 +---+ |
|
3049 ----------->| E | |
|
3050 | +---+ |
|
3051 | |
|
3052 +---+ cmd +---+ 2 +---+ |
|
3053 | B |---------->| W |---------->| S | |
|
3054 +---+ +---+ +---+ |
|
3055 | |
|
3056 | 4,5 +---+ |
|
3057 ----------->| F | |
|
3058 +---+ |
|
3059 |
|
3060 |
|
3061 This diagram models the commands: |
|
3062 |
|
3063 ABOR, ALLO, DELE, CWD, CDUP, SMNT, HELP, MODE, NOOP, PASV, |
|
3064 QUIT, SITE, PORT, SYST, STAT, RMD, MKD, PWD, STRU, and TYPE. |
|
3065 |
|
3066 |
|
3067 |
|
3068 |
|
3069 |
|
3070 |
|
3071 |
|
3072 |
|
3073 |
|
3074 |
|
3075 |
|
3076 |
|
3077 Postel & Reynolds [Page 54] |
|
3078 |
|
3079 |
|
3080 |
|
3081 RFC 959 October 1985 |
|
3082 File Transfer Protocol |
|
3083 |
|
3084 |
|
3085 The other large group of commands is represented by a very similar |
|
3086 diagram: |
|
3087 |
|
3088 |
|
3089 3 +---+ |
|
3090 ----------->| E | |
|
3091 | +---+ |
|
3092 | |
|
3093 +---+ cmd +---+ 2 +---+ |
|
3094 | B |---------->| W |---------->| S | |
|
3095 +---+ --->+---+ +---+ |
|
3096 | | | |
|
3097 | | | 4,5 +---+ |
|
3098 | 1 | ----------->| F | |
|
3099 ----- +---+ |
|
3100 |
|
3101 |
|
3102 This diagram models the commands: |
|
3103 |
|
3104 APPE, LIST, NLST, REIN, RETR, STOR, and STOU. |
|
3105 |
|
3106 Note that this second model could also be used to represent the first |
|
3107 group of commands, the only difference being that in the first group |
|
3108 the 100 series replies are unexpected and therefore treated as error, |
|
3109 while the second group expects (some may require) 100 series replies. |
|
3110 Remember that at most, one 100 series reply is allowed per command. |
|
3111 |
|
3112 The remaining diagrams model command sequences, perhaps the simplest |
|
3113 of these is the rename sequence: |
|
3114 |
|
3115 |
|
3116 +---+ RNFR +---+ 1,2 +---+ |
|
3117 | B |---------->| W |---------->| E | |
|
3118 +---+ +---+ -->+---+ |
|
3119 | | | |
|
3120 3 | | 4,5 | |
|
3121 -------------- ------ | |
|
3122 | | | +---+ |
|
3123 | ------------->| S | |
|
3124 | | 1,3 | | +---+ |
|
3125 | 2| -------- |
|
3126 | | | | |
|
3127 V | | | |
|
3128 +---+ RNTO +---+ 4,5 ----->+---+ |
|
3129 | |---------->| W |---------->| F | |
|
3130 +---+ +---+ +---+ |
|
3131 |
|
3132 |
|
3133 |
|
3134 Postel & Reynolds [Page 55] |
|
3135 |
|
3136 |
|
3137 |
|
3138 RFC 959 October 1985 |
|
3139 File Transfer Protocol |
|
3140 |
|
3141 |
|
3142 The next diagram is a simple model of the Restart command: |
|
3143 |
|
3144 |
|
3145 +---+ REST +---+ 1,2 +---+ |
|
3146 | B |---------->| W |---------->| E | |
|
3147 +---+ +---+ -->+---+ |
|
3148 | | | |
|
3149 3 | | 4,5 | |
|
3150 -------------- ------ | |
|
3151 | | | +---+ |
|
3152 | ------------->| S | |
|
3153 | | 3 | | +---+ |
|
3154 | 2| -------- |
|
3155 | | | | |
|
3156 V | | | |
|
3157 +---+ cmd +---+ 4,5 ----->+---+ |
|
3158 | |---------->| W |---------->| F | |
|
3159 +---+ -->+---+ +---+ |
|
3160 | | |
|
3161 | 1 | |
|
3162 ------ |
|
3163 |
|
3164 |
|
3165 Where "cmd" is APPE, STOR, or RETR. |
|
3166 |
|
3167 We note that the above three models are similar. The Restart differs |
|
3168 from the Rename two only in the treatment of 100 series replies at |
|
3169 the second stage, while the second group expects (some may require) |
|
3170 100 series replies. Remember that at most, one 100 series reply is |
|
3171 allowed per command. |
|
3172 |
|
3173 |
|
3174 |
|
3175 |
|
3176 |
|
3177 |
|
3178 |
|
3179 |
|
3180 |
|
3181 |
|
3182 |
|
3183 |
|
3184 |
|
3185 |
|
3186 |
|
3187 |
|
3188 |
|
3189 |
|
3190 |
|
3191 Postel & Reynolds [Page 56] |
|
3192 |
|
3193 |
|
3194 |
|
3195 RFC 959 October 1985 |
|
3196 File Transfer Protocol |
|
3197 |
|
3198 |
|
3199 The most complicated diagram is for the Login sequence: |
|
3200 |
|
3201 |
|
3202 1 |
|
3203 +---+ USER +---+------------->+---+ |
|
3204 | B |---------->| W | 2 ---->| E | |
|
3205 +---+ +---+------ | -->+---+ |
|
3206 | | | | | |
|
3207 3 | | 4,5 | | | |
|
3208 -------------- ----- | | | |
|
3209 | | | | | |
|
3210 | | | | | |
|
3211 | --------- | |
|
3212 | 1| | | | |
|
3213 V | | | | |
|
3214 +---+ PASS +---+ 2 | ------>+---+ |
|
3215 | |---------->| W |------------->| S | |
|
3216 +---+ +---+ ---------->+---+ |
|
3217 | | | | | |
|
3218 3 | |4,5| | | |
|
3219 -------------- -------- | |
|
3220 | | | | | |
|
3221 | | | | | |
|
3222 | ----------- |
|
3223 | 1,3| | | | |
|
3224 V | 2| | | |
|
3225 +---+ ACCT +---+-- | ----->+---+ |
|
3226 | |---------->| W | 4,5 -------->| F | |
|
3227 +---+ +---+------------->+---+ |
|
3228 |
|
3229 |
|
3230 |
|
3231 |
|
3232 |
|
3233 |
|
3234 |
|
3235 |
|
3236 |
|
3237 |
|
3238 |
|
3239 |
|
3240 |
|
3241 |
|
3242 |
|
3243 |
|
3244 |
|
3245 |
|
3246 |
|
3247 |
|
3248 Postel & Reynolds [Page 57] |
|
3249 |
|
3250 |
|
3251 |
|
3252 RFC 959 October 1985 |
|
3253 File Transfer Protocol |
|
3254 |
|
3255 |
|
3256 Finally, we present a generalized diagram that could be used to model |
|
3257 the command and reply interchange: |
|
3258 |
|
3259 |
|
3260 ------------------------------------ |
|
3261 | | |
|
3262 Begin | | |
|
3263 | V | |
|
3264 | +---+ cmd +---+ 2 +---+ | |
|
3265 -->| |------->| |---------->| | | |
|
3266 | | | W | | S |-----| |
|
3267 -->| | -->| |----- | | | |
|
3268 | +---+ | +---+ 4,5 | +---+ | |
|
3269 | | | | | | | |
|
3270 | | | 1| |3 | +---+ | |
|
3271 | | | | | | | | | |
|
3272 | | ---- | ---->| F |----- |
|
3273 | | | | | |
|
3274 | | | +---+ |
|
3275 ------------------- |
|
3276 | |
|
3277 | |
|
3278 V |
|
3279 End |
|
3280 |
|
3281 |
|
3282 |
|
3283 |
|
3284 |
|
3285 |
|
3286 |
|
3287 |
|
3288 |
|
3289 |
|
3290 |
|
3291 |
|
3292 |
|
3293 |
|
3294 |
|
3295 |
|
3296 |
|
3297 |
|
3298 |
|
3299 |
|
3300 |
|
3301 |
|
3302 |
|
3303 |
|
3304 |
|
3305 Postel & Reynolds [Page 58] |
|
3306 |
|
3307 |
|
3308 |
|
3309 RFC 959 October 1985 |
|
3310 File Transfer Protocol |
|
3311 |
|
3312 |
|
3313 7. TYPICAL FTP SCENARIO |
|
3314 |
|
3315 User at host U wanting to transfer files to/from host S: |
|
3316 |
|
3317 In general, the user will communicate to the server via a mediating |
|
3318 user-FTP process. The following may be a typical scenario. The |
|
3319 user-FTP prompts are shown in parentheses, '---->' represents |
|
3320 commands from host U to host S, and '<----' represents replies from |
|
3321 host S to host U. |
|
3322 |
|
3323 LOCAL COMMANDS BY USER ACTION INVOLVED |
|
3324 |
|
3325 ftp (host) multics<CR> Connect to host S, port L, |
|
3326 establishing control connections. |
|
3327 <---- 220 Service ready <CRLF>. |
|
3328 username Doe <CR> USER Doe<CRLF>----> |
|
3329 <---- 331 User name ok, |
|
3330 need password<CRLF>. |
|
3331 password mumble <CR> PASS mumble<CRLF>----> |
|
3332 <---- 230 User logged in<CRLF>. |
|
3333 retrieve (local type) ASCII<CR> |
|
3334 (local pathname) test 1 <CR> User-FTP opens local file in ASCII. |
|
3335 (for. pathname) test.pl1<CR> RETR test.pl1<CRLF> ----> |
|
3336 <---- 150 File status okay; |
|
3337 about to open data |
|
3338 connection<CRLF>. |
|
3339 Server makes data connection |
|
3340 to port U. |
|
3341 |
|
3342 <---- 226 Closing data connection, |
|
3343 file transfer successful<CRLF>. |
|
3344 type Image<CR> TYPE I<CRLF> ----> |
|
3345 <---- 200 Command OK<CRLF> |
|
3346 store (local type) image<CR> |
|
3347 (local pathname) file dump<CR> User-FTP opens local file in Image. |
|
3348 (for.pathname) >udd>cn>fd<CR> STOR >udd>cn>fd<CRLF> ----> |
|
3349 <---- 550 Access denied<CRLF> |
|
3350 terminate QUIT <CRLF> ----> |
|
3351 Server closes all |
|
3352 connections. |
|
3353 |
|
3354 8. CONNECTION ESTABLISHMENT |
|
3355 |
|
3356 The FTP control connection is established via TCP between the user |
|
3357 process port U and the server process port L. This protocol is |
|
3358 assigned the service port 21 (25 octal), that is L=21. |
|
3359 |
|
3360 |
|
3361 |
|
3362 Postel & Reynolds [Page 59] |
|
3363 |
|
3364 |
|
3365 |
|
3366 RFC 959 October 1985 |
|
3367 File Transfer Protocol |
|
3368 |
|
3369 |
|
3370 APPENDIX I - PAGE STRUCTURE |
|
3371 |
|
3372 The need for FTP to support page structure derives principally from |
|
3373 the need to support efficient transmission of files between TOPS-20 |
|
3374 systems, particularly the files used by NLS. |
|
3375 |
|
3376 The file system of TOPS-20 is based on the concept of pages. The |
|
3377 operating system is most efficient at manipulating files as pages. |
|
3378 The operating system provides an interface to the file system so that |
|
3379 many applications view files as sequential streams of characters. |
|
3380 However, a few applications use the underlying page structures |
|
3381 directly, and some of these create holey files. |
|
3382 |
|
3383 A TOPS-20 disk file consists of four things: a pathname, a page |
|
3384 table, a (possibly empty) set of pages, and a set of attributes. |
|
3385 |
|
3386 The pathname is specified in the RETR or STOR command. It includes |
|
3387 the directory name, file name, file name extension, and generation |
|
3388 number. |
|
3389 |
|
3390 The page table contains up to 2**18 entries. Each entry may be |
|
3391 EMPTY, or may point to a page. If it is not empty, there are also |
|
3392 some page-specific access bits; not all pages of a file need have the |
|
3393 same access protection. |
|
3394 |
|
3395 A page is a contiguous set of 512 words of 36 bits each. |
|
3396 |
|
3397 The attributes of the file, in the File Descriptor Block (FDB), |
|
3398 contain such things as creation time, write time, read time, writer's |
|
3399 byte-size, end-of-file pointer, count of reads and writes, backup |
|
3400 system tape numbers, etc. |
|
3401 |
|
3402 Note that there is NO requirement that entries in the page table be |
|
3403 contiguous. There may be empty page table slots between occupied |
|
3404 ones. Also, the end of file pointer is simply a number. There is no |
|
3405 requirement that it in fact point at the "last" datum in the file. |
|
3406 Ordinary sequential I/O calls in TOPS-20 will cause the end of file |
|
3407 pointer to be left after the last datum written, but other operations |
|
3408 may cause it not to be so, if a particular programming system so |
|
3409 requires. |
|
3410 |
|
3411 In fact, in both of these special cases, "holey" files and |
|
3412 end-of-file pointers NOT at the end of the file, occur with NLS data |
|
3413 files. |
|
3414 |
|
3415 |
|
3416 |
|
3417 |
|
3418 |
|
3419 Postel & Reynolds [Page 60] |
|
3420 |
|
3421 |
|
3422 |
|
3423 RFC 959 October 1985 |
|
3424 File Transfer Protocol |
|
3425 |
|
3426 |
|
3427 The TOPS-20 paged files can be sent with the FTP transfer parameters: |
|
3428 TYPE L 36, STRU P, and MODE S (in fact, any mode could be used). |
|
3429 |
|
3430 Each page of information has a header. Each header field, which is a |
|
3431 logical byte, is a TOPS-20 word, since the TYPE is L 36. |
|
3432 |
|
3433 The header fields are: |
|
3434 |
|
3435 Word 0: Header Length. |
|
3436 |
|
3437 The header length is 5. |
|
3438 |
|
3439 Word 1: Page Index. |
|
3440 |
|
3441 If the data is a disk file page, this is the number of that |
|
3442 page in the file's page map. Empty pages (holes) in the file |
|
3443 are simply not sent. Note that a hole is NOT the same as a |
|
3444 page of zeros. |
|
3445 |
|
3446 Word 2: Data Length. |
|
3447 |
|
3448 The number of data words in this page, following the header. |
|
3449 Thus, the total length of the transmission unit is the Header |
|
3450 Length plus the Data Length. |
|
3451 |
|
3452 Word 3: Page Type. |
|
3453 |
|
3454 A code for what type of chunk this is. A data page is type 3, |
|
3455 the FDB page is type 2. |
|
3456 |
|
3457 Word 4: Page Access Control. |
|
3458 |
|
3459 The access bits associated with the page in the file's page |
|
3460 map. (This full word quantity is put into AC2 of an SPACS by |
|
3461 the program reading from net to disk.) |
|
3462 |
|
3463 After the header are Data Length data words. Data Length is |
|
3464 currently either 512 for a data page or 31 for an FDB. Trailing |
|
3465 zeros in a disk file page may be discarded, making Data Length less |
|
3466 than 512 in that case. |
|
3467 |
|
3468 |
|
3469 |
|
3470 |
|
3471 |
|
3472 |
|
3473 |
|
3474 |
|
3475 |
|
3476 Postel & Reynolds [Page 61] |
|
3477 |
|
3478 |
|
3479 |
|
3480 RFC 959 October 1985 |
|
3481 File Transfer Protocol |
|
3482 |
|
3483 |
|
3484 APPENDIX II - DIRECTORY COMMANDS |
|
3485 |
|
3486 Since UNIX has a tree-like directory structure in which directories |
|
3487 are as easy to manipulate as ordinary files, it is useful to expand |
|
3488 the FTP servers on these machines to include commands which deal with |
|
3489 the creation of directories. Since there are other hosts on the |
|
3490 ARPA-Internet which have tree-like directories (including TOPS-20 and |
|
3491 Multics), these commands are as general as possible. |
|
3492 |
|
3493 Four directory commands have been added to FTP: |
|
3494 |
|
3495 MKD pathname |
|
3496 |
|
3497 Make a directory with the name "pathname". |
|
3498 |
|
3499 RMD pathname |
|
3500 |
|
3501 Remove the directory with the name "pathname". |
|
3502 |
|
3503 PWD |
|
3504 |
|
3505 Print the current working directory name. |
|
3506 |
|
3507 CDUP |
|
3508 |
|
3509 Change to the parent of the current working directory. |
|
3510 |
|
3511 The "pathname" argument should be created (removed) as a |
|
3512 subdirectory of the current working directory, unless the "pathname" |
|
3513 string contains sufficient information to specify otherwise to the |
|
3514 server, e.g., "pathname" is an absolute pathname (in UNIX and |
|
3515 Multics), or pathname is something like "<abso.lute.path>" to |
|
3516 TOPS-20. |
|
3517 |
|
3518 REPLY CODES |
|
3519 |
|
3520 The CDUP command is a special case of CWD, and is included to |
|
3521 simplify the implementation of programs for transferring directory |
|
3522 trees between operating systems having different syntaxes for |
|
3523 naming the parent directory. The reply codes for CDUP be |
|
3524 identical to the reply codes of CWD. |
|
3525 |
|
3526 The reply codes for RMD be identical to the reply codes for its |
|
3527 file analogue, DELE. |
|
3528 |
|
3529 The reply codes for MKD, however, are a bit more complicated. A |
|
3530 freshly created directory will probably be the object of a future |
|
3531 |
|
3532 |
|
3533 Postel & Reynolds [Page 62] |
|
3534 |
|
3535 |
|
3536 |
|
3537 RFC 959 October 1985 |
|
3538 File Transfer Protocol |
|
3539 |
|
3540 |
|
3541 CWD command. Unfortunately, the argument to MKD may not always be |
|
3542 a suitable argument for CWD. This is the case, for example, when |
|
3543 a TOPS-20 subdirectory is created by giving just the subdirectory |
|
3544 name. That is, with a TOPS-20 server FTP, the command sequence |
|
3545 |
|
3546 MKD MYDIR |
|
3547 CWD MYDIR |
|
3548 |
|
3549 will fail. The new directory may only be referred to by its |
|
3550 "absolute" name; e.g., if the MKD command above were issued while |
|
3551 connected to the directory <DFRANKLIN>, the new subdirectory |
|
3552 could only be referred to by the name <DFRANKLIN.MYDIR>. |
|
3553 |
|
3554 Even on UNIX and Multics, however, the argument given to MKD may |
|
3555 not be suitable. If it is a "relative" pathname (i.e., a pathname |
|
3556 which is interpreted relative to the current directory), the user |
|
3557 would need to be in the same current directory in order to reach |
|
3558 the subdirectory. Depending on the application, this may be |
|
3559 inconvenient. It is not very robust in any case. |
|
3560 |
|
3561 To solve these problems, upon successful completion of an MKD |
|
3562 command, the server should return a line of the form: |
|
3563 |
|
3564 257<space>"<directory-name>"<space><commentary> |
|
3565 |
|
3566 That is, the server will tell the user what string to use when |
|
3567 referring to the created directory. The directory name can |
|
3568 contain any character; embedded double-quotes should be escaped by |
|
3569 double-quotes (the "quote-doubling" convention). |
|
3570 |
|
3571 For example, a user connects to the directory /usr/dm, and creates |
|
3572 a subdirectory, named pathname: |
|
3573 |
|
3574 CWD /usr/dm |
|
3575 200 directory changed to /usr/dm |
|
3576 MKD pathname |
|
3577 257 "/usr/dm/pathname" directory created |
|
3578 |
|
3579 An example with an embedded double quote: |
|
3580 |
|
3581 MKD foo"bar |
|
3582 257 "/usr/dm/foo""bar" directory created |
|
3583 CWD /usr/dm/foo"bar |
|
3584 200 directory changed to /usr/dm/foo"bar |
|
3585 |
|
3586 |
|
3587 |
|
3588 |
|
3589 |
|
3590 Postel & Reynolds [Page 63] |
|
3591 |
|
3592 |
|
3593 |
|
3594 RFC 959 October 1985 |
|
3595 File Transfer Protocol |
|
3596 |
|
3597 |
|
3598 The prior existence of a subdirectory with the same name is an |
|
3599 error, and the server must return an "access denied" error reply |
|
3600 in that case. |
|
3601 |
|
3602 CWD /usr/dm |
|
3603 200 directory changed to /usr/dm |
|
3604 MKD pathname |
|
3605 521-"/usr/dm/pathname" directory already exists; |
|
3606 521 taking no action. |
|
3607 |
|
3608 The failure replies for MKD are analogous to its file creating |
|
3609 cousin, STOR. Also, an "access denied" return is given if a file |
|
3610 name with the same name as the subdirectory will conflict with the |
|
3611 creation of the subdirectory (this is a problem on UNIX, but |
|
3612 shouldn't be one on TOPS-20). |
|
3613 |
|
3614 Essentially because the PWD command returns the same type of |
|
3615 information as the successful MKD command, the successful PWD |
|
3616 command uses the 257 reply code as well. |
|
3617 |
|
3618 SUBTLETIES |
|
3619 |
|
3620 Because these commands will be most useful in transferring |
|
3621 subtrees from one machine to another, carefully observe that the |
|
3622 argument to MKD is to be interpreted as a sub-directory of the |
|
3623 current working directory, unless it contains enough information |
|
3624 for the destination host to tell otherwise. A hypothetical |
|
3625 example of its use in the TOPS-20 world: |
|
3626 |
|
3627 CWD <some.where> |
|
3628 200 Working directory changed |
|
3629 MKD overrainbow |
|
3630 257 "<some.where.overrainbow>" directory created |
|
3631 CWD overrainbow |
|
3632 431 No such directory |
|
3633 CWD <some.where.overrainbow> |
|
3634 200 Working directory changed |
|
3635 |
|
3636 CWD <some.where> |
|
3637 200 Working directory changed to <some.where> |
|
3638 MKD <unambiguous> |
|
3639 257 "<unambiguous>" directory created |
|
3640 CWD <unambiguous> |
|
3641 |
|
3642 Note that the first example results in a subdirectory of the |
|
3643 connected directory. In contrast, the argument in the second |
|
3644 example contains enough information for TOPS-20 to tell that the |
|
3645 |
|
3646 |
|
3647 Postel & Reynolds [Page 64] |
|
3648 |
|
3649 |
|
3650 |
|
3651 RFC 959 October 1985 |
|
3652 File Transfer Protocol |
|
3653 |
|
3654 |
|
3655 <unambiguous> directory is a top-level directory. Note also that |
|
3656 in the first example the user "violated" the protocol by |
|
3657 attempting to access the freshly created directory with a name |
|
3658 other than the one returned by TOPS-20. Problems could have |
|
3659 resulted in this case had there been an <overrainbow> directory; |
|
3660 this is an ambiguity inherent in some TOPS-20 implementations. |
|
3661 Similar considerations apply to the RMD command. The point is |
|
3662 this: except where to do so would violate a host's conventions for |
|
3663 denoting relative versus absolute pathnames, the host should treat |
|
3664 the operands of the MKD and RMD commands as subdirectories. The |
|
3665 257 reply to the MKD command must always contain the absolute |
|
3666 pathname of the created directory. |
|
3667 |
|
3668 |
|
3669 |
|
3670 |
|
3671 |
|
3672 |
|
3673 |
|
3674 |
|
3675 |
|
3676 |
|
3677 |
|
3678 |
|
3679 |
|
3680 |
|
3681 |
|
3682 |
|
3683 |
|
3684 |
|
3685 |
|
3686 |
|
3687 |
|
3688 |
|
3689 |
|
3690 |
|
3691 |
|
3692 |
|
3693 |
|
3694 |
|
3695 |
|
3696 |
|
3697 |
|
3698 |
|
3699 |
|
3700 |
|
3701 |
|
3702 |
|
3703 |
|
3704 Postel & Reynolds [Page 65] |
|
3705 |
|
3706 |
|
3707 |
|
3708 RFC 959 October 1985 |
|
3709 File Transfer Protocol |
|
3710 |
|
3711 |
|
3712 APPENDIX III - RFCs on FTP |
|
3713 |
|
3714 Bhushan, Abhay, "A File Transfer Protocol", RFC 114 (NIC 5823), |
|
3715 MIT-Project MAC, 16 April 1971. |
|
3716 |
|
3717 Harslem, Eric, and John Heafner, "Comments on RFC 114 (A File |
|
3718 Transfer Protocol)", RFC 141 (NIC 6726), RAND, 29 April 1971. |
|
3719 |
|
3720 Bhushan, Abhay, et al, "The File Transfer Protocol", RFC 172 |
|
3721 (NIC 6794), MIT-Project MAC, 23 June 1971. |
|
3722 |
|
3723 Braden, Bob, "Comments on DTP and FTP Proposals", RFC 238 (NIC 7663), |
|
3724 UCLA/CCN, 29 September 1971. |
|
3725 |
|
3726 Bhushan, Abhay, et al, "The File Transfer Protocol", RFC 265 |
|
3727 (NIC 7813), MIT-Project MAC, 17 November 1971. |
|
3728 |
|
3729 McKenzie, Alex, "A Suggested Addition to File Transfer Protocol", |
|
3730 RFC 281 (NIC 8163), BBN, 8 December 1971. |
|
3731 |
|
3732 Bhushan, Abhay, "The Use of "Set Data Type" Transaction in File |
|
3733 Transfer Protocol", RFC 294 (NIC 8304), MIT-Project MAC, |
|
3734 25 January 1972. |
|
3735 |
|
3736 Bhushan, Abhay, "The File Transfer Protocol", RFC 354 (NIC 10596), |
|
3737 MIT-Project MAC, 8 July 1972. |
|
3738 |
|
3739 Bhushan, Abhay, "Comments on the File Transfer Protocol (RFC 354)", |
|
3740 RFC 385 (NIC 11357), MIT-Project MAC, 18 August 1972. |
|
3741 |
|
3742 Hicks, Greg, "User FTP Documentation", RFC 412 (NIC 12404), Utah, |
|
3743 27 November 1972. |
|
3744 |
|
3745 Bhushan, Abhay, "File Transfer Protocol (FTP) Status and Further |
|
3746 Comments", RFC 414 (NIC 12406), MIT-Project MAC, 20 November 1972. |
|
3747 |
|
3748 Braden, Bob, "Comments on File Transfer Protocol", RFC 430 |
|
3749 (NIC 13299), UCLA/CCN, 7 February 1973. |
|
3750 |
|
3751 Thomas, Bob, and Bob Clements, "FTP Server-Server Interaction", |
|
3752 RFC 438 (NIC 13770), BBN, 15 January 1973. |
|
3753 |
|
3754 Braden, Bob, "Print Files in FTP", RFC 448 (NIC 13299), UCLA/CCN, |
|
3755 27 February 1973. |
|
3756 |
|
3757 McKenzie, Alex, "File Transfer Protocol", RFC 454 (NIC 14333), BBN, |
|
3758 16 February 1973. |
|
3759 |
|
3760 |
|
3761 Postel & Reynolds [Page 66] |
|
3762 |
|
3763 |
|
3764 |
|
3765 RFC 959 October 1985 |
|
3766 File Transfer Protocol |
|
3767 |
|
3768 |
|
3769 Bressler, Bob, and Bob Thomas, "Mail Retrieval via FTP", RFC 458 |
|
3770 (NIC 14378), BBN-NET and BBN-TENEX, 20 February 1973. |
|
3771 |
|
3772 Neigus, Nancy, "File Transfer Protocol", RFC 542 (NIC 17759), BBN, |
|
3773 12 July 1973. |
|
3774 |
|
3775 Krilanovich, Mark, and George Gregg, "Comments on the File Transfer |
|
3776 Protocol", RFC 607 (NIC 21255), UCSB, 7 January 1974. |
|
3777 |
|
3778 Pogran, Ken, and Nancy Neigus, "Response to RFC 607 - Comments on the |
|
3779 File Transfer Protocol", RFC 614 (NIC 21530), BBN, 28 January 1974. |
|
3780 |
|
3781 Krilanovich, Mark, George Gregg, Wayne Hathaway, and Jim White, |
|
3782 "Comments on the File Transfer Protocol", RFC 624 (NIC 22054), UCSB, |
|
3783 Ames Research Center, SRI-ARC, 28 February 1974. |
|
3784 |
|
3785 Bhushan, Abhay, "FTP Comments and Response to RFC 430", RFC 463 |
|
3786 (NIC 14573), MIT-DMCG, 21 February 1973. |
|
3787 |
|
3788 Braden, Bob, "FTP Data Compression", RFC 468 (NIC 14742), UCLA/CCN, |
|
3789 8 March 1973. |
|
3790 |
|
3791 Bhushan, Abhay, "FTP and Network Mail System", RFC 475 (NIC 14919), |
|
3792 MIT-DMCG, 6 March 1973. |
|
3793 |
|
3794 Bressler, Bob, and Bob Thomas "FTP Server-Server Interaction - II", |
|
3795 RFC 478 (NIC 14947), BBN-NET and BBN-TENEX, 26 March 1973. |
|
3796 |
|
3797 White, Jim, "Use of FTP by the NIC Journal", RFC 479 (NIC 14948), |
|
3798 SRI-ARC, 8 March 1973. |
|
3799 |
|
3800 White, Jim, "Host-Dependent FTP Parameters", RFC 480 (NIC 14949), |
|
3801 SRI-ARC, 8 March 1973. |
|
3802 |
|
3803 Padlipsky, Mike, "An FTP Command-Naming Problem", RFC 506 |
|
3804 (NIC 16157), MIT-Multics, 26 June 1973. |
|
3805 |
|
3806 Day, John, "Memo to FTP Group (Proposal for File Access Protocol)", |
|
3807 RFC 520 (NIC 16819), Illinois, 25 June 1973. |
|
3808 |
|
3809 Merryman, Robert, "The UCSD-CC Server-FTP Facility", RFC 532 |
|
3810 (NIC 17451), UCSD-CC, 22 June 1973. |
|
3811 |
|
3812 Braden, Bob, "TENEX FTP Problem", RFC 571 (NIC 18974), UCLA/CCN, |
|
3813 15 November 1973. |
|
3814 |
|
3815 |
|
3816 |
|
3817 |
|
3818 Postel & Reynolds [Page 67] |
|
3819 |
|
3820 |
|
3821 |
|
3822 RFC 959 October 1985 |
|
3823 File Transfer Protocol |
|
3824 |
|
3825 |
|
3826 McKenzie, Alex, and Jon Postel, "Telnet and FTP Implementation - |
|
3827 Schedule Change", RFC 593 (NIC 20615), BBN and MITRE, |
|
3828 29 November 1973. |
|
3829 |
|
3830 Sussman, Julie, "FTP Error Code Usage for More Reliable Mail |
|
3831 Service", RFC 630 (NIC 30237), BBN, 10 April 1974. |
|
3832 |
|
3833 Postel, Jon, "Revised FTP Reply Codes", RFC 640 (NIC 30843), |
|
3834 UCLA/NMC, 5 June 1974. |
|
3835 |
|
3836 Harvey, Brian, "Leaving Well Enough Alone", RFC 686 (NIC 32481), |
|
3837 SU-AI, 10 May 1975. |
|
3838 |
|
3839 Harvey, Brian, "One More Try on the FTP", RFC 691 (NIC 32700), SU-AI, |
|
3840 28 May 1975. |
|
3841 |
|
3842 Lieb, J., "CWD Command of FTP", RFC 697 (NIC 32963), 14 July 1975. |
|
3843 |
|
3844 Harrenstien, Ken, "FTP Extension: XSEN", RFC 737 (NIC 42217), SRI-KL, |
|
3845 31 October 1977. |
|
3846 |
|
3847 Harrenstien, Ken, "FTP Extension: XRSQ/XRCP", RFC 743 (NIC 42758), |
|
3848 SRI-KL, 30 December 1977. |
|
3849 |
|
3850 Lebling, P. David, "Survey of FTP Mail and MLFL", RFC 751, MIT, |
|
3851 10 December 1978. |
|
3852 |
|
3853 Postel, Jon, "File Transfer Protocol Specification", RFC 765, ISI, |
|
3854 June 1980. |
|
3855 |
|
3856 Mankins, David, Dan Franklin, and Buzz Owen, "Directory Oriented FTP |
|
3857 Commands", RFC 776, BBN, December 1980. |
|
3858 |
|
3859 Padlipsky, Michael, "FTP Unique-Named Store Command", RFC 949, MITRE, |
|
3860 July 1985. |
|
3861 |
|
3862 |
|
3863 |
|
3864 |
|
3865 |
|
3866 |
|
3867 |
|
3868 |
|
3869 |
|
3870 |
|
3871 |
|
3872 |
|
3873 |
|
3874 |
|
3875 Postel & Reynolds [Page 68] |
|
3876 |
|
3877 |
|
3878 |
|
3879 RFC 959 October 1985 |
|
3880 File Transfer Protocol |
|
3881 |
|
3882 |
|
3883 REFERENCES |
|
3884 |
|
3885 [1] Feinler, Elizabeth, "Internet Protocol Transition Workbook", |
|
3886 Network Information Center, SRI International, March 1982. |
|
3887 |
|
3888 [2] Postel, Jon, "Transmission Control Protocol - DARPA Internet |
|
3889 Program Protocol Specification", RFC 793, DARPA, September 1981. |
|
3890 |
|
3891 [3] Postel, Jon, and Joyce Reynolds, "Telnet Protocol |
|
3892 Specification", RFC 854, ISI, May 1983. |
|
3893 |
|
3894 [4] Reynolds, Joyce, and Jon Postel, "Assigned Numbers", RFC 943, |
|
3895 ISI, April 1985. |
|
3896 |
|
3897 |
|
3898 |
|
3899 |
|
3900 |
|
3901 |
|
3902 |
|
3903 |
|
3904 |
|
3905 |
|
3906 |
|
3907 |
|
3908 |
|
3909 |
|
3910 |
|
3911 |
|
3912 |
|
3913 |
|
3914 |
|
3915 |
|
3916 |
|
3917 |
|
3918 |
|
3919 |
|
3920 |
|
3921 |
|
3922 |
|
3923 |
|
3924 |
|
3925 |
|
3926 |
|
3927 |
|
3928 |
|
3929 |
|
3930 |
|
3931 |
|
3932 Postel & Reynolds [Page 69] |
|
3933 |