|
Network Working
Group
Request for Comments:
959
Obsoletes RFC: 765 (IEN
149)
FILE TRANSFER PROTOCOL (FTP)
Status
of this Memo
This memo is the official specification of the File Transfer
Protocol (FTP). Distribution of this memo is unlimited.
The following new optional commands are included in this edition of
the specification:
CDUP (Change to Parent Directory), SMNT (Structure Mount), STOU(Store
Unique), RMD (Remove Directory), MKD (Make Directory), PWD (Print
Directory), and SYST (System).
Note that this specification is compatible with the previous edition.
1.
INTRODUCTION
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, personal workstations, and TACs,with a simple,
and easily implemented protocol design.
This paper assumes knowledge
of the Transmission Control Protocol (TCP) [2] and the Telnet Protocol [3].
These documents are contained in the ARPA-Internet protocol handbook [1].
2.
OVERVIEW
In this section, the history, the terminology, and the FTP model are
discussed. The terms defined in this section are only those that
have special significance in FTP. Some of the terminology is very
specific to the FTP model;
some readers may wish to turn to the section on the FTP model while
reviewing the terminology.
2.1. HISTORY
FTP has had a long evolution over the years. Appendix III is a
chronological compilation of Request for Comments documents relating to
FTP. These include the first proposed file transfer mechanisms in 1971 that
were developed for implementation on hosts at M.I.T. (RFC 114), plus
comments and discussion in RFC 141.
RFC 172 provided a user-level oriented protocol for file transfer between
host computers (including terminal IMPs). A revision of this as RFC 265,
restated FTP for additional review, while RFC 281
suggested further
changes. The use of a "Set Data Type"transaction was proposed in RFC 294 in
January 1982.
RFC 354 obsoleted RFCs 264 and 265. The File Transfer Protocol was now
defined as a protocol for file transfer between HOSTs on the ARPANET, with
the primary function of FTP defined as
transfering files
efficiently and reliably among hosts and allowing the convenient use of
remote file storage capabilities.
RFC 385 further commented
on errors, emphasis points, and additions to the protocol, while RFC 414
provided a status report on the working server and
user FTPs. RFC 430, issued in 1973,(among other RFCs too numerous to
mention) presented further comments on FTP. Finally, an "official" FTP
document was
published as RFC 454.
By July 1973,
considerable changes from the last versions of FTP were made, but the
general structure remained the same. RFC 542 was published as a new
"official" specification to reflect these changes. However, many
implementations based on the older specification were not updated.
In 1974, RFCs 607 and 614 continued comments on FTP. RFC 624 proposed
further design changes and minor modifications. In 1975,
RFC 686 entitled, "Leaving Well Enough Alone", discussed the
differences between all of the early and later versions of FTP. RFC 691
presented a minor revision of RFC 686, regarding the subject of print
files.
Motivated by the transition from the NCP to the TCP as the underlying
protocol, a phoenix was born out of all of the above efforts in RFC 765 as
the specification of FTP for use on TCP.
This current edition of the
FTP specification is intended to correct some
minor documentation errors, to improve the explanation of some protocol
features, and to add some new optional commands.
RFC 959 File Transfer Protocol
In particular, the
following new optional commands are included in
this edition of the specification:
CDUP - Change to Parent Directory
SMNT - Structure Mount
STOU - Store Unique
RMD - Remove Directory
MKD - Make Directory
PWD - Print Directory
SYST - System
This specification is compatible with the previous edition. A program
implemented in conformance to the previous specification should
automatically be in conformance to this specification.
2.2. TERMINOLOGY
ASCII
The ASCII character set is as defined in the ARPA-Internet Protocol
Handbook. 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 invoke access controls.
byte size
There are two byte
sizes of interest in FTP: the logical byte size of the file, and the
transfer byte size used for the
transmission of the
data. The transfer byte size is always 8 bits. The transfer byte size is
not necessarily the byte size
in which data is to be
stored in a system, nor the logical byte size for interpretation of the
structure of the data.
RFC 959 File Transfer Protocol
control connection
The communication path between the USER-PI and SERVER-PI for the exchange of
commands and replies. This connection follows the Telnet Protocol.
data connection
A full duplex connection
over which data is transferred, in a specified mode and type. The data
transferred may be a part of a file, an entire
file or a number of files. The path may be between a server-DTP and a
user-DTP, or between two server-DTPs.
data port
The passive data transfer process "listens" on the data port for a
connection from the active transfer process in order to
open the data
connection.
DTP
The data transfer
process establishes and manages the data connection. The DTP can be passive
or active.
End-of-Line
The end-of-line sequence defines the separation of printing lines. The
sequence is Carriage Return, followed by Line Feed.
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.
RFC 959 File
Transfer Protocol
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 during transfer
including EOR and
EOF. The transfer modes defined in FTP are described in the Section on
Transmission Modes.
NVT
The Network Virtual Terminal as defined in the Telnet Protocol.
NVFS
The Network Virtual File System. A concept which defines a standard network
file system with standard commands and pathname conventions.
page
A
file may be structured as a set of independent parts called pages. FTP
supports the transmission of discontinuous files as
independent indexed
pages.
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 involved in the transfer.
PI
The
protocol interpreter. The user and server sides of the protocol have
distinct roles implemented in a user-PI and a server-PI.
|