Questo protocollo è uno dei più antichi, avendo fatto la sua comparsa negli anni settanta, in quella rete che oggi è Internet. FTP è l’acronimo di File Transfer Protocol che come è intuibile, serve per il trasferimento di file da un server ad un client. Quando si stabilisce una connessione tra server e client per il trasferimento dei file in realtà, vengono stabilite due connessioni: la prima di controllo, che serve al client per dare dei comandi al server e per questi messaggi di solito viene utilizzata la porta 21, la seconda per i dati ed avviene appena è possibile avviare il trasferimento del file. Una connessione FTP può avvenire in due modi: con il client che si mette in ascolto su di una porta e la comunica al server, quindi è quest’ultimo che effettua la connessione, oppure con il server che si mette in ascolto su di una porta ed il client riceve la notifica sulla porta da utilizzare. Quest’ultima modalità è detta passiva ed è particolarmente utile nel caso in cui il client sia dietro un firewall. In questo caso il client non può accettare connessioni in ingresso e per questo sarà il server a mettersi in ascolto ed il client vi si connetterà.
Il protocollo FTP è stato pensato per trasferire file anche di grandi dimensioni tra un sistema e l’altro e si è cercato di fare questo nel modo più indolore possibile. Ci sono due modalità di trasferimento dei dati: ASCII e binario, il primo per i file di testo ed il secondo per i dati generici, che oggi è quello che si utilizza nella maggioranza dei casi, perché con i byte è possibile trasferire anche testi.
Una sessione FTP è possibile suddividerla in tre fasi: autenticazione del client, trasferimento del file e chiusura della connessione. Analizzeremo ognuna di queste fasi tramite telnet puntato sulla porta 21 di un server FTP, i comandi si riferiscono al protocollo standard. Per connettersi con telnet basta dare questo comando: telnet ftp.server.it 21, quindi possiamo continuare nelle seguenti fasi:
- Autenticazione – Molti server permettono l’accesso anonimo, mentre altri vogliono nome utente e password, il primo comando è USER <nome>, il secondo PASS <password>.
- Navigazione – Per spostarsi tra le directory si utilizza il comando CWD ( Change Working Directory ), CDUP per spostarsi nella directory superiore, mentre per sapere dove si è PWD ( Print Working Directory ).
- Cambiare Modalità – Per passare in modalità passiva occorre utilizzare il comando PASV.
- Ottenere Lista File – Per ottenere la lista dei file si usa il comando LIST o NLST per una lista più compatta.
- Trasferimento – Occorre dare il comando RETR, impostando il tipo di trasferimento con TYPE I per quello binario e TYPE A per quello ASCII.
- Chiusura – Per chiudere la connessione basta dare il comando QUIT.
Vediamo allora i comandi per fare la lista dei file su un server e quindi trasferire un file dal server al client utilizzando telnet:
telnet mioserver 21
user test@mioserver
pass miapassword
Una volta connessi vediamo la lista dei file nella root del server, per fare questo entriamo in modalità passiva:
pasv
il server risponderà con un messaggio tipo: entering passive mode (192,168,1,100,24,130), le prime quattro cifre sono il numero IP del server a cui connettersi con l’altra sessione telnet per il trasferimento dei dati ed i rimanenti due rappresentano la scomposizione della porta per ricevere i dati, in particolare basta moltiplicare il primo numero per 256 e sommare l’ultimo, quindi nel nostro esempio la porta a cui dobbiamo connetterci è la 24 * 256 + 130 = 6274. Quindi occorre aprire un’altra connessione dati con questo comando:
telnet 192.168.1.100 6274
il server a questo punto è pronto per fornire i dati sulla seconda sessione telnet. Se inseriamo il comando
list
nella prima sessione, nell’altra apparirà la lista dei file e directory. Ritornando in modalità passiva
pasv
avremo un’altra porta offertaci dal server per la sessione dati, quindi se impostiamo il tipo di trasferimento al valore binario
type i
retr miofile.dat
potremmo trasferire il file. Questo esercizio è molto utile per capire i fondamenti del protocollo, da questo punto in poi, una volta capiti i concetti basilari, è possibile fare quello che vogliamo, cercando e studiando gli altri comandi del protocollo FTP.