FTP File Transfer Protocol
Reference: RFC 959
FTP Objectives (from RFC 959)
- promote sharing of files
- encourage indirect use of remote computers
- shield user from variations in file storage
- transfer data reliably and efficiently
- “FTP, although usable directly by a user at a terminal, is designed
mainly for use by programs”
The FTP Model

Control and Data Connections
- Control functions (commands) and reply codes are transferred over the
control connection.
- All data transfer takes place over the data connection.
- The control connection must be “up” while data transfer takes place.
Control Connection
- The control connection is the “well known” service.
- The control connection uses the TELNET protocol.
- Commands and replies are all line oriented text (default is ASCII).
Standard Connection Model

Alternative Connection Model(Proxy FTP)

Access ControlCommands
- USER specify user
- PASS specify password
- CWD change directory
- CDUP change directory to parent
- QUIT logout
Transfer Parameter Commands
- PORT publish local data port
- PASV server should listen
- TYPE establish data representation
- MODE establish transfer mode
- STRU establish file structure
Service Commands
- RETR retrieve file
- STOR send file
- STOU send file and save as unique
- APPE send file and append
- ABOR abort previous service command
- PWD print working directory
- LIST transfer list of files over data link
FTP Replies
- All replies are sent over control connection.
- Replies are a single line containing
- 3 digit status code (sent as 3 numeric chars).
- text message.
- The FTP spec. includes support for multiline text replies.
- status code is used by programs, text is for humans.
FTP Reply Status Code
First digit of status code indicates type of reply:
- 1’: Positive Preliminary Reply (got it, but wait).‘
- 2’: Positive Completion Reply (success).‘
- 3’: Positive Intermediate Reply (waiting for more information).‘
- 4’: Transient Negative Completion (error - try again).‘
- 5’: Permanent Negative Reply (error - can’t do).
2nd digit indicates function groupings.
- 0’: Syntax (problem with command syntax).
- 1’: Information (reply to help or status cmds).‘
- 2’: Connections (problem with a connection).‘
- 3’: Authentication (problem with login).‘
- 4’: Unspecified.‘
- 5’: File system (related to file system).
3rd digit indicates specific problem within function group.
Data Transfer Modes
- STREAM: file is transmitted as a stream of bytes.
- BLOCK: file is transmitted as a series of blocks preceded by hearers
containing count and descriptor code (EOF, EOR, restart marker).
- COMPRESSED: uses a simple compression scheme - compressed blocks are
transmitted.
RFC 959 - Please Read !
- The RFC includes lots more information and many details including:
- parameters for commands
- lists of reply status codes
- protocol state diagrams
- support for a variety of file structures
- sample sessions