Protocollo FTP Overview

FTP (File Transfer Protocol) è il protocollo generalmente utilizzato per trasferire dati tra due host.

Il protocollo di trasferimento dati FTP viene descritto nella RFC 959, l'obbiettivo per cui è stato sviluppato è il trasferimento affidabile ed efficiente dei dati, per questo motivo si basa TCP. In particolare un FTP Server rimane in attesa di connessioni sulla porta 21, i comandi utilizzati sono di tipo case-insensistive, possono essere seguiti da argomenti e sono terminati da un CRLF (Invio).
  
FTP utilizza due processi distinti per compiere il proprio compito:  
PI (Protocol Interpreter) attraverso cui il client invia i comandi e riceve le risposte dal server;  
DTP (Data Transfer Process) attraverso il quale il client ed il server si scambiano i dati;  
  
Il Data Transfer Process può essere di due tipi Active MODE (default) o Passive MODE. Nella modalità Active Mode il client contatta il server il quale da inizio alla connessione (sulla porta 20) per trasmettere i dati con il client. In Passive MODE è prerogativa del client anche dare il via alla connessione per il trasferimento dei dati.
  
Le fasi di una sessione FTP sono:  
FASE 1: Il client contatta il server sulla porta 21 utilizzando il processo PI;  
FASE 2: Autenticazione del client;  
FASE 3: Trasferimento dati attraverso tramite il DTP;  
FASE 4: Termine della sessione TCP;  
  
CODICI DI RISPOSTA  
Ad ogni comando inserito il server risponde inviando un codice che identifica la riuscita o meno dell'operazione richiesta. I codici sono numerici e composti da tre caratteri xyz, ognuno dei quali identifica in modo sempre più dettagliato lo stato delle operazioni. In particolare avremo in x il valore più significativo in y un maggiore dettaglio in relazione a x così di seguito per z.
  
Per quanto riguarda il codice di risposta più significativo, ovvero il primo dei tre caratteri abbiamo:  
1yz: Risposta preliminare positiva. Indica che il comando è stato accettato e che si avrà un ulteriore risposta prima del comando successivo;  
2yz: Comando terminato con successo;  
3yz: Risposta intermedia positiva. Comando eseguito correttamente e in attesa di ulteriori informazioni per completare l'operazione;  
4yz: Il comando non è stato eseguito correttamente;  
5yz: Comando che il server non ha potuto eseguire;  
    
FTP ANONIMO  
Il protocollo FTP permette anche la possibilità di sessioni FTP anonime, situazione tipica di un file server pubblico dove per esempio viene reso disponibile software per il download. In questo caso al client, a cui viene richiesto username anonymous e come password il proprio indirizzo email, viene permesso l'accesso in sola lettura.
    
PRINCIPALI COMANDI FTP  
Accesso  
OPEN <host>: Apre una connessione verso un determinato host;  
USER <nomeutente>: Identifica l'utente che accede al server FTP;  
PASS <password>: Invio della password (di default in chiaro);  
QUIT: Termina la sessione client-server;  
Parametri di trasferimento  
PORT <indirizzo-e-porta>: Definisce su quale porta lato client deve essere stabilita la connessione dati ;  
PASV: Attiva o disattiva la modalità Passive MODE;  
Trasferimento  
TYPE: Indica il tipo di trasferimento dei dati;  
ASCII: Tipo di trasferimento per il file di testo;  
BINARY: Tipo di trasferimento per i file non di testo: eseguibili, grafici ecc.;  
GET <file-remoto> <file-locale>: Trasferimento di un file dal server al client;  
MGET <file-remoto> <file-locale>: Trasferimento multiplo di file dal server al client;  
PUT <file-remoto> <file-locale>: Trasferimento di un file dal client al server;  
MPUT <file-remoto> <file-locale>: Trasferimento multiplo di file dal client al server;  
PROMPT: Abilita/disabilita la conferma per ogni file durante il trasferimenti multipli;  
Gestione File  
DELETE: Cancella un file sul server;  
MDELETE: Effettua una cancellazione multipla;  
LCD: Cambia la directory sul client;  
CD: Cambia la directory sul server;  
CDUP: Cambia la directory spostandosi in quella di livello superiore;  
PWD: Visualizza la directory in cui ci si trova al momento;  
MKDIR: Crea una nuova directory sul server;  
RMDIR: Rimuove una directory sul server;  
LS o DIR: Visualizza l'elenco dei file presenti sul server;  
RENAME <file-1> <file-2>: rinomina un file;  
Aiuto  
HELP o ?: Visualizza i comandi disponibili sul client FTP;  
!: Esce alla shell di sistema mantenendo in esecuzione il client FTP in cui si può rientrare con EXIT;  
STATUS: Visualizza le informazioni sulla sessione corrente;  
VERBOSE: Visualizza una quantità maggiore o minore di informazioni in relazione alle operazioni eseguite;
    
Una sessione di esempio:  
homer@Joker:~$ ftp  
Connessione al serever tramite un client FTP a linea di comamndo, ma è possibile utilizzare anche Telnet  
ftp> open ftp.joker.net  
Connected to ftp.joker.net.  
220 ProFTPD 1.2.5 Server (ProFTPD Joker Installation) [Joker.Net]  
Il server risponde e visualizza il proprio banner. Il codice di risposta è di tipo 2xx ovvero di comando completato con successo  
Name (ftp.joker.net:homer): homerweb  
331 Password required for homerweb.  
Qui è possibile notare che il codice di risposta è 3xx ovvero, che il comando è stato eseguito con successo ma mancano altre informazioni... ovvero la password che verrà inserita successivamente  
Password: h03hwp  
Remote system type is UNIX.  
Using binary mode to transfer files.  
ftp> type ascii  
200 Type set to A.  
Settaggio del tipo di trasferimento dati su ASCII  
ftp> help pwd  
pwd     print working directory on remote machine  
Tramite il comando help è possibile visualizzare l'aiuto su un determinato comando  
ftp> ls  
200 PORT command successful.  
150 Opening ASCII mode data connection for file list.  
drwxr-xr-x  4 homerweb users   4096 May  7 09:36 arnaldotest  
drwxr-xr-x  2 homerweb users   4096 May 18 20:28 arnaldoweb2003  
226 Transfer complete.  
ftp> cd arnaldotest  
250 CWD command successful.  
ftp> pwd  
257 "/arnaldotest" is current directory.  
Verifica della directory in cui ci si trova tramite il comando PWD  
ftp> ls  
200 PORT command successful.  
150 Opening ASCII mode data connection for file list.  
-rw-r--r--  1 homerweb users   1015 Mar 19 13:39 leggimi.txt  
-rw-r--r--  1 homerweb users   1793 Mar 19 13:38 guestbook_read.php  
-rw-r--r--  1 homerweb users   3293 Mar 19 13:38 guestbook_write.php  
226 Transfer complete.  
ftp> get testphp.php  
local: testphp.php remote: testphp.php  
200 PORT command successful.  
150 Opening ASCII mode data connection for testphp.php (1391 bytes).  
E' possibile notare il codice 1xx ovvero risposta preliminare positiva, si avrà una risposta di successo o di insuccesso solamente ad operazione terminata  
226 Transfer complete.  
1439 bytes received in 0.0649 secs (22 Kbytes/sec)  
Trasferimento dal SERVER al CLIENT del file testphp.php   
ftp> put dati.txt  
local: dati.txt remote: dati.txt  
200 PORT command successful.  
150 Opening ASCII mode data connection for dati.txt.  
226 Transfer complete.  
41 bytes sent in 0.00116 secs (35 Kbytes/sec)  
Trasferimento dal CLIENT al SERVER del file dati.txt  
ftp> quit  
221 Goodbye.  
homer@Joker:~$
  
Uscita, ritorno al prompt di sistema e termine della connessione TCP
    
Per FTP, come per altri protocolli, sono stati sviluppati client di tipo grafico per facilitare il trasferimento di file da parte degli utenti. File Transfer Protocol è supportato anche sui comuni browser web.

Privacy Policy