diff options
Diffstat (limited to 'doc/rfc/rfc454.txt')
-rw-r--r-- | doc/rfc/rfc454.txt | 1963 |
1 files changed, 1963 insertions, 0 deletions
diff --git a/doc/rfc/rfc454.txt b/doc/rfc/rfc454.txt new file mode 100644 index 0000000..983b428 --- /dev/null +++ b/doc/rfc/rfc454.txt @@ -0,0 +1,1963 @@ + + + + + + +Network Working Group A. McKenzie +Request for Comments: 454 BBN +NIC: 14333 16 February 1973 + + FILE TRANSFER PROTOCOL + + Meeting Announcement and a New Proposed Document + + Attached is a new proposal for a File Transfer Protocol. The + document is an extensive update to RFC 354 and, I believe, + incorporates solutions to most of the objections to RFC 354. + + It now seems appropriate to make another attempt to reach final + agreement on FTP. Accordingly, I am calling a meeting of interested + parties, to be held at BBN on March 16, for discussion of this and + other proposals. + + This note is directed to the network community at large, rather than + specifically to the old FTP committee, because I don't believe that + the FTP committee membership includes all the individuals who have + contributed to the current state of FTP design. Nevertheless, it is + intended that the meeting proceed from the current state, rather than + bringing new members up-to-speed. Prospective attendees should + therefore be familiar with at least the following documents: + + RFC 354 + RFC 385 + RFC 414 + RFC 418 + RFC 438 + + Anyone wishing to attend this meeting should contact Alex McKenzie + (NIC Ident aam) at BBN, 50 Moulton Street, Cambridge, Mass. 02138. + My telephone number is: + + (617) 491-1850 ext.441 + + When there is some indication of the number of individuals planning + to attend, a meeting room will be reserved and more specific + information will be directed to attendees. + + + + + + + + + + + +McKenzie [Page 1] + +RFC 454 File Transfer Protocol July 1972 + + + PROPOSED FILE TRANSFER PROTOCOL + + This document is the outcome of a meeting held 25 January 1973 in + Cambridge, Massachusetts, by the following people: + + Abhay Bhushan (MIT - DMCG) + + Bob Bressler (BBN - NET) + + Bob Clements (BBN - TENEX) + + Alex McKenzie (BBN - NET) + + Nancy Neigus (BBN - NET) + + Ken Pogran (MIT - MULTICS) + + Marc Seriff (MIT - DMCG) + + The basis of the document is RFC 354 with considerations drawn from + RFC's 385, 414, 418, and 438 and personal communication with network + participants. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +McKenzie [Page 2] + +RFC 454 File Transfer Protocol July 1972 + + + PROPOSED FILE TRANSFER PROTOCOL + +INTRODUCTION + + The File Transfer Protocol (FTP) is a protocol for file transfer + between HOSTs (including terminal IMPs), on the ARPA Computer Network + (ARPANET). The primary function of FTP is to transfer files + efficiently and reliably among HOSTs and to allow the convenient use + of remote file storage capabilities. + + The objectives of FTP are 1) to promote sharing of files (computer + programs and/or data), 2) to encourage indirect or implicit (via + programs) use of remote computers, 3) to shield a user from + variations in file storage systems among HOSTs, and 4) to transfer + data reliably and efficiently. FTP, though usable directly by a user + at a terminal, is designed mainly for use by programs. + + The attempt in this specification is to satisfy the diverse needs of + users of maxi-HOSTs, mini-HOSTs, TIPs, and the Datacomputer, with a + simple, elegant, and easily implemented protocol design. + + This paper assumes knowledge of the following protocols: + + 1) The HOST-HOST Protocol (NIC #8246) + + 2) The Initial Connection Protocol (NIC #7101) + + 3) The TELNET Protocol (NWG/RFC #318, NIC #9348) + +II. DISCUSSION + + In this section, the terminology and the FTP model are discussed. + The terms defined in this section are only those that have special + significance in FTP. + +II.A Terminology + + ASCII The USASCII character set as defined in NIC + #7104. In FTP, ASCII characters are defined to + be the lower half of an eight bit code set (i.e., + the most significant bit is zero). + + access controls Access controls define users' access privileges + to the use of a system, and to the files in that + system. Access controls are necessary to prevent + unauthorized or accidental use of files. It is + the prerogative of a server-FTP process to + provide access controls. + + + +McKenzie [Page 3] + +RFC 454 File Transfer Protocol July 1972 + + + byte size The byte size specified for the transfer od data. + The data connection is opened with this byte + size. Data connection byte size is not + necessarily the byte size in which data is to be + stored in a system, and may not be related to the + structure of data. + + data connection A simplex connection over which data is + transferred, in a specified byte size, mode and + type. The data transferred may be a part of a + file, an entire file or a number of files. The + data connection may be in either direction + (server-to-user or user-to-server). + + data socket The socket on which a User-FTP process "listens" + for a data connection. + + EOF The end-of-file condition that defines the end of + a file being transferred. + + EOR The end-of-record condition that defines the end + of a record being transferred. + + error recovery A procedure that allows a user to recover from + certain errors such as failure of either HOST + system or transfer process. In FTP, error + recovery may involve restarting a file transfer + at a given checkpoint. + + FTP commands A set of commands that comprise the control + information flowing from the user-FTP to the + server-FTP process. + + file An ordered set of computer data (including + programs) of arbitrary length uniquely identified + by a pathname. + + mode The mode in which data is to be transferred via + the data connection. The mode defines the data + format including EOR and EOF. The transfer modes + defined in FTP are described in Section III.C. + + NVT The Network Virtual Terminal as defined in the + ARPANET TELNET Protocol. + + + + + + + +McKenzie [Page 4] + +RFC 454 File Transfer Protocol July 1972 + + + NVFS The Network Virtual File System. A concept which + defines a standard network file system with + standard commands and pathname conventions. FTP + only partially embraces the NVFS concept at this + time. + + pathname Pathname is defined to be the character string + which must be input to a file system by a user in + order to identify a file. Pathname normally + contains device and/or directory names, and file + name specification. FTP does not yet specify a + standard pathname convention. Each user must + follow the file naming conventions of the file + systems he wishes to use. + + record A sequential file may be structured as a number + of contiguous parts called records. Record + structures are supported by FTP but are not + mandatory. + + reply A reply is an acknowledgement (positive or + negative) sent from server to user via the TELNET + connections in response to FTP commands. The + general form of a reply is a completion code + (including error codes) followed by an ASCII text + string. The codes are for use by programs and + the text is for human users. + + server-FTP process A process or set of processes which perform the + function of file transfer in cooperation with a + user-FTP process. The server-FTP process must + interpret and respond to user commands and + initiate the data connection. + + server site A HOST site which has a server-FTP process. + + server-TELNET A TELNET process which listens on a specified + socket for an ICP initiated by a user-TELNET, and + performs in accordance with the ARPANET TELNET + Protocol. + + TELNET connections The full-duplex communication path between a + user-TELNET and a server-TELNET. The TELNET + connections are established via the standard + ARPANET Initial Connection Protocol (ICP). + + + + + + +McKenzie [Page 5] + +RFC 454 File Transfer Protocol July 1972 + + + type The data representation type used for data + transfer and storage. Type implies certain + transformations between the time of data storage + and data transfer. The representation types + defined in FTP are described in Section III.B. + + user A process on behalf of a human being or a human + being wishing to obtain file transfer service. + + + user site A HOST site satisfying any of the following + conditions: 1) The site where a user is located, + 2) a site where a user-FTP process is located, 3) + a site to which a data connection is made by a + server. In the normal case, the sites defined by + 1, 2, and 3 are the same site, but nothing in FTP + requires that this be so. + + user-FTP process A process or set of processes which perform the + function of file transfer in cooperation with a + server-FTP process. The user-FTP process 1) + initiates the ICP (via a user-TELNET), 2) + initiates FTP commands and 3) "listens" on the + data socket for the data connection. In some + obvious cases (use from TIPs and other mini- + HOSTs) a user-FTP process will be subsumed under + the term "user". + + user-TELNET A TELNET process which initiates an ICP to a + specified server-TELNET socket, and performs in + accordance with the ARPANET TELNET protocol. + +II.B The FTP Model + + With the above definitions in mind, the following model (shown in + Figure 1) may be diagramed for an FTP service. + + In the model described in Figure 1, the user-TELNET initiates the + TELNET connections. Standard FTP commands are then generated by the + user and transmitted to the server site via the TELNET connections. + FTP commands are in ASCII, in accordance with NVT conventions and the + TELNET protocol. Note that commands may be initiated by the user + directly through the user-TELNET or via a user-FTP process. Standard + replies are sent from the server to the user in response to the + commands over the TELNET connections. + + + + + + +McKenzie [Page 6] + +RFC 454 File Transfer Protocol July 1972 + + + The FTP commands specify the parameters for the data connection (data + socket, byte size, transfer mode, representation type, and format) + and the nature of file system operation (store, retrieve, append, + delete, etc.). The user-FTP process or its designate should "listen" + on the specified data socket, and it is the server's responsibility + to initiate the data connection and data transfer in accordance with + the specified data connection parameters. It should be noted that + the data socket need not be in the same HOST that initiates the FTP + commands via the TELNET connections, but the user or his user-FTP + process must ensure a "listen" on the specified data socket. A + practical example of such file transfer to third HOSTs is a maxi-HOST + user (who may actually be a TIP user) wishing to transmit a file to + or from an I/O device attached to a TIP. It should also be noted + that two data connections, one for send and the other for receive, + may exist simultaneously. + + TELNET + Connections ++-----+ +-------+ +------+ +------+ +-------+ +-----+ +| File|<->|Server-|<->|Server|<----------|User |<->|User- |<->|File | +|Sys | |FTP | |TELNET| FTP Cmds |TELNET| |FTP | |Sys- | +| -tem| |Process| | |---------->| | |Process| | tem | ++-----+ | | +------+FTP Replies+------+ | | +-----+ + | | | | + | |<------------------------------->|Data | + | | Data Connection(s) |Socket | + +-------+ +-------+ + | + | + +------+ + | | + | USER | + | | + +------+ + + Notes: 1. The data connection may be in either direction. + + 2. The data connection need not exist all of the time. + + 3. The distinctions between user-FTP and user-TELNET, and + between server-FTP and server-TELNET may not be as + clear-cut as shown above. For example, a user-TELNET may + be directly driven by the user. + + FIGURE 1 Model for FTP Use + + + + + + +McKenzie [Page 7] + +RFC 454 File Transfer Protocol July 1972 + + + The protocol requires that the TELNET connections be open while data + transfer is in progress. It is the responsibility of the user to + close the TELNET connections when finished using the FTP service. + The server may abort data transfer if the TELNET connections are + closed. + +III. DATA TRANSFER FUNCTIONS + + Data and files are transferred only via the data connection. The + transfer of data is governed by FTP data transfer commands received + on the TELNET connections. The data transfer functions include + establishing the data connection to the specified data socket in the + specified HOST (using the specified byte size), transmitting and + receiving data in the specified representation type and transfer + mode, handling EOR and EOF conditions, and error recovery (where + applicable). + +III.A Establishing Data Connection + + The user site shall "listen" on the specified data socket, prior to + sending a transfer request command. The FTP request command + determines the direction of data transfer, and the socket number (odd + or even) which is to be used in establishing the data connection. + The server on receiving the appropriate store or retrieve request + shall initiate the data connection to the specified user data socket + in the specified byte size (default byte size is 8 bits), and send a + reply indicating that file transfer may proceed. Prior to this + reply, the server should send a reply indicating the server socket + for the data connection. The user may use this server socket + information to ensure the security of his data transfer. The server + may send this reply either before or after initiating the data + connection. + + The byte size for the data connection is specified by the BYTE + command. It is not required by the protocol that servers accept all + possible byte sizes. The use of various byte sizes is for efficiency + in data transfer and servers may implement only those byte sizes for + which their data transfer is efficient. It is, however, required + that servers implement at least the byte size of 8 bits. + + After the data transfer is completed, it is the server's + responsibility to close the data connection, except when the user is + sending the data. In stream mode the sender must close the data + connection to indicate EOF, i.e., completion of the transfer. + Closing the connection is a server option except under the following + conditions: + + + + + +McKenzie [Page 8] + +RFC 454 File Transfer Protocol July 1972 + + + 1) The server receives an abort command from the user. + + 2) The socket or the byte size specification is changed by the + user. + + 3) The TELNET connections are closed. + + 4) An irrecoverable error condition occurs. + + It should be noted that if none of the above conditions occur it is + possible to maintain two simultaneous data connections, for send and + receive. + +III.B Data Representation and Storage + + Data is transferred from a storage device in sending HOST to a + storage device in receiving HOST. Often it is necessary to perform + certain transformations on the data because data storage representa- + tions in the two systems are different. For example, NVT-ASCII has + different data storage representations in different systems. PDP-10' + s generally store NVT-ASCII as five 7-bit ASCII characters, left- + justified in a 36-bit word. 360's store NVT-ASCII as 8-bit EBCDIC + codes. Multics stores NVT-ASCII as four 9-bit characters in a 36-bit + word. It may be desirable to convert characters into the standard + NVT-ASCII representation when transmitting text between dissimilar + systems. The sending and receiving sites would have to perform the + necessary transformations between the standard representation and + their internal representations. + + A different problem in representation arises when transmitting binary + data (not character codes) between HOST systems with different word + lengths. It is not always clear how the sender should send data, and + the receiver store it. For example, when transmitting 32-bit bytes + from a 32-bit word-length system to a 36-bit word-length system, it + may be desirable (for reasons of efficiency and usefulness) to store + the 32-bit bytes right-justified in a 36-bit word in the latter sys- + tem. In any case, the user should have the option of specifying data + representation and transformation functions. It should be noted that + FTP provides for very limited data type representations. Transforma- + tions desired beyond this limited capability should be performed by + the user directly or via the use of the Data Reconfiguration (DRS, + RFC #138, NIC #6715). Additional representation types may be defined + later if there is a demonstrable need. + + Data representations are handled in FTP by a user specifying a + representation type. The type may also imply a transfer byte size. + For example, in ASCII representation, the transfer byte size should + be 8 bits, and any other byte size specification will result in + + + +McKenzie [Page 9] + +RFC 454 File Transfer Protocol July 1972 + + + cancellation of the transfer request. In image and Local Byte + representations any byte size is possible. The following data + representation types are currently defined in FTP: + + 1. ASCII The sender converts data from its internal character + representation to the standard NVT ASCII form. The + receiver converts the data from the standard form to + its own internal form. The data is transferred in + the standard form. The transfer byte size must be 8 + bits. This type would be used for transfer of text + files. This is the default type, and it is recom- + mended that this type be implemented by all. + + 2. EBCDIC The sender transfers data using the EBCDIC character + code and 8-bit transfer byte size. This type may be + used for efficient transfer of EBCDIC files between + systems which use EBCDIC for their internal character + representation. + + 3. Image The sender transforms data from contiguous bits to + bytes for transfer. The receiver transforms the + bytes into bits, storing them contiguously indepen- + dent of the byte size chosen for data transfer. With + record structure and block mode, the server might + need to pad each record for convenient storage. This + padding is allowed at the end of a record, and should + be remembered by the server so it will be stripped + off when the file is retrieved by the user. The pad- + ding transformation should be well publicized by the + server in case the user processes his file at the + server site. Typical uses for the Image type are + transfer of executable programs between like + machines, and transfer of binary (non-text) data. It + is recommended that this type be implemented by all + for some byte size, preferably including the 8 bit + byte size. + + 4. Local Byte This representation allows for efficient storage, + use, and retrieval of data. The manner in which data + is to be transformed depends on the byte size for + data transfer, and the particular HOST being used. + The transformation scheme for different byte size is + to be well publicized by all server sites. This + transformation shall be invertible (i.e., if a file + is stored using a certain transfer byte size, an + identical file must be retrievable using the same + byte size and representation type). It is the user's + responsibility to keep track of the representation + + + +McKenzie [Page 10] + +RFC 454 File Transfer Protocol July 1972 + + + type and byte size used for his transfer. Typical + uses of the Local Byte type are in efficient storage + and retrieval of files, and transfer of structured + binary data. This type may be identical to the Image + type for byte size which are integral multiples of or + factors of the computer word length. + + Representation type may also be affected by another attribute, the + format. For example, some printers can use ASA (Fortran) vertical + format control procedures to transform printed data of type ASCII or + EBCDIC. Currently format may take one of two values. + + 1. Unformatted The representation type as specified is unaffected by + any format transformations. This is the default + value. + + 2. Printfile The server is to transform data of either ASCII or + EBCDIC type in accordance with ASA (Fortran) vertical + format control standards. The data is to be + transferred in 8-bit bytes. + + A discussion of the ASA vertical format control appears in NWG/RFC + 189, Appendix C, and in Communications of the ACM, Vol. 7, No. 10, p. + 606, October 1964. According to the ASA vertical format control + standards, the first character of a formatted record is not printed + but determines vertical spacing as follow: + + Character Vertical Spacing before printing + + Blank One line + 0 Two lines + 1 To first line of the next page + + No advance + + In addition to the above four, there are more characters (defined in + Appendix C, RFC 189) which represent an IBM extension to the ASA + standard. + + It should be noted that a serving host need not accept all represen- + tation types and/or byte sizes, but it must inform the user request- + ing an unacceptable type or size of this fact by sending an appropri- + ate reply. + +III.C. File Structure and Transfer Modes + + The only file structures supported directly in FTP at the present + time are record structures. However, the use of record structures is + not mandatory. A user with no record structure in his file should be + + + +McKenzie [Page 11] + +RFC 454 File Transfer Protocol July 1972 + + + able to store and retrieve his file at any HOST. A user wishing to + transmit a record structured file must send the appropriate FTP + 'STRU' command (the default assumption is no record structure). A + serving HOST need not accept record structures, but it must inform + the user of this fact by sending an appropriate reply. Any record + structure information in the data stream may subsequently be dis- + carded by the receiver. + + All data transfers must end with an EOF. The EOF is defined by the + data transfer mode. For files that have record structures, an EOR is + also defined by the transfer mode. Only the transfer modes and + representation type combinations that have EOR defined may be used + for transfer of files with record structures. Records may be of zero + length but they must be contained in file boundaries. The relation- + ship between files and records is hierarchical but an EOF does not + imply an EOR. + + The following data transfer modes are defined in FTP: + + 1. Stream The file is transmitted as a stream of bytes of the + specified byte size. The EOF is signaled by closing + the data connection. Any representation type and + byte size may be used in the stream mode with file + structure, but use of record structure limits the + type to ASCII or EBCDIC with or without Printfile + format. The convention is that the ASCII character + CR (Carriage Return, Code 15 (octal)) followed by LF + (Line Feed, Code 12 (octal)) indicates an EOR for + ASCII representation type, and the EBCDIC character + NL (New Line, Code 15 (hex)) indicates an EOR for + EBCDIC type. This is the default mode, and it is + recommended that this mode be implemented by all. + + 2. Text The file is ASCII text transmitted as a sequence of + 8-bit bytes in the ASCII representation type, and + optional Printfile format. Record structures are + allowed in this mode. The EOR and EOF are defined by + the presence of special "TELNET-control" codes (,ost + significant bit set to one) in the data stream. The + EOR code is 192 (octal 300, hex CO). The EOF code is + 193 (octal 301, hex C1). The byte size for transfer + is 8 bits. + + (For ASCII type, text and stream modes are almost identical.) + + + + + + + +McKenzie [Page 12] + +RFC 454 File Transfer Protocol July 1972 + + + Comparing the two, the advantages of "stream" mode are: + + 1) The receiver need not scan the incoming bytes. + + 2) It is usable with all data types. + + and the disadvantages are: + 1) Closing the data connection under error conditions can be + misconstrued as an EOF in stream mode when in fact the data + transfer was interrupted. In text mode the EOF is sent expli- + citly. + + 2) If record structure is specified in stream mode then CRLF + implies EOR, and in order for CRLF to be sent as valid data it + must be transformed, e.g., into CR NUL LF or LF CR. + + 3. Block The file is transmitted as a series of data blocks + preceded by one or more header bytes. The header + bytes contain a count field, and descriptor code. + The count field indicates the total length of the + data block in bytes, thus marking the beginning of + the next data block (there are no filler bits). The + descriptor code defines last file block (EOF), last + record block (EOR), restart marker (see Section + III.D), or suspect data (i.e., the data being + transferred is suspected of errors and is not reli- + able). Record structures are allowed in this mode, + and any representation type or byte size may be used. + + The header consists of the smallest integral number + of bytes whose length is greater than or equal to 24 + bits. Only the _least_ significant 24 bits (right- + justified) of header shall have information; the + remaining most significant bits are "don't care" + bits. Of the 24 bits of header information, the 16 + low order bits shall represent byte count, and the 8 + high order bits shall represent descriptor codes as + shown below. + + Integral data bytes >= 24 + +---------------+---------------+--------------+ + | Don't care | Descriptor | Byte Count | + | 0 to 231 bits | 8 bits | 16 bits | + +---------------+---------------+--------------+ + + + + + + + +McKenzie [Page 13] + +RFC 454 File Transfer Protocol July 1972 + + + The following descriptor codes are assigned: + + Code Meaning + ---- ------- + 0 An ordinary block of data. + 1 End of data block is EOR. + 2 End of data block is EOF. + 3 Suspected errors in data block. + 4 Data block is a restart marker. + + In the use of block mode it is possible for two or + more conditions requiring different descriptor codes + (suspected errors and either end of record or end of + file) to exist simultaneously. Such a possibility + may be handled by sending a separate EOR or EOF block + with a zero byte count. (This is allowed by the pro- + tocol.) + + The restart marker is embedded in the data stream as + an integral number of 8-bit bytes (representing + printable ASCII characters) right-justified in an + integral number of data bytes greater than 8 bits. + For example if the byte size is 7 bits, the restart + marker byte would be one byte right-justified per two + 7-bit bytes as shown below: + + Two 7-bit bytes + +----------+------------+ + | | Marker Char| + | | 8 bits | + +----------+------------+ + + For byte size of 16 bits or more, two or more marker + bytes shall be packed right-justified. The end of + the marker may be delimited by the character SP (code + 32.). If marker characters do not exactly fit an + integral byte, the unused character slots should con- + tain the ASCII character SP (code 32.). For example, + to transmit a six character marker in a 36-bit byte + size, the following three 36-bit bytes would be sent: + + + + + + + + + + + +McKenzie [Page 14] + +RFC 454 File Transfer Protocol July 1972 + + + +-------------+-------------+---------------+ + | Don't care | Descriptor | | + | 12 bits | code=4 | Byte count=2 | + +-------------+-------------+---------------+ + + +----+---------+---------+--------+---------+ + | | Marker | Marker | Marker | Marker | + | | 8 bits | 8 bits | 8 bits | 8 bits | + +----+---------+---------+--------+---------+ + + +----+---------+---------+--------+---------+ + | | Marker | Marker | SP | SP | + | | 8 bits | 8 bits | 8 bits | 8 bits | + +----+---------+---------+--------+---------+ + + 4. Hasp + + The file is transmitted as a sequence of 8-bit bytes + in the standard Hasp-compressed data format (document + to be issued by Bob Braden, UCLA). This mode + achieves considerable compression of data for print + files. Record structures are allowed in the Hasp + mode. + + The following matrix summarizes the legal combinations of file + transfer parameters. The decimal integers represent legal byte sizes + for each particular STRU-MODE-TYPE-FORM grouping absence of a number + implies illegality. Note that HASP mode is not included since it has + never been defined. + + STRU F | R + +-------------------------------+-----+-----+------+ + TYPE |\ MODE | | | | + | \ | | | | + | \ S T B | S | T | B | + | FORM +--------+-----+---------+-----+-----+------+ + A | U | 8 | 8 | 8 | 8 | 8 | 8 | + | +--------+-----+---------+-----+-----+------+ + | P | 8 | 8 | 8 | 8 | 8 | 8 | + ----+------+--------+-----+---------+-----+-----+------+ + E | U | 8 | | 8 | 8 | | 8 | + | +--------+-----+---------+-----+-----+------+ + | P | 8 | | 8 | 8 | | 8 | + ----+------+--------+-----+---------+-----+-----+------+ + I | U | 1-255 | | 1-255 | | |1-255 | + ----+------+--------+-----+---------+-----+-----+------+ + L | U | 1-255 | | 1-255 | | |1-255 | + ----+------+--------+-----+---------+-----+-----+------+ + + + +McKenzie [Page 15] + +RFC 454 File Transfer Protocol July 1972 + + +III.D Error Recovery and Restart + + There is no provision for detecting bits lost or scrambled in data + transfer. This issue is perhaps handled best at the NCP level where + it benefits most users. However, a restart procedure is provided to + protect user from system failures (such as failure of either HOST, + FTP-process, or the IMP subnet). + + The restart procedure is defined only for the block mode of data + transfer. It requires the sender of data to insert a special marker + code in the data stream with some marker information. The marker + information has meaning only to the sender, but must consist of + printable ASCII characters. The printable ASCII characters are + defined to be octal codes 41 through 176 (i.e., not including codes 0 + through 37 and the characters SP and DEL). The marker could + represent a bit-count, a record-count, or any other information by + which a system may identify a data checkpoint. The receiver of data, + if it implements the restart procedure, would then mark the + corresponding position of this marker in the receiving system, and + return this information to the user. + + In the event of a system failure, the user can restart the data + transfer by identifying the marker point with the FTP restart pro- + cedure. The following examples illustrate the use of the restart + procedure. + +1. When server is the sender of data, the server-FTP process inserts + an appropriate marker block in the data stream at a convenient + data point. The user-FTP process, receiving the data, marks the + corresponding data point in its file system and conveys the last + known sender and receiver marker information to the user. In the + event of system failure, the user or user-FTP process restarts + the server at the last server marker by sending a restart command + with the server's marker code as its argument. The restart com- + mand is transmitted over the TELNET connection and is immediately + followed by the command (such as store or retrieve) which was + being executed when the system failure occurred. + +2. When user is the sender of data, the user-FTP process inserts the + appropriate marker block in the data stream. The server-FTP pro- + cess, receiving the data, marks the corresponding data point in + its file system. The server does not store this marker but con- + veys the last known sender and receiver marker information to the + user over the TELNET connections by appropriate reply codes. The + user or the user-FTP process then restarts transfer in a manner + identical to that described in the first example. + + + + + +McKenzie [Page 16] + +RFC 454 File Transfer Protocol July 1972 + + +IV. FILE TRANSFER FUNCTIONS + + The TELNET connections on which FTP commands and replies are + transmitted are initiated by the user-FTP process via an ICP to a + standard server socket. FTP commands are then transmitted from user + to server, and replies are transmitted from server to user. The user + file transfer functions involve sending the FTP commands, interpret- + ing the replies received and transferring data over the data connec- + tion in the specified manner. The server file transfer functions + involve accepting and interpreting FTP commands, sending replies, + setting up the data connection, and transferring data. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +McKenzie [Page 17] + +RFC 454 File Transfer Protocol July 1972 + + +IV.A FTP Commands + + FTP commands are ASCII strings terminated by the ASCII character + sequence CRLF (Carriage Return followed by Line Feed). The command + codes themselves are ASCII alphabetic characters terminated by the + ASCII character 'space' (octal code 40). For convenience, the com- + mand codes are defined to be four (or less) ASCII alphanumeric char- + acters (including both upper and lower case alphabetic characters). + The command codes and the semantics of commands are described in this + section, but the detailed syntax of commands is specified in Section + V.B, the reply sequences are discussed in Section V.C, and scenarios + illustrating the use of commands are provided in Section V.D. + + FTP commands may be partitioned as those specifying access-control + identifiers, data transfer parameters, or FTP service requests. Cer- + tain commands (such as ABOR, STAT, BYE) may be sent over the TELNET + connections while a data transfer is in progress. Some servers may + not be able to monitor the TELNET and data connections simultane- + ously, in which case these commands should be preceded by a TELNET + SYNC to awaken the server. (For other servers this may not be neces- + sary and the SYNC will be ignored.) + +IV.A.1 Access Control Commands + + The following commands specify access control identifiers (command + codes are shown in parentheses). + + User name (USER) - The argument field is an ASCII string identify- + ing the user. The user identification is that which is required + by the server for access to its file system. This command will + normally be the first command transmitted by the user after the + TELNET connections are made (some servers may require this). + Additional identification information in the form of a password + and/or an account command may also be required by some servers. + Servers may allow a new USER command to be entered at any point in + order to change the accounting information. All parameters are + unchanged and any file transfer in progress is completed under the + old account. + + Password (PASS) - The argument field is an ASCII string identify- + ing the user's password. This command must be immediatly preceded + by the user name command, and, for some sites, completes the user' + s identification for access control. Since password information + is quite sensitive, it is desirable in general to "mask" it or + suppress type out. It appears that the server has no foolproof + way to achieve this. It is therefore the responsibility of the + user-FTP process to hide the sensitive password information. + + + + +McKenzie [Page 18] + +RFC 454 File Transfer Protocol July 1972 + + + Account (ACCT) - The argument field is an ASCII string identifying + the user's account. The command is not necessarily related to the + USER command, as some sites may require an account for login and + others only for specific access, such as storing files. In the + latter case the command may arrive at any time. There are two + reply codes to differentiate these cases for the automaton: When + account information is required for login and the server receives + another command which he buffers, the legal response is reply code + 331 when an account is required for a specific transfer requested, + the reply code 433 is returned and the request command is flushed. + + Reinitialize (REIN) - This command terminates a USER, flushing all + I/O and account information, except to allow any transfer in pro- + gress to be completed. All parameters are reset to the default + setting and the TELNET connection is left open. A USER command is + expected to follow. + + Logout (BYE) - This command terminates a USER and if file transfer + is not in progress, closes the TELNET connection. If file + transfer is in progress, the connection will remain open for + result response and will then close. For "hot card-reader" mode + the REIN command should be used instead. + + An unexpected close on the TELNET connection will cause the server + to take the effective action of an abort (ABOR) and a logout + (BYE). + +IV.A.2 Transfer Parameter Commands + + All data transfer parameters have default values, and the commands + specifying data transfer parameters are required only if the default + parameter values are to be changed. The default value is the last + specified value, or if no value has been specified, the standard + default value as stated here. This implies that the server must + "remember" the applicable default values. The commands may be in any + order except that they must precede the FTP service request. The + following commands specify data transfer parameters + + Byte size (BYTE) - The argument is an ASCII-represented decimal + integer (1 through 255), specifying the byte size for the data + connection. The default byte size is 8 bits. The byte size is + always 8 bits in the ASCII and EBCDIC representation types. A + server may reject specific byte size/type combinations by sending + an error reply code in response to a transfer request command. + + Data socket (SOCK) - The argument is a HOST-socket specification + for the data socket to be used in data connection. There may be + two data sockets, one from server to user and the other for user + + + +McKenzie [Page 19] + +RFC 454 File Transfer Protocol July 1972 + + + to server data transfer. An odd socket number defines a send + socket and an even socket number defines a receive socket. The + default HOST is the user HOST to which TELNET connections are + made. The default data sockets are (U+4) and (U+5) where U is the + socket number used in the TELNET ICP and the TELNET connections + are on sockets (U+2) and (U+3). + + Listen (LSTN) - The argument is a single ASCII character code to + specify the direction of the socket that the server must allocate + for use as a data connection. The server is to "listen" on the + allocated socket when an appropriate transfer command is given. + The following codes are assigned: + + S - send + R - receive + + Representation Type (TYPE) - The argument is a single ASCII char- + acter code specifying the representation types described in Sec- + tion III.B. The following codes are assigned for type: + + A - ASCII + I - Image + L - Local Byte + E - EBCDIC + + The default representation type is ASCII. + + Format (FORM) - The argument is a single ASCII character code + specifying the formats described in Section III.B. The following + codes are assigned for format: + + U - Unformatted + P - Printfile + + The default format is Unformatted. + + File Structure (STRU) - The argument is a single ASCII character + code specifying file structure described in Section III.C. The + following codes are assigned for structure: + + F - File (no ecord structure) + R - Record structure + + The default structure is File (ie. no records). + + Transfer Mode (MODE) - The argument is a single ASCII character + code specifying the data transfer modes described in Section + III.C. The following codes are assigned for transfer modes: + + + +McKenzie [Page 20] + +RFC 454 File Transfer Protocol July 1972 + + + S - Stream (bytes, close is EOF) + B - Block (header with descriptor and count) + T - Text (TELNET control code for EOR, EOF) + H - Hasp (specially formatted compressed data) + + The default transfer mode is Stream. + +IV.A.3 FTP Service Commands + + The FTP service commands define the file transfer or the file system + function requested by the user. The argument of an FTP service com- + mand will normally be a pathname. The syntax of pathnames must con- + form to server site conventions (with standard defaults applicable), + except that ASCII characters must be used (in conformance with the + TELNET Protocol). The suggested default handling is to use the last + specified device, directory or file name, or the standard default + defined for local users. The command may be in any order except that + a "rename from" command, must be followed by a "rename to" command, + and some servers may require an "allocate" command before a "store" + command. The data, when transferred in response to FTP service + commands, shall always be sent over the data connection. The follow- + ing commands specify FTP service requests: + + Retrieve (RETR) - This command achieves the transfer of a copy of + the file specified in the pathname, from server to user site. The + status and contents of the file at the server site shall be unaf- + fected. + + Store (STOR) - This command achieves the transfer of a copy of a + file from user to server site. If the file specified in the path- + name exists at the server site, then its contents shall be + replaced by the contents of the file being transferred. A new + file is created at the server site if the file specified in the + pathname does not already exist. + + Append (with create) (APPE) - This command achieves the transfer + of data from using to serving site. If the file specified in the + pathname exists at the server site, then the data transferred + shall be appended to that file, otherwise the file specified in + the pathname shall be created at the server site. + + Allocate (ALLO) - This command may required by some servers to + reserve sufficient storage to accommodate the new file to be + transferred. The argument field shall be a decimal integer + representing the number of bytes (of size specified by the byte + size command) of storage to be reserved for the file. This + + + + + +McKenzie [Page 21] + +RFC 454 File Transfer Protocol July 1972 + + + command shall be followed by a store or append command. The ALLO + command should be treated as a NO-OP (no operation) by those + servers which do not require that the maximum size of the file be + declared beforehand. + + Restart (REST) - The argument field represents the server marker + at which file transfer is to be restarted. This command does not + cause file transfer but "spaces" over the file to the specified + data checkpoint. This command shall be immediately followed by + the appropriate FTP service command which shall cause file + transfer to resume. + + Rename from - (RNFR) - This command specifies the file which is to + be renamed. This command must be immediately followed by a + "rename to" command specifying the new file pathname. + + Rename to (RNTO) - This command specifies the new pathname of the + file specified in the immediately preceding "rename from" command. + Together the two commands cause a file to be renamed. + + Abort (ABOR) - This command indicates to the server to abort the + previous FTP service command and any associated transfer of data. + The abort command should be preceded by the TELNET SYNCH condition + (indicated by the combination of the DATA MARK and the INS). No + action is to be taken if the previous command has been completed + (including data transfer). The TELNET connections are not to be + closed by the server, but the data connection may be closed. An + appropriate reply should be sent by the server. + + Delete (DELE) - This command causes the file specified in the + pathname to be deleted at the server site. If an extra level of + protection is desired (such as the query, "Do you really wish to + delete?"), it should be provided by the user-FTP process. + + List (LIST) - This command causes a list to be sent from server to + user site. If the pathname specifies a directory, the server + should transfer a list of files in the specified directory. If + the pathname specifies a file then server should send current + information on the file. A null argument implies the user's + current working or default directory. The data transfer is over + the data connection in type ASCII or type EBCDIC. (It is the user + 's responsibility to ensure the correct parameters.) + + NList (NLST) - This command causes a directory listing to be sent + from server to user site. The pathname should specify a directory + and the server will return a stream of names of files and no other + information. The data will be transferred in ASCII or EBCDIC type + over the data connection as valid pathname strings separated by + + + +McKenzie [Page 22] + +RFC 454 File Transfer Protocol July 1972 + + + CRLF. This command will allow automatic copying of an entire + directory when used with the appropriate transfer commands. + + Status (STAT) - This command shall cause a status response to be + sent over the TELNET connection in form of a reply. The command + may be sent during a file transfer (preceded by a TELNET SYNC) in + which case the server will respond with the status of the opera- + tion in progress, or it may be sent between file transfers. In + the latter case the command may have an argument field such as a + pathname. If the argument is a pathname, the command is analogous + to the "list" command except that data shall be transferred in + ASCII on the TELNET connection. If a partial pathname is given, + the server may respond with a list of file names or attributes + associated with that specification. If no argument is given, the + server should return general status information about the server + FTP process. This should include current values of all transfer + parameters and the status of connections. + + Help (HELP) - This command shall cause the server to send helpful + information regarding its implementation status over the TELNET + connection to the user. The command may take an argument (e.g. + any command name) and return more specific information as a + response. The reply is type 100, general system status. It is + suggested that HELP be allowed before entering a USER command. + + Mail File (MLFL) - The intent of this command is to enable a user + site to mail data (in form of a file) to another user at the + server site. It should be noted that the files to be mailed are + transmitted via the data connection in ASCII or EBCDIC type. (It + is the user's responsibility to ensure that the type is correct.) + These files should be appended to the destination user's mail by + the server in accordance with serving HOST mail conventions. The + mail may be marked as sent from the particular using HOST and the + user specified by the 'USER' command. The argument field may con- + tain one or more system or NIC idents (it is recommended that mul- + tiple ident be allowed so the same mail can easily be sent to + several users), or it may be empty. If the argument field is + empty or blank (one or more spaces), then the mail is destined for + a printer or other designated place for site mail. A NIC ident + refers to the standard identification described in the NIC Direc- + tory of Network Participants. A serving host may keep a table + mapping NIC indents into system idents, although NIC idents are + not required in the implementation. A system ident is the user's + normal identification at the serving host. The use of system + idents would allow a network user to send mail to other users who + do not have NIC identification but whose system ident is known. + + + + + +McKenzie [Page 23] + +RFC 454 File Transfer Protocol July 1972 + + + Mail (MAIL) - This command allows a user to send mail that is not + in a file over the TELNET connection. The argument field may con- + tain one or more system or NIC idents, or it may be empty. The + idents are defined as above for the MLFL command. After the + 'MAIL' command is received, the server is to treat the following + lines as text of the mail sent by the user. The mail text is to + be terminated by a line containing only a single period, that is, + the character sequence ".CRLF" in a new line. It is suggested + that a modest volume of mail service should be free; i.e., it may + be entered before a USER command. + +IV.A.4 Miscellaneous Commands + + NoOP (NOOP) - This command does not affect any parameters or pre- + viously entered command. The server simply sends a no-op reply. + + Quote (QUOT) - This command allows the user to talk directly to + the FTP-server. After parsing this command, the user-FTP process + will pass without examination all succeeding liners until the NQUO + command is received. Between these two commands the server will + respond appropriately to his implementation and the user's + requests. + + NoQuote (NQUO) - This command returns the user and server + processes to normal interactive mode. Both QUOT and NQUO have + reply codes to be sent by th server process to the user process to + ensure agreement on the current mode. + + The quote commands provide a convenient method of testing server- + implemented experimental commands. The names of the latter should + begin with an X, and can be listed in the system HELP reply. It + should be noted that the official command set is expandable; sugges- + tions should go first to Alexander A. McKenzie (BBN). + +IV.B FTP Replies + + The server sends FTP replies over the TELNET connection in response + to user FTP commands. The FTP replies constitute the acknowledgment + or completion code (including errors). The FTP-server replies are + formatted for human or program interpretation. Single line replies + consist of a leading three-digit numeric code followed by a space, + followed by a one-line text explanation of the code. For replies + that contain several lines of text, the first line will have a lead- + ing three-digit numeric code followed immediately by the ASCII char- + acter "-" (Hyphen, Code 55 (octal)) and possibly some text. All + succeeding continuation lines except the last are constrained not to + begin with three digits; the last line must repeat the numeric code + of the first line and be followed immediately by a space. + + + +McKenzie [Page 24] + +RFC 454 File Transfer Protocol July 1972 + + + For example: + + 100-First Line + Continuation Line + Another Line + 100 Last Line + + The numeric codes are assigned by groups and for ease of interpreta- + tion by programs in a manner consistent with other protocols such as + the RJE protocol. The three digits of the code are to be interpreted + as follows: + + a) The first digit specifies type of response as indicated below: + + 000 These replies are purely informative and constitute neither a + positive nor a negative acknowledgment. + + 1xx Informative replies to status inquiries. These constitute a + positive acknowledgment to the status command. + + 2xx Positive acknowledgment of previous command or other success- + ful action. + + 3xx Incomplete information. Activity cannot proceed without + further specification and input. + + 4xx Unsuccessful reply. The request is correctly specified but + the server is unsuccessful in correctly fulfilling it. + + 5xx Incorrect or illegal command. The command or its parameters + were invalid or incomplete from a syntactic viewpoint, or the + command is inconsistent with a previous command. The command + in question has been completely ignored. + + 6xx-9xx Reserved for future expansion. + + + + + + + + + + + + + + + + +McKenzie [Page 25] + +RFC 454 File Transfer Protocol July 1972 + + + b) The second digit specifies the general category to which the + response refers: + + x00-x29 General purpose replies, not assignable to other + categories. + + x30 Primary access. Informative replies to the "log-on" attempt. + + x40 Secondary access. The primary server is commenting on its + ability to access a secondary service. + + x5x FTP results + + x6x RJE results. + + x7x-x9x Reserved for future expansion. + + c) The final digit specifies a particular message type. Since the + code is designed for an automation process to interpret, it is + not necessary for every variation of a reply to have a unique + number. Only the basic meaning of replies need have unique + numbers. The text of a reply can explain the specific reason for + that reply to a human user. + + Each TELNET line delimited by a numeric code and CRLF (or group + of text lines bounded by coded lines) that is sent by the server + is intended to be a complete reply message. It should be noted + that the text of replies is intended for a human user. Only the + reply codes and in some instances the first line of text are + intended for programs. + +The assigned reply codes relating to FTP are: + +000 General information message (site, time of day, etc.). +010 Message from system operator. +030 Server availability information. +050 FTP commentary or user information. +100 System status reply. +110 System busy doing... +150 File status reply +151 Directory listing reply. +200 Last command received correctly. +201 An ABORT has terminated activity, as requested. +202 Abort request ignored, no activity in progress. +230 User is "logged in". May proceed. +231 User is "logged out". Service terminated. +232 Logout command noted, will complete when transfer done. +233 User is "logged out". Parameters reinitialized. + + + +McKenzie [Page 26] + +RFC 454 File Transfer Protocol July 1972 + + +250 FTP file transfer started correctly. +251 FTP Restart-marker reply. + + Text is : MARK yyyy = mmmm + where yyyy is user's data stream marker (yours) + and mmmm is server's equivalent marker (mine) + (Note the spaces between the markers and '=') + +252 FTP transfer completed correctly. +253 Rename completed. +254 Delete completed. +255 FTP server data socket reply + + Text is: SOCK nnnn + where nnnn is a decimal integer representing + the server socket for data connection + +256 Mail completed. +300 Connection greeting message, awaiting input. +301 Current command incompleted (no CRLF for long time). +330 Enter password +331 Enter account (if account required as part of login + sequence). +350 Enter mail, terminate by a line with only a '.' +400 This service not implemented. +401 This service not accepting user now, goodbye. +430 Log-on time or tries exceeded, goodbye. +431 Log-on unsuccessful. Usre and/or password invalid. +432 User not valid for this service. +433 Cannot transfer files without valid account. Enter account. +434 Log-out forced by operator action. Phone site. +435 Log-out forced by system problem. +436 Service shutting down, goodbye. +450 FTP: File not found. +451 FTP: File access denied to you. +452 FTP: File transfer incomplete, data connection closed. +453 FTP: File transfer incomplete, insufficient storage space. +454 FTP: Cannot connect to your data socket. +455 FTP: File system error not covered by other reply codes. +456 FTP: Name duplication rename failed. +457 FTP: Transfer parameters in error. +500 Last command line completely unrecognized. +501 Syntax of last command is incorrect. +502 Last command incomplete, parameters missing. +123456789012345678901234567890123456789012345678901234567890123456789012 +503 Last command invalid (ignored), illegal parameter combination. +504 Last command invalid, action not possible at this time. +505 Last command conflicts illegally with previous command(s). + + + +McKenzie [Page 27] + +RFC 454 File Transfer Protocol July 1972 + + +506 Requested action not implemented by the server. +507 Catchall error reply. +550 Bad pathname specification (e.g., syntax error). + + +V. DECLARATIVE SPECIFICATIONS + + In order to make FTP workable without needless error messages, the + following minimum implementation is required for servers: + +TYPE -- ASCII (with 8-bit bytes) + MODE -- Stream + STRUCTURE -- File + Record (with ASCII type and CRLF for EOR) + FORM -- Unformatted + COMMANDS -- USER, BYE, SOCK + TYPE, BYTE, MODE, STRU, FORM + for the default values + RETR, STOR + NOOP + + The initial default values for transfer parameters are: + + TYPE -- ASCII + BYTE -- 8 + MODE -- Stream + STRU -- File + FORM -- Unformatted + + +V.A Connections + + The server-FTP process at the server site shall "listen" on Socket 3, + via its server-TELNET. The user or user-FTP process at the user site + shall initiate the full-duplex TELNET connections via its user-TELNET + performing the ARPANET standard initial connection protocol (ICP) to + server socket 3. Servers may specify that interaction over the TEL- + NET connections be line-at-a-time with local echo. The server is not + obliged to provide remote echo and may ignore TELNET control charac- + ters; he should not, however, return error response to the latter. + All editing of command lines similarly must be local. The TELNET + connections shall be closed by the user site upon completion of use + and receipt of the last server reply. + + The user site must "listen" on the specified data socket or sockets + (a send and/or a receive socket). The server site shall initiate the + data connection using the specified data socket and byte size. The + direction of data connection and the data socket used shall be + + + +McKenzie [Page 28] + +RFC 454 File Transfer Protocol July 1972 + + + determined by the FTP service command. The server shall send a reply + to the user indicating the server data socket so that the user may + ensue the security of data transfer. This can be done at any time + prior to the first transfer of data over a data connection. It + should be emphasized that the user-FTP should not wait for a 255 + (server data socket) reply before doing the "listen", since there is + no guarantee that the reply will arrive before the user site receives + the initiating RFC. The security check can be done when the reply + arrives and the data connection closed if it was made to a socket + other than the one specified. + + The data connection shall be closed by the server site under the con- + ditions described in Section III.A. If the server wishes to close + the connection in modes where that is not required, it is recommended + that the close be sent immediately after the file transfer is com- + pleted rather than after a new transfer command is received, because + the user or server may have to test the state of the socket before + doing a "listen" or "init". The server should in general send a + reply before closing the data connection to avoid problems at the + user end, though, for reasons stated above, the user-FTP should not + wait for the reply before doing his close. + +V.B Commands + + The commands are ASCII character strings transmitted over the TELNET + connections as described in section IV.A. The command functions and + semantics are described in sections IV.A.1, IV.A.2, IV.A.3, and + IV.A.4. The command syntax is specified here. + + The commands begin with a command code followed by an argument field. + The command codes are four or less ASCII alphabetic characters. + Upper and lower case alphabetic characters are to be treated identi- + cally. Thus any of the following may represent the retrieve command: + + RETR Retr retr ReTr rETr + + This also applies to any symbols representing parameters values, such + as A or a for ASCII TYPE. The command codes and the argument fields + are separated by one or more spaces. + + The argument field consists of a variable length ASCII character + string ending with the character sequence CRLF (Carriage Return + immediately followed by Line Feed). In the following section on syn- + tax it should be stressed that all characters in the argument field + are ASCII characters. Thus a decimal integer shall mean an ASCII + represented decimal integer. + + + + + +McKenzie [Page 29] + +RFC 454 File Transfer Protocol July 1972 + + + The following are all the currently defined FTP commands: + + USER <username> CRLF + + PASS <password> CRLF + + ACCT <acctno> CRLF + + REIN CRLF + + BYE CRLF + + BYTE <byte size> CRLF + + SOCK <HOST-socket> CRLF + + LSTN <direction> CRLF + + TYPE <type code> CRLF + + FORM <form code> CRLF + + STRU <structure code> CRLF + + MODE <mode code> CRLF + + RETR <pathname> CRLF + + STOR <pathname> CRLF + + APPE <pathname> CRLF + + ALLO <decimal integer> CRLF + + REST <marker> CRLF + + RNFR <pathname> CRLF + + RNTO <pathname> CRLF + + ABOR CRLF + + DELE <pathname> CRLF + + LIST <pathname> CRLF + + NLST <pathname> CRLF + + + + +McKenzie [Page 30] + +RFC 454 File Transfer Protocol July 1972 + + + STAT <pathname> CRLF + + HELP <string> CRLF + + MLFL <users> CRLF + + MAIL <users> CRLF + + NOOP CRLF + + QUOT CRLF + + NQUO CRLF + + The syntax of the above argument fields (using BNF notation where + applicable) is: + + <username> ::= <string> + + <password> ::= <string> + + <acctno> ::= <string> + + <string> ::= <empty>/<char>/<char><string> + + <char> ::= any of the 128 ASCII characters except CR and LF. + + <marker> ::= <pr string> + + <pr string> ::= <empty>/<pr char>/<pr char> <pr string> + + <pr char> ::= any ASCII code 33 through 126 + + <byte size> ::= any decimal integer 1 through 255. + + <HOST-socket> ::= <socket>/HOST number>,<socket> + + <HOST number> ::= a decimal integer specifying an ARPANET HOST + + <socket> ::= decimal integer between 0 and (2**32)-1 + + <direction> ::= S/R + + <form code> ::= U/P + + <type code> ::= A/E/I/L + + <structure code> ::= F/R + + + +McKenzie [Page 31] + +RFC 454 File Transfer Protocol July 1972 + + + <mode code> ::= S/B/T/H + + <pathname> ::= <string> + + <decimal integer> ::= <digit>/<digit><decimal integer> + + <digit> ::= 0|1|2|3|4|5|6|7|8|9 + + <empty> ::= the null string (specifies use the default). + + <users> ::= <user>|<user,<users> + + <user> ::= <empty>|<NIC ident>|<sys ident> + + <NIC ident> ::= <string> + + <sys ident> ::= <string> + + +V.C Sequencing of Commands and Replies + + The communication between the user and server is intended to be an + alternating dialogue. As such, the user issues an FTP command and + the server responds with a prompt primary reply. The user should + wait for this initial primary success or failure response before + sending further commands. + + A second type of reply is sent asynchronously with respect to user + commands. These replies may, for example, report on the progress or + completion of file transfer and as such are secondary replies to file + transfer commands. + + The third class of replies are informational and spontaneous replies + which may arrive at any time. These replies are listed below as + spontaneous. + + + + + + + + + + + + + + + + +McKenzie [Page 32] + +RFC 454 File Transfer Protocol July 1972 + + +COMMAND-REPLY CORRESPONDENCE TABLE + +COMMAND SUCCESS FAIL +------- ------- ---- +USER 230,330 430-432,500-505,507 +PASS 230,331 430-432,500-507 +ACCT 230 430-432,500-507 +REIN 232,233 401,436,500-507 + Secondary Reply 300 +BYE 231,232 430-432,500-505,507 +BYTE 200,331 500-507 +SOCK 200,331 500-505,507 +LSTN 255,331 500-507 +TYPE 200,331 500-507 +FORM 200,331 500-507 +STRU 200,331 500-507 +MODE 200,331 500-507 + +RETR 250,331 433,450,451,454,455,500-505,507,550 + Secondary Reply 252 452 +STOR 250,331 433,451,454,455,457,500-505,507,550 + Secondary Reply 252 452,453 +APPE 250,331 433,451,454,455,457,500-507,550 + Secondary Reply 252 452,453 +ALLO 200,331 500-507 +REST 200,331 500-507 +RNFR 200,331 433,450,451,455,500-507,550 +RNTO 253,331 433,450,451,455,456,500-505,507,550 +ABOR 201,202,331 500-507 +DELE 254,331 433,450,451,455,500-507,550 +LIST 250,331 433,450,451,454,455,457,500-507,550 + Secondary Reply 252 452 +NLST 250,331 433,450,451,454,455,457,500-507 + Secondary Reply 252 452 +STAT 100,110,150, 450,451,454,455,500-507,550 + 151,331 +HELP 000,030,050, 500-507 + 331 +MLFL 250,331 433,450,451,454,455,457,500-507 + Secondary Reply 252 452,453 +MAIL 331,350 433,450,451,455,500-507 + Secondary Reply 256 +NOOP 200 500-505,507 +QUOT 200,331 500-507 +NQUO 200 500-505,507 + +Spontaneous 0xx,300,301 400,401,434-436 +Replies 251,255 + + + +McKenzie [Page 33] + +RFC 454 File Transfer Protocol July 1972 + + +V.D Typical FTP Scenarios + + 1. TIP User wanting to transfer file from HOST X to local printer: + + a) TIP user opens TELNET connections by ICP to HOST X, socket 3. + + b) The following commands and replies are exchanged: + + TIP HOST X + --- ------ + + USER username CRLF ----------> + <----------330 Enter Password CRLF + + PASS password CRLF ----------> + <----------230 User logged in CRLF + + SOCK 65538 CRLF ----------> + <----------200 Command received OK CRLF + + RETR this.file CRLF ----------> + <----------255 SOCK 5533 CRLF + + (HOST X initiates data connection to + TIP socket 65538, i.e., PORT 1 receive) + + <----------250 File transfer started + + BYE CRLF -----------------> + <----------252 File transfer completed + + c) HOST X closes the TELNET and data connections. + + Note: The TIP user should be in line mode. + + 2. User at HOST U wanting to transfer files to/from HOST S: + + In general the user would communicate to the server via a mediat- + ing user-FTP process. The following may be a typical scenario. + The user-FTP prompts are shown in parentheses, '---->' represents + commands from HOST U to HOST S, and '<----' represents replies + from HOST S to HOST U. + + + + + + + + + +McKenzie [Page 34] + +RFC 454 File Transfer Protocol July 1972 + + +Local Commands by User Action Involved +---------------------- --------------- + +ftp (host) multics CR ICP to HOST S, socket 3, + establishing TELNET connections. +username Doe CR USER Doe CRLF ----> + <---- 330 password CRLF +password mumble CR PASS mumble CRLF ----> + <---- 230 Doe logged in. CRLF +retrieve (local type) ASCII CR +(local pathname) test 1 CR User-FTP opens local file in ASCII. +(for.pathname) test.p11 CR RETR test.p11 CRLF + <---- 255 SOCK 1233 CRLF + Server makes data connection to (U+4). + <---- 250 File transfer starts CRLF + <---- 252 File transfer complete CRLF +type ImageCR TYPE I CRLF ----> + <---- 200 Command OK CRLF +byte 36CR BYTE 36 CRLF ----> + <---- 200 Command OK CRLF +store (local type) image CR +(local pathname) file dump CR User-FTP opens local file in Image. +(for.pathname) >udd>cn>fd CR STOR >udd>cn>fd CRLF ----> + <---- 451 Access denied CRLF +terminate <---- 231 Doe logged out CRLF + Server closes all connections. + + + [ This RFC was put into machine readable form for entry ] + [ into the online RFC archives by Via Genie 03/00 ] + + + + + + + + + + + + + + + + + + + + + +McKenzie [Page 35] + |