|
Spontaneous Replies
Sometimes "the system"
spontaneously has a message to be sent
to a user (usually all users).
For example, "System going down
in 15 minutes". There is no
provision in FTP for such
spontaneous information to be
sent from the server to the user.
It is recommended that such
information be queued in the
server-PI and delivered to the
user-PI in the next reply
(possibly making it a multi-line
reply).
The table below lists alternative
success and failure replies for
each command. These must be
strictly adhered to; a server may
substitute text in the replies, but
the meaning and action implied
by the code numbers and by the
specific command reply sequence
cannot be altered.
Command-Reply Sequences
In this section, the
command-reply sequence is presented. Each
command is listed with its
possible replies; command groups are
listed together. Preliminary
replies are listed first (with
their succeeding replies
indented and under them), then
positive and negative
completion, and finally intermediary
replies with the remaining
commands from the sequence
following. This listing forms
the basis for the state
diagrams, which will be
presented separately.
Connection Establishment
120
220
220
421
Login
USER
230
530
500, 501, 421
331, 332
PASS
230
202
530
500, 501, 503, 421
332
ACCT
230
202
530
500, 501, 503, 421
CWD
250
500, 501, 502, 421, 530, 550
CDUP
200
500, 501, 502, 421,
530, 550
SMNT
202, 250
500, 501, 502, 421,
530, 550
Logout
REIN
120
220
220
421
500, 502
QUIT
221
500
Transfer parameters
PORT
200
500, 501, 421, 530
PASV
227
500, 501, 502, 421, 530
MODE
200
500, 501, 504, 421, 530
TYPE
200
500, 501, 504, 421, 530
STRU
200
500, 501, 504, 421, 530
File action commands
ALLO
200
202
500, 501, 504, 421, 530
REST
500, 501, 502, 421, 530
350
STOR
125, 150
(110)
226, 250
425, 426, 451, 551,
552
532, 450, 452, 553
500, 501, 421, 530
STOU
125, 150
(110)
226, 250
425, 426, 451, 551,
552
532, 450, 452, 553
500, 501, 421, 530
RETR
125, 150
(110)
226, 250
425, 426, 451
450, 550
500, 501, 421, 530
LIST
125, 150
226, 250
425, 426, 451
450
500, 501, 502, 421, 530
NLST
125, 150
226, 250
425, 426, 451
450
500, 501, 502, 421, 530
APPE
125, 150
(110)
226, 250
425, 426, 451, 551,
552
532, 450, 550, 452, 553
500, 501, 502, 421, 530
RNFR
450, 550
500, 501, 502, 421, 530
350
RNTO
250
532, 553
500, 501, 502, 503,
421, 530
DELE
250
450, 550
500, 501, 502, 421, 530
RMD
250
500, 501, 502, 421,
530, 550
MKD
257
500, 501, 502, 421,
530, 550
PWD
257
500, 501, 502, 421, 550
ABOR
225, 226
500, 501, 502, 421
Informational commands
SYST
215
500, 501, 502, 421
STAT
211, 212, 213
450
500, 501, 502, 421, 530
HELP
211, 214
500, 501, 502, 421
Miscellaneous commands
SITE
200
202
500, 501, 530
NOOP
200
500 421
6. STATE DIAGRAMS
Here we present state diagrams for a
very simple minded FTP
implementation. Only the first digit
of the reply codes is used.
There is one state diagram for each
group of FTP commands or command
sequences.
The command groupings were determined
by constructing a model for
each command then collecting together
the commands with structurally
identical models.
For each command or command sequence
there are three possible
outcomes: success (S), failure (F),
and error (E). In the state
diagrams below we use the symbol B for
"begin", and the symbol W for
"wait for reply".
|
We first present the diagram that
represents the largest group of FTP
commands:
1,3
+---+
----------->| E
|
|
+---+
|
+---+ cmd +---+ 2
+---+
| B |---------->| W |---------->| S
|
+---+ +---+
+---+
|
| 4,5
+---+
----------->| F
|
+---+
This diagram models the commands:
ABOR, ALLO, DELE, CWD, CDUP,
SMNT, HELP, MODE, NOOP, PASV,
QUIT, SITE, PORT, SYST, STAT,
RMD, MKD, PWD, STRU, and TYPE.
The other large group of commands is represented by a very similar
diagram:
3 +---+
----------->| E |
| +---+
|
+---+ cmd +---+ 2 +---+
| B |---------->| W |---------->| S |
+---+ --->+---+ +---+
| | |
| | | 4,5 +---+
| 1 | ----------->| F |
----- +---+
This diagram models the commands:
APPE, LIST, NLST, REIN, RETR, STOR, and STOU.
Note that this second model could also be used to represent the first
group of commands, the only difference being that in the first group
the 100 series replies are unexpected and therefore treated as error,
while the second group expects (some may require) 100 series replies.
Remember that at most, one 100 series reply is allowed per command.
The remaining diagrams model command sequences, perhaps the simplest
of these is the rename sequence:
+---+ RNFR +---+ 1,2 +---+
| B |---------->| W |---------->| E |
+---+ +---+ -->+---+
| | |
3 | | 4,5 |
-------------- ------ |
| | | +---+
| ------------->| S |
| | 1,3 | | +---+
| 2| --------
| | | |
V | | |
+---+ RNTO +---+ 4,5 ----->+---+
| |---------->| W |---------->| F |
+---+ +---+ +---+
The
next diagram is a simple model of the Restart command:
+---+ REST +---+ 1,2 +---+
| B |---------->| W |---------->| E |
+---+ +---+ -->+---+
| | |
3 | | 4,5 |
-------------- ------ |
| | | +---+
| ------------->| S |
| | 3 | | +---+
| 2| --------
| | | |
V | | |
+---+ cmd +---+ 4,5 ----->+---+
| |---------->| W |---------->| F |
+---+ -->+---+ +---+
| |
| 1 |
------
Where "cmd" is APPE, STOR, or RETR.
We note that the above three models are similar. The Restart differs
from the Rename two only in the treatment of 100 series replies at
the second stage, while the second group expects (some may require)
100 series replies. Remember that at most, one 100 series reply is
allowed per command.
The most complicated diagram is for the Login sequence:
1
+---+ USER +---+------------->+---+
| B |---------->| W | 2 ---->| E |
+---+ +---+------ | -->+---+
| | | | |
3 | | 4,5 | | |
-------------- ----- | | |
| | | | |
| | | | |
| --------- |
| 1| | | |
V | | | |
+---+ PASS +---+ 2 | ------>+---+
| |---------->| W |------------->| S |
+---+ +---+ ---------->+---+
| | | | |
3 | |4,5| | |
-------------- -------- |
| | | | |
| | | | |
| -----------
| 1,3| | | |
V | 2| | |
+---+ ACCT +---+-- | ----->+---+
| |---------->| W | 4,5 -------->| F |
+---+ +---+------------->+---+
Finally, we present a generalized diagram that could be used to model
the command and reply interchange:
------------------------------------
| |
Begin | |
| V |
| +---+ cmd +---+ 2 +---+ |
-->| |------->| |---------->| | |
| | | W | | S |-----|
-->| | -->| |----- | | |
| +---+ | +---+ 4,5 | +---+ |
| | | | | | |
| | | 1| |3 | +---+ |
| | | | | | | | |
| | ---- | ---->| F |-----
| | | | |
| | | +---+
-------------------
|
|
V
End
|