The File Transfer Protocol (FTP) provides the basic elements of file sharing between hosts. FTP uses TCP to create a virtual connection for control information and then creates a separate TCP connection for data transfers.
Commands:
Command | Description | References |
ABOR | Abort a file transfer. |
|
ACCT <account> | Send account information. |
|
ADAT | Authentication/Security Data. | RFC 2228 |
ALLO <bytes> | Allocate. |
|
APPE <filename> | Append to a remote file. |
|
AUTH | Authentication/Security Mechanism. | RFC 2228 |
CCC | Clear Command Channel. | RFC 2228 |
CDUP <dir path> | Change to parent directory. | RFC 959 |
CONF | Confidentiality Protected Command. | RFC 2228 |
CWD <dir path> | Change working directory. | RFC 697 |
DELE <filename> | Delete a remote file. |
|
ENC | Privacy Protected Command. | RFC 2228 |
EPRT | Extended Data port. | RFC 2428 |
EPSV | Extended Passive. | RFC 2428 |
FEAT | Feature. | RFC 2389 |
HELP <command> | Return help on using the server. |
|
HOST <host> | Set virtual host name |
|
LANG | Language negotiation. | RFC 2640 |
LIST <name> | List long dir/file-information. |
|
LPRT | Long data port. | RFC 1639 |
LPSV | Long passive. | RFC 1639 |
MDTM | Return the modification time of a file. |
|
MIC | Integrity Protected Command. | RFC 2228 |
MKD <directory> | Make a remote directory. | RFC 959 |
MLSD <directory> | Name list of remote directory. |
|
MODE <mode> | Set transfer mode. (S=stream, B=block, C=compressed) |
|
NLST <directory> | Name list of remote directory. |
|
NOOP | No operation. |
|
OPTS | Options. | RFC 2389 |
PASS <password> | Send password. |
|
PASV | Enter passive mode. |
|
PBSZ | Protection Buffer Size. | RFC 2228 |
PORT <address> | Open a Data port (h1,h2,h3,h4,p1,p2). |
|
PROT | Data Channel Protection Level. | RFC 2228 |
PWD | Print working directory. | RFC 959 |
QUIT | Logout (terminate the connection). |
|
REIN | Reinitialize the connection. |
|
REST <offset> | Restart. |
|
RETR <filename> | Retrieve a remote file. |
|
RMD <directory> | Remove a remote directory. | RFC 959 |
RNFR <old path> | Rename from. |
|
RNTO <new path> | Rename to. |
|
SITE <params> | Site parameters (site-specific commands). |
|
SIZE <filename> | Return the size of a file . |
|
SMNT <pathname> | Structure mount. | RFC 959 |
STAT <directory> | Return server status. |
|
STOR <filename> | Store a file on the remote host. |
|
STOU <filename> | Store a file unique. | RFC 959 |
STRU <type> | Set file transfer structure (F=file, R=record, P=page). |
|
SYST | return system type. | RFC 959 |
TYPE <data type> | Set transfer type (A=ASCII, E=EBCDIC, I=binary). |
|
USER <username> | Send user name for system log-in. |
|
XCUP | Change to the parent of the current working directory. | RFC 775 |
XMKD | Make a directory. | RFC 775 |
XPWD | Print the current working directory. | RFC 775 |
XRCP | extension to FTP mail (Now incorporated into SMTP, RFC 788) | RFC 743 |
XRMD | Remove the directory. | RFC 775 |
XRSQ | extension to FTP mail (Now incorporated into SMTP, RFC 788) | RFC 743 |
XSEM | Send, Mail if cannot. | RFC 737 |
XSEN | Send to terminal. | RFC 737 |
FTP reply code format:
Code | Description |
1yz | Positive Preliminary reply. |
2yz | Positive Completion reply. |
3yz | Positive Intermediate reply. |
4yz | Transient Negative Completion reply. |
5yz | Permanent Negative Completion reply. |
x0z | Syntax. These replies refer to syntax errors, syntactically correct commands that don't fit any functional category, unimplemented or superfluous commands. |
x1z | Information. These are replies to requests for information, such as status or help. |
x2z | Connections. Replies referring to the control and data connections. |
x3z | Authentication and accounting. Replies for the login process and accounting procedures. |
x4z | File system. These replies indicate the status of the Server file system vis-a-vis the requested transfer or other file system action. |
x5z |
|
FTP reply codes:
Code | Description |
110 | Restart marker reply. |
120 | Service ready in nnn minutes. |
125 | Data connection already open; transfer starting. |
150 | File status okay; about to open data connection. |
200 | Command okay. |
202 | Command not implemented, superfluous at this site. |
211 | (System status, or system help reply.) |
212 | (Directory status reply.) |
213 | (File status reply.) |
214 | (Help message.) |
215 | NAME system type. |
220 | Service ready for new user. |
221 | Service closing control connection. |
225 | Data connection open; no transfer in progress. |
226 | Closing data connection. |
227 | Entering Passive Mode <h1,h2,h3,h4,p1,p2>. |
228 | Entering Long Passive Mode. |
229 | Extended Passive Mode Entered. |
230 | User logged in, proceed. |
250 | Requested file action okay, completed. |
257 | "PATHNAME" created. |
331 | User name okay, need password. |
332 | Need account for login. |
350 | Requested file action pending further information. |
421 | Service not available, closing control connection. |
425 | Can't open data connection. |
426 | Connection closed; transfer aborted. |
450 | Requested file action not taken. |
451 | Requested action aborted. Local error in processing. |
452 | Requested action not taken. File unavailable (file busy) |
500 | Syntax error, command unrecognized. |
501 | Syntax error in parameters or arguments. |
502 | Command not implemented. |
503 | Bad sequence of commands. |
504 | Command not implemented for that parameter. |
521 | Supported address families are <af1, .., afn> |
522 | Protocol not supported. |
530 | Not logged in. |
532 | Need account for storing files. |
550 | Requested action not taken. File unavailable (not found, no access). |
551 | Requested action aborted. Page type unknown. |
552 | Requested file action aborted. |
553 | Requested action not taken. File name not allowed. |
554 | Requested action not taken: invalid REST parameter. |
555 | Requested action not taken: type or stru mismatch. |
LIST information in UNIX-style format:
In following format every entry will send to the client using the UNIX List format.
attribs | links | owner | group | size | date & time/year | name | CR/LF |
![]() | spacer (0x20) | 1 byte |
attribs | attributes of this entry (type/owner/group/anyone) | 10 bytes |
links | link counter (right justified) | 3..5 bytes |
owner | owner name (left justified) | 8..10 bytes |
group | group name (left justified) | 8..10 bytes |
size | size of this entry (right justified) | 7..10 bytes |
date & time/year | creation/last-change date & time/year (left justified) | 12 bytes |
name | name of this entry (no filling) | 1..255 bytes |
CR/LF | end-of-line (0x0D & 0x0A) | 2 byte |
attributes :
type
owner
group
anyone
-
r w x
r w x
r w x
type (first character)
-
the entry is a ordinary file
b
the entry is a block special file
c
the entry is a character special file
d
the entry is a directory
l
the entry is a symbolic link
p
the entry is a FiFo special file (pipe)
s
the entry is a local socket
owner / group / anyone (a 3 bytes)
r
read
w
write (edit)
x
execute (search)
-
corresponding permission not granted
link counter :
The number of links to this entry. The size of this field is 3..5 characters with blanks plus right justified value, like " 1".
owner name :
The name of the owner of this entry. This is the user profile name of the entry-owner. The size of this field is 8..10 characters with the left justified name-string plus filling blanks, like "ftp ".
group name :
The name of the group of this entry. This is the group profile name of the entry. The size of this field is 8..10 characters with the left justified name-string plus filling blanks, like "service ".
size :
The size of this entry in bytes. The size of this field itself is 7..10 characters with blanks plus right justified value in decimal characters, like " 1024". Directories alltimes have a length of 0.
date & time/year :
The modification time of this entry. The size of this field is fix 12 characters with left justified value in following format.
last modification in the previous 180 days "Mmm dd hh:mm"last modification not in the previous 180 days "Mmm dd yyyy"with the following description of the elements:
Mmm
abbreviated month ("Jan", Feb", ..)
dd
day of the month, right justified and padded with blank (" 1" .. "31")
hh
hour, right justified and padded with ZERO ("00" .. "23")
mm
minute, right justified and padded with ZERO ("00" .. "59")
yyyy
year, right justified but alltimes 4 characters ("1980" ..)
name :
The name of this entry. This field have a vaiable length, depends on the name of this entry and can includes blanks. After this field the line (this entry) will closed (without a spacer) with a CR+LF.
example:
"drwxr--r-- 1 ftp service 0 Jul 8 2005 images"
"-rw-r--r-- 1 ftp service 2038 Aug 16 09:23 index.html"