Réseaux Informatiques : Tp r4.7 ftp initiation réseaux informatiques
Télécharger PDFObtenir le pack complet des cours, TDs, examens sur Réseaux Informatiques!
Vous souhaitez maîtriser Réseaux Informatiques ? Ne cherchez plus, nous avons le pack bien choisi pour vous.
Accédez à une collection complète des supports de cours, des travaux dirigés (TD) corrigés, examens...
Télécharger pack.: TP R4.7 : FTP :.
Copyright 20082010 tv <thierry.vaira@orange.fr> Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with no Invariant Sections, with no FrontCover Texts, and with no BackCover.
You can obtain a copy of the GNU General Public License : write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 021111307 USA
Permission est accordée de copier, distribuer et/ou modifier ce document selon les termes de la Licence de Documentation Libre GNU (GNU Free Documentation License), version 1.1 ou toute version ultérieure publiée par la Free Software Foundation ; sans Sections Invariables ; sans Texte de Première de Couverture, et sans Texte de Quatrième de Couverture. Vous pouvez obtenir une copie de la GNU General Public License : écrire à la Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 021111307 USA Table des matières
Séquence 1 Client FTP................................................................................................................................2
Séquence 2 Serveur FTP..............................................................................................................................7
Annexe: les modèles de référence..................................................................................................................8
Annexe: le protocole FTP (File Transfer Protocol).......................................................................................9
Annexe : clients ftp......................................................................................................................................14
En ligne
protocoles internet (http, smtp, pop, imap, ftp, mime, nntp, irc...) : protocoles internet (ip, arp, tcp, udp, ...) : rfc en français : et Travaux Pratiques1 / 15© 2008 – 2010 [ tv ]© .: TP R4.7 : FTP :.
Séquence 1 - Client FTP
Pr éparation de la manipulation : les besoins
a . Le client de base : outil capable d'ouvrir une connexion TCP sur un port distant et d'échanger des informations en mode texte
Réponse : telnet ou netcat
ping adresse_ip_pc
b . Identifier le port d'écoute distant à partir de la liste officielle. Dans quel fichier trouveton cette information ?
Réponse : ftp -> 21 (dans le fichier /etc/services)
c . Choisir un serveur FTP pour l'échange. Réponse: ftp.free.fr ou adresse IP locale (fournie)
d. La commande de connexion : Manipulation
1 . Envoyer les requêtes FTP cidessous. Lister et commenter les codes de retour du serveur pendant l'échange (utiliser les informations fournies sur le protocole FTP).
Réponses: Réponse du serveur : 220 Welcome to ProXad FTP serverPWD Réponse du serveur : USER anonymous
Réponse du serveur : PASS
Réponse du serveur : PWD
Réponse du serveur : TYPE I
Réponse du serveur : LIST -aL
Réponse du serveur : QUIT
Réponse du serveur : 221 Goodbye.
Travaux Pratiques2 / 15© 2008 – 2010 [ tv ]
.: TP R4.7 : FTP :.
La commande LIST aL (ainsi que les autres commandes comme STOR ou RETR) ne fonctionne pas car les données ne sont pas envoyées par le serveur sur le canal ouvert (port 21). Le canal ouvert sur le port 21 du serveur est destiné à l' échanges de commandes du protocole FTP. Les données échangées entre le client et le serveur doivent se faire sur un autre canal. L'échange de données fonctionnant suivant le modèle client/serveur (le client initie la connexion), il existe donc deux possibilités :
•le mode actif : le client FTP (en utilisant la commande PORT) détermine le port d'écoute et joue le rôle de serveur pour ce canal •le mode passif : le client FTP (en utilisant la commande PASV) choisit le mode passif et le serveur FTP détermine le port d'écoute et joue le rôle de serveur pour ce canal Travaux Pratiques3 / 15© 2008 – 2010 [ tv ]
.: TP R4.7 : FTP :.
2 . On va tout d'abord utiliser la commande PASV pour passer en mode passif :
La réponse du serveur à la commande "PASV" est une chaîne de caractère du type :
"xxx ... ... (IP1,IP2,IP3,IP4,PORT1,PORT2)"
Il faut extraire les informations suivantes (attention les serveurs FTP gèrent un timeout !) :
•reconstituer l'adresse IP > IP1.IP2.IP3.IP4
•déterminer le numéro de port > PORT1 x 256 + PORT2
Assurer le bon fonctionnement de la commande suivante "LIST aL" ... Travaux Pratiques4 / 15© 2008 – 2010 [ tv ]
$ telnet 192.168.52.7 21
Trying 192.168.52.7...
Connected to 192.168.52.7 (192.168.52.7).
Escape character is '^]'.
220 mandrivalinux.local FTP server (Version wu-2.6.2(1) Sun Aug 3 13:51:18 EDT 2008) ready.
USER anonymous
331 Guest login ok, send your complete e-mail address as password.
PASS tv@free.fr
230 Guest login ok, access restrictions apply.PASV 227 Entering Passive Mode (192,168,52,7,205,179)
LIST -al
150 Opening ASCII mode data connection for directory listing.
226 Transfer complete.QUIT 221-You have transferred 0 bytes in 0 files.
221-Total traffic for this session was 433 bytes in 0 transfers.
221-Thank you for using the FTP service on mandrivalinux.local.
221 Goodbye.
Connection closed by foreign host.
// calcul : 205*256 + 179 = 52659
$ telnet 192.168.52.7 52659
Trying 192.168.52.7...
Connected to 192.168.52.7 (192.168.52.7).
Escape character is '^]'.
total 48
drwxr-xr-x 6 root root 4096 Jun 1 16:12 .
drwxr-xr-x 6 root root 4096 Jun 1 16:12 ..
d--x--x--x 2 root root 4096 Jun 1 16:12 bin
d--x--x--x 2 root root 4096 Jun 1 16:12 etc
drwxr-xr-x 2 root root 4096 Jun 1 16:12 lib
drwxr-xr-x 2 root 79 4096 Jun 1 16:15 pub
Connection closed by foreign host.
.: TP R4.7 : FTP :.
3 . Réaliser une capture de l'échange précédent et déterminer le protocole de transport utilisé par FTP.
4 . On va maintenant utiliser la commande PORT pour passer en mode actif :
La commande "PORT" envoyée au serveur est une chaîne de caractère du type :
"PORT IP1,IP2,IP3,IP4,PORT1,PORT2"
Il faut déterminer les informations suivantes pour réaliser l'échange de données :
•fournir l'adresse IP où se fera l'échange > IP1.IP2.IP3.IP4
•choisir un numéro de port libre où se fera l'échange > PORT1 x 256 + PORT2
Le client FTP a donc la responsabilité d'ouvrir un port (libre) et d'attendre la demande de connexion. Il faut donc utiliser un outil capable de fonctionner en serveur TCP. Le choix se porte sur l'utilitaire netcat. et le numéro de port 5000 qui est réservé $ netcat -h[v1.10] connect to somewhere: nc [-options] hostname port[s] [ports] ...
listen for inbound:
nc -l -p port [-options] [hostname] [port]
options:-l listen mode, for inbound connects... -p port
local port number
-s addr
local source address
$ cat /etc/services
$ netstat -l -t -v -n
Travaux Pratiques5 / 15© 2008 – 2010 [ tv ]
.: TP R4.7 : FTP :.
Travaux Pratiques6 / 15© 2008 – 2010 [ tv ]
$ telnet 192.168.52.7 21
Trying 192.168.52.7...
Connected to 192.168.52.7 (192.168.52.7).
Escape character is '^]'.
220 mandrivalinux.local FTP server (Version wu-2.6.2(1) Sun Aug 3 13:51:18 EDT 2008) ready.
USER anonymous
331 Guest login ok, send your complete e-mail address as password.
PASS tv@free.fr
230 Guest login ok, access restrictions apply.
PORT 192,168,52,2,19,136
200 PORT command successful.
LIST -al
150 Opening BINARY mode data connection for directory listing.
226 Transfer complete.QUIT 221-You have transferred 0 bytes in 0 files.
221-Total traffic for this session was 593 bytes in 0 transfers.
221-Thank you for using the FTP service on mandrivalinux.local.
221 Goodbye.
Connection closed by foreign host.
// vérification : 19*256 + 136 = 5000
$ netcat -l -s 192.168.52.2 -p 5000
total 48
drwxr-xr-x 6 root root 4096 Jun 1 16:12 .
drwxr-xr-x 6 root root 4096 Jun 1 16:12 ..
d--x--x--x 2 root root 4096 Jun 1 16:12 bin
d--x--x--x 2 root root 4096 Jun 1 16:12 etc
drwxr-xr-x 2 root root 4096 Jun 1 16:12 lib
drwxr-xr-x 2 root 79 4096 Jun 1 16:15 pub
.: TP R4.7 : FTP :.
Séquence 2 - Serveur FTP
Pr éparation de la manipulation : les besoins
a . Le serveur de base : outil capable d'accepter une connexion TCP sur un port local et d'échanger des informations en mode texte
Réponse : netcat
b . Identifier le port local à partir de la liste officielle du protocole ftp. Dans quel fichier trouveton cette information ?
Réponse : ftp -> 21 (dans le fichier /etc/services)
c . Choisir un client HTTP pour l'échange.
Réponse : firefox ou filezilla
d . La commande pour lancer le serveur (sous root pour accèder au port 21)
Réponse : nc -l -p 21
Manipulation
1 . Envoyer les réponses FTP cidessous.
Réponses: # nc -l -p 21
220 mandrivalinux.local FTP server
USER anonymous
331 Guest login ok
PASS mozilla@example.com
230 Guest login okSYST 215 UNIX emulated by FileZillaPWD 257 "/"
TYPE I
200 Switching to Binary mode.PASV 227 Entering Passive Mode (192,168,52,2,159,240)
SIZE /
212 600
MDTM /
213 19980615100045.014
RETR /^C #
Travaux Pratiques7 / 15© 2008 – 2010 [ tv ]
.: TP R4.7 : FTP :.
Annexe: les modèles de référence
•La couche Application : cette couche est l'interface entre l'application utilisateur et le réseau. Elle va apporter à l'utilisateur les services de base offerts par le réseau, comme par exemple le transfert de fichier, la messagerie ... Elle contient donc tous les protocoles de haut niveau, comme par exemple Telnet, TFTP (Trivial File Transfer Protocol), SMTP (Simple Mail Transfer Protocol), HTTP (HyperText Transfer Protocol) ... Le point important pour cette couche est le choix du protocole de transport à utiliser. Par exemple, TFTP (surtout utilisé sur réseaux locaux) utilisera UDP, car on part du principe que les liaisons physiques sont suffisamment fiables et les temps de transmission suffisamment courts pour qu'il n'y ait pas d'inversion de paquets à l'arrivée. Ce choix rend TFTP plus rapide que le protocole FTP qui utilise TCP. A l'inverse, SMTP utilise TCP, car pour la remise du courrier électronique, on veut que tous les messages parviennent intégralement et sans erreurs.
•La couche Session du modèle OSI établit une communication entre émetteur et récepteur en assurant l'ouverture et la fermeture des sessions (des communications) entre usagers, définit les règles d'organisation et de synchronisation du dialogue entre les abonnés. Exemple TCP/IP : RPC (Remote Procedure Call).
•La couche Présentation met en forme les informations échangées pour les rendre compatibles avec l'application destinatrice, dans le cas de dialogue entre systèmes hétérogènes. Elle peut comporter des fonctions de traduction, de compression, d'encryptage, ... etc. Exemple TCP/IP : XDR (eXternal Data Representation).
Remarque: même s'il semble que les couches Session et Présentation du modèle OSI semblent inutiles dans le modèle TCP/IP, des protocoles équivalents existent et sont empilés dans la couche Application.
Travaux Pratiques8 / 15© 2008 – 2010 [ tv ]
.: TP R4.7 : FTP :.
Annexe: le protocole FTP (File Transfer Protocol)
Introduction
Le protocole FTP est un protocole de transfert de fichier. Sa mise en place date de 1971, date à laquelle un mécanisme de transfert de fichiers (décrit dans le RFC 141) entre les machines du MIT (Massaschussetts Institute of Technology) avait été mis au point. De nombreux RFC ont ensuite apporté des améliorations au protocole de base, mais les plus grandes innovations datent de juillet 1973.
Le protocole FTP est actuellement défini par le RFC 959. Le protocole FTP a pour objectifs de : •permettre un partage de fichiers entre machine distante •permettre une indépendance aux systèmes de fichiers des machines clientes et serveur •permettre de transférer des données de manière efficace Le protocole FTP s'utilise de façon standard sur le port 21 du serveur en mode TCP. Par contre le FTP ne fonctionne que sur du TCP.
Remarque: il existe un protocole TFTP (Trivial FTP) qui est basé sur UDP.
Fonctionnement
Le protocole FTP est basé un modèle clientserveur.
Lors d'une connexion FTP, deux canaux de transmission sont ouverts : •Un canal pour les commandes (canal de contrôle) •Un canal pour les données Travaux Pratiques9 / 15© 2008 – 2010 [ tv ]
.: TP R4.7 : FTP :.
Ainsi, le client comme le serveur possède deux processus permettant de gérer ces deux types d'information : •le DTP (Data Transfer Process) est le processus chargé d'établir la connexion et de gérer le canal de données. Le DTP côté serveur est appelé SERVERDTP, le DTP côté client est appelé USER
DTP •le PI (Protocol Interpreter) est l'interpréteur de protocole permettant de commander le DTP à l'aide des commandes reçues sur le canal de contrôle. Il est différent sur le client et sur le serveur : •Le SERVERPI est chargé d'écouter les commandes provenant d'un USERPI sur le canal de contrôle sur un port donné, d'établir la connexion pour le canal de contrôle, de recevoir sur celuici les commandes FTP de l'USERPI, d'y répondre et de piloter le SERVERDTP •Le USERPI est chargé d'établir la connexion avec le serveur FTP, d'envoyer les commandes FTP, de recevoir les réponses du SERVERPI et de contrôler le USERDTP si besoin Lors de la connexion d'un client FTP à un serveur FTP, le USERPI initie la connexion au serveur selon le protocole Telnet. Le client envoie des commandes FTP au serveur, ce dernier les interprête, pilote son DTP, puis renvoie une réponse standard. Lorsque la connexion est établie, le serveurPI donne le port sur lequel les données seront envoyées au Client DTP. Le client DTP écoute alors sur le port spécifié les données en provenance du serveur.
Remarque: Il est important de remarquer que, les ports de contrôle et de données étant des canaux séparés, il est possible d'envoyer les commandes à partir d'une machine et de recevoir les données sur une autre. Ainsi, il est par exemple possible de transférer des données entre deux serveurs FTP en passant par un client pour envoyer les instructions de contrôle et en transférant les informations entre deux processus serveurs connectés sur le bon port. Les commandes
Toutes les communications effectuées sur le canal de contrôle suivent les recommandations du protocole Telnet. Ainsi les commandes FTP sont des chaînes de caractères Telnet (en code NVTASCII) terminées par le code de fin de ligne Telnet (c'estàdire la séquence <CR>+<LF>, Carriage Return (retour chariot) suivi du caractère Line Feed, notée <CRLF>). Si la commande FTP admet un paramètre, celuici est séparé de la commande par un espace (<SP>). Les commandes FTP permettent de préciser : •Le port utilisé •Le mode de transfert des données •La structure des données •La nature de l'action à effectuer (Retrieve, List, Store, ...) On distingue trois types de commandes FTP : •Les commandes de contrôle d'accès : •Les commandes du paramétrage de transfert •Les commandes de service FTP Travaux Pratiques10 / 15© 2008 – 2010 [ tv ]
.: TP R4.7 : FTP :.
En voici, quelques unes :
Commandes de contrôle d'accès USER
Chaîne de caractère permettant d'identifier l'utilisateur. L'identification de l'utilisateur est nécessaire pour établir une communication sur le canal de donnéesPASS Chaîne de caractère spécifiant le mot de passe de l'utilisateur. Cette commande doit être immédiatement précédée de la commande USER. Il revient au client de masquer l'affichage de cette commande pour des raisons de sécuritéQUIT Commande permettant de terminer la session en cours. Le serveur attend de finir le transfert en cours le cas éch éant, puis de fournir une réponse avant de fermer la connexion
Commandes du paramètrage de transfertPORT Chaîne de caractère permettant de préciser le numéro de port à utiliser PASV
Commande permettant d'indiquer au serveur DTP de se mettre en attente une connexion sur un port spécifique choisi aléatoirement parmi les ports disponibles. La réponse à cette commande est l'adresse IP de la machine et le port.TYPE Cette commande permet de préciser le type de format dans lequel les données seront envoyées
Commandes de servicePWD Cette commande (Print Working Directory) permet de renvoyer le chemin complet du répertoire courant LIST Cette commande permet de renvoyer la liste des fichiers et répertoires présents dans le répertoire courant. Cette liste est envoyée sur le DTP passif. Il est possible de passer en paramètre de cette commande un nom de répertoire, le serveur DTP enverra la liste des fichiers dans le répertoire passé en paramètreRETR Cette commande (RETRIEVE) demande au serveur DTP une copie du fichier dont le chemin d'accès est passé en paramètre. STOR Cette commande (STORE) demande au serveur DTP d'accepter les données envoyées sur le canal de données et de les stocker dans le fichier portant le nom passé en paramètre. Si le fichier n'existe pas, le serveur le crée, sinon il l'écrase
Travaux Pratiques11 / 15© 2008 – 2010 [ tv ]
.: TP R4.7 : FTP :.
Les réponses
Les réponses FTP permettent d'assurer la synchronisation entre client et serveur FTP. Ainsi à chaque commande envoyée par le client, le serveur effectuera éventuellement une action et renverra systématiquement une réponse. Les réponses sont constituées d'un code à 3 chiffres indiquant la façon suivant laquelle la commande envoyée par le client a été traitée. Toutefois, ce code à 3 chiffres étant difficilement lisible par un humain, il est accompagné d'un texte (chaîne de caractère Telnet séparée du code numérique par un espace). Les codes de réponse sont constitués de 3 chiffres dont voici les significations : •Le premier chiffre indique le statut de la réponse (succès ou échec) •Le second chiffre indique ce à quoi la réponse fait référence •Le troisième chiffre donne une signification plus spécifique
Premier chiffre
ChiffreSignificationDescription1yz Réponse préliminaire positive
L'action demandée est en cours de réalisation, une seconde réponse doit être obtenue avant d'envoyer une deuxième commande 2yz
Réponse positive de réalisation
L'action demandée a été r éalisée, une nouvelle commande peut être envoyée3yz Réponse intermédiaire positive
L'action demandée est temporairement suspendue. Des informations supplémentaires sont attendues de la part du client4yz Réponse négative de réalisation
L'action demandée n'a pas eu lieu car la commande n'a temporairement pas été acceptée. Le client est prié de réessayer ultérieurement5yz Réponse négative permanent
L'action demandée n'a pas eu lieu car la commande n'a pas été acceptée. Le client est prié de formuler une requête différente
Second chiffre
ChiffreSignificationDescriptionx0z Syntaxe
L'action possède une erreur de syntaxe, ou bien il s'agit d'une commande non comprise par le serveurx1z Information
Il s'agit d'une réponse renvoyant des informations (par exemple pour une réponse à une commande STAT)x2z connexionsLa réponse concerne le canal de donnéesx3z Authentification et comptes
La réponse concerne le login (USER/PASS) ou la demande de changement de compte (CPT)x4z Non utilisé par le protocole FTPx5z Système de fichiersLa réponse concerne le système de fichiers distant
Travaux Pratiques12 / 15© 2008 – 2010 [ tv ]
.: TP R4.7 : FTP :.Modes Mode Passif : PASV •Le client FTP envoie sur le canal de contrôle la commande PASV •Le Serveur répond "xxx ... ... (IP1,IP2,IP3,IP4,PORT1,PORT2)" •Le client décode la phrase, calcule le N° de Port = PORT1 * 256 + PORT2 •Le client se connecte à l'adresse IP donnée sur le N° de Port donné et ouvre le port de transfert •Une fois la connexion ouverte, le client envoie sa commande sur le port de contrôle (LIST, RETR, ...) •Les données sont reçues sur le port data, et dès l'envoi terminé, le serveur envoie sur le port contrôle une phrase de fin de transfert, et ferme sa connexion de port de transfert. Attention le message de fin sur le port contrôle arrive souvent avant la fin de la réception des données sur le port transfert. Mode Actif : PORT IP1,IP2,IP3,IP4,PORT1,PORT2 •Le client FTP envoie sa commande "PORT IP1,IP2,IP3,IP4,PORT1,PORT2 " •Le serveur répond qu'il est d'accord •Le client envoie sa commande (LIST, RETR, ...) •Le serveur se connecte sur le client sur le port spécifié par celui ci. •Le transfert se déroule de la même manière qu'en mode passif. Le port de transfert de données est spécifié soit par le client qui indique au serveur son N° et attend sa connexion (mode standard ou actif, déclenché par la commande PORT), soit par le serveur qui indique au client le N° du port auquel il doit se connecter (mode passif, déclenché par la commande PASV).
Cette notion est extrêmement importante pour l'utilisation de FTP avec des parefeux (firewall) : •Si le client a un firewall, le mode standard ne fonctionnera pas car le serveur n'arrivera jamais à se connecter au client pour transférer les données, et par exemple la commande LIST ne fonctionnera pas puisqu'elle a besoin d'un canal de données. •Si le serveur a un firewall, il faut configurer celui ci pour qu'il laisse passer le port du serveur (21) et une plage de ports pour les transferts si le serveur accepte le mode passif. Remarque:
Le serveur doit avoir une plage de ports (entre X et Y) pour les transferts même s'il n'a qu'un seul client, car chaque commande LIST utilise un port de données, et un port de données ne peut plus être utilisé pendant presque une minute dans certains cas. Donc pour éviter tout problème à chaque fois que le client ou le serveur se mettent en attente, ils changent de port sans essayer de réutiliser le port précédent.
Travaux Pratiques13 / 15© 2008 – 2010 [ tv ]
.: TP R4.7 : FTP :.
Annexe : clients ftp
FileZilla est un client FTP, FTPS et SFTP, multiplateforme depuis la version 3. C'est un logiciel libre développé sous la licence publique générale GPL/GNU. Il permet de transférer des fichiers.
Lien : Travaux Pratiques14 / 15© 2008 – 2010 [ tv ]
Les paramètres de connexion :
L'adresse IP du serveur
Le compte de connexion : identifiant + le mot de passe
21 (le numéro de port du service FTP)
le protocole FTP en action !
Cadre Client (local)Cadre Serveur (distant)
transfert de fichier par glisser/déposer
Une fois les paramètres saisis, on clique sur Connexion rapide pour se connecter sur le serveur FTP
permet d'accéder à l'historique des connexions et de rappeler rapidement les paramètres d'une connexion
Sens descendant (client
serveur) : download←
Sens montant (client
ser