RFC FTP : Diagrammes d'états
Cette section présente les diagrammes d'états pour une implémentation basique de FTP. Seul le premier digit des codes de réponse est considéré. Un diagramme d'état est associé à un groupe de commandes FTP ou à une séquence de commandes.
Le regroupement des commandes a été opéré lors de la construction du modèle de chaque commande par association des commandes qui répondaient au même modèle structurel.
Pour chaque commande, ou séquence de commandes, trois issues sont possibles: succès S (Success), Echec F (Failure), et erreur E (Error).
Dans les diagrammes ci-dessous, nous avons utilisé le symbole B pour "begin" (début), et le symbole W pour "wait for reply" (attente de réponse).
Le diagramme suivant présente le fonctionnement de la plus grande partie des commandes FTP :
1,3 +---+
----------->| E |
| +---+
|
+---+ cmd +---+ 2 +---+
| B |---------->| W |---------->| S |
+---+ +---+ +---+
|
| 4,5 +---+
----------->| F |
+---+
Ce diagramme propose le modèle pour les commandes :
ABOR, ALLO, DELE, CWD, CDUP, SMNT, HELP, MODE, NOOP, PASV, QUIT, SITE, PORT, SYST, STAT, RMD, MKD, PWD, STRU, et TYPE.
Un autre groupe important de commande répond au schéma suivant légèrement différent :
3 +---+
----------->| E |
| +---+
|
+---+ cmd +---+ 2 +---+
| B |---------->| W |---------->| S |
+---+ --->+---+ +---+
| | |
| | | 4,5 +---+
| 1 | ----------->| F |
----- +---+
Ce diagramme propose le modèle pour les commandes :
APPE, LIST, NLST, REIN, RETR, STOR, et STOU.
Notez que ce second modèle pourrait servir à représenter les commandes du premier groupe, La seule différence est que dans le premier groupe, les réponses de la classe 100 ne sont pas attendues et de ce fait sont traitées comme une erreur, tandis que le second groupe peut attendre (et parfois nécessiter) une réponse de classe 100. Une réponse au plus de classe 100 est autorisée par commande.
Les diagrammes restants donnent un modèle pour des séquences de commandes, une des plus simples est la séquence conduisant au renommage d'un fichier :
+---+ RNFR +---+ 1,2 +---+
| B |---------->| W |---------->| E |
+---+ +---+ -->+---+
| | |
3 | | 4,5 |
-------------- ------ |
| | | +---+
| ------------->| S |
| | 1,3 | | +---+
| 2| --------
| | | |
V | | |
+---+ RNTO +---+ 4,5 ----->+---+
| |---------->| W |---------->| F |
+---+ +---+ +---+
Le diagramme suivant propose un modèle simple pour une commande de reprise :
+---+ REST +---+ 1,2 +---+
| B |---------->| W |---------->| E |
+---+ +---+ -->+---+
| | |
3 | | 4,5 |
-------------- ------ |
| | | +---+
| ------------->| S |
| | 3 | | +---+
| 2| --------
| | | |
V | | |
+---+ cmd +---+ 4,5 ----->+---+
| |---------->| W |---------->| F |
+---+ -->+---+ +---+
| |
| 1 |
--------
Dans lequel "cmd" est APPE, STOR, ou RETR.
Nous avons noté que ces deux diagrammes apparaissent comme très similaires. La commande de reprise diffère de celle de renommage dans le seul traitement des réponses de classe 100 du second étage, tandis que le second groupe attend (et parfois impose) une commande de classe 100. Souvenez vous qu'une seule commande de classe 100 est permise pour une commande donnée.
Le diagramme le plus complexe est pour l'ouverture d'une session (Login):
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 |
+---+ +---+------------->+---+
Enfin, nous présenterons un diagramme généralisé qui peut être utilisé comme modèle universel d'un échange de commandes et réponses :
------------------------------------
| |
Begin | |
| V |
| +---+ cmd +---+ 2 +---+ |
-->| |------->| |---------->| | |
| | | W | | S |-----|
-->| | -->| |----- | | |
| +---+ | +---+ 4,5 | +---+ |
| | | | | | |
| | | 1| |3 | +---+ |
| | | | | | | | |
| | ---- | ---->| F |-----
| | | | |
| | | +---+
-------------------
|
|
V
End
|