Il protocollo FTP (File Transfer Protocol)

Maggio 2015

Introduzione al protocollo FTP


Il protocollo FTP ( File Transfer Protocol), è, come indicato dal suo nome, un protocollo di trasferimento di file.

La creazione del protocollo FTP data 1971, anno nel quale un meccanismo di trasferimento di file (descritti nel RFC 141) tra i terminali del MIT (Massachussetts Institute of Technology) era stato elaborato. Numerosi RFC hanno apportato in seguito dei miglioramenti al protocollo di base, ma le più grandi innovazioni sono del luglio del 1973.

Il protocollo FTP è attualmente definito dall'RFC 959 (File Transfer Protocol (FTP) - Specifications).

Il ruolo del protocollo FTP


Il protocollo FTP definisce il modo in cui i dati devono essere trasferiti su una rete TC/IP.

Il protocollo FTP a come obiettivo di :
  • permettere una condivisione di file tra terminali remoti
  • permettere un'indipendenza ai sistemi di file dei terminali client e server
  • permettere di trasferire dei dati in modo efficace

Il modello FTP


Il protocollo FTP si iscrive in un modello client-server, cioè un terminale invia degli ordini (il client) e un altro aspetta delle richieste per effettuare delle azioni (i server).

Durante una connessione FTP, si aprono due canali di trasmissione :
  • Un canale per i comandi (canale di controllo)
  • Un canale per i dati

Il modello FTP


Così, sia il client che il server possiedono due processi che permettono di gestire questi due tipi di informazione :
  • il DTP (Data Transfer Process) è il processo incaricato di stabilire la connessione e di gestire il canale di dati. Il DTP lato server è detto SERVER-DTP, il DTP lato client è detto USER-DTP
  • il PI (Protocol Interpreter) è l'interprete di protocollo che permette di comandare il DTP attraverso degli ordini ricevuti sul canale di controllo. Esso è diverso sul client e sul server :
    • Il SERVER-PI è incaricato di ascoltare gli ordini provenienti da uno USER-PI sul canale di controllo su una porta di data, di stabilire la connessione per il canale di controllo, di ricevere su quest'ultimo gli ordini dell'USER-PI, di rispondervi e di pilotare il SERVER-DTP
    • Lo USER-PI è incaricato di stabilire la connessione con il server FTP, d'inviare gli ordini FTP, di ricevere le risposte del SERVER-PI e di controllare lo USER-DTP se necessario


Durante la connessione di un client FTP ad un server FTP, lo USER-PI inizia la connessione al server secondo il protocollo Telnet. Il client invia degli ordini FTP al server, quest'ultimo li interpreta, pilota il suo DTP, poi rinvia una risposta standard. Una volta che la connessione è stabilita, il server-PI da la porta sulla quale i dati saranno inviati al client DTP. Il client DTP ascolta allora sulla porta specifica i dati provenienti dal server.
E' importante notare che, visto che le porte di controllo e di dati sono su canali separati, è possibile inviare gli ordini partendo da un terminale e di ricevere i dati su un altro. Così, ad esempio, è possibile trasferire i dati tra due server FTP passando da un client per inviare le istruzioni di controllo e trasferendo le informazioni tra due processi di server connessi alla porta corretta.
Trasferimento di dati via FTP tra due server


In questa configurazione, il protocollo impone che i canali di controllo restino aperti durante tutto il trasferimento dei dati. Così un server può bloccare una trasmissione se il canale di controllo è interrotto durante la trasmissione.

I comandi FTP


Tutte le comunicazioni effettuate sul canale di controllo seguono le raccomandazioni del protocollo Telnet. Così i comandi FTP sono delle stringhe di caratteri Telnet (in codice NVT.-ASCII) terminati dal codice finale di linea Telnet (cioè la sequenza <CR>+<LF>, Carriage Return (ritorno a capo) seguito dal carattere Line Feed, sigla <CRLF>).
Se il comando FTP ammette un parametro, questo è separato dal comando da uno spazio (<SP>).

I comandi FTP permettono di precisare :
  • La porta utilizzata
  • Il modo di trasferimento dei dati
  • La struttura dei dati
  • La natura dell'azione da effettuare (Retrieve, List, Store, ...)


Si distinguono tre tipi di comandi FTP :
  • I comandi di controllo di accesso
  • I comandi di configurazione del trasferimento
  • I comandi di servizio FTP


Comando di controllo d'accesso
Comando Descrizione
USERStringa di caratteri che permette di identificare l'utente. L'identificazione dell'utente è necessaria per stabilire una comunicazione sul canale dei dati.
PASSStringa di caratteri che specifica la password dell'utente. Questo comando deve essere immediatamente preceduto dal comando USER. Al client conviene mascherare la visualizzazione di questo comando per ragioni di sicurezza
ACCTStringa di caratteri che rappresenta l'account dell'utente. Questo comando non è generalmente necessario. Al momento della risposta all'accettazione della password, se la risposta è 230 questa fase non è necessaria, si la risposta è 332, allora lo è.
CWDChange Working Directory : questo comando permette di cambiare la cartella corrente. Esso necessita del percorso di accesso alla cartella da raggiungere come argomento
CDUPChange to Parent Directory : questo comando permette di risalire alla cartella parente. E' stato introdotto per rimediare ai problemi di denominazione di cartelle parenti secondo il sistema (generalmente "..")
SMNTStructure Mount :
REINReinitialize :
QUITComando che permette di terminare la sessione in corso. Il server aspetta di finire il trasferimento in corso e, se questo avviene, di fornire una risposta prima di chiudere la connessione.



Comando dei parametri di trasferimento
ComandoDescrizione
PORTStringa di caratteri che permette di precisare il numero di porta da usare
PASVComando che permette di indicare al server DTP di aspettare una connessione su una porta specifica scelta casualmente fra quelle disponibili. La risposta a questo comando è l'indirizzo IP del terminale e la porta.
TYPEQuesto comando permette di precisare il tipo di formato in cui i dati saranno inviati
STRUCarattere Telnet che precisa la struttura del file (F per File, R per Record, P per Page)
MODECarattere Telnet che precisa il modo di trasferimento dei dati (S per Stream, B per Block, C per Compressed)


Comando di servizio FTP
Comando Descrizione
RETRQuesto comando (RETRIEVE) chiede al server DTP una copia del file il cui percorso di accesso è passato in parametro.
STORQuesto comando (store) chiede al server DTP di accettare i dati inviati sul canale di dati e di stoccarli nel file che porta il nome passato in parametro. Se il file non esiste, il server lo crea, altrimenti lo sopprime
STOUQuesto comando è identico al precedente, se non per il fatto che chiede al server di creare un file il cui nome è unico. Il nome del file è incluso nella risposta
APPEGrazie a questo comando (append) i dati inviati sono concatenati nel file che ha il nome passato in parametro se già esistente, in caso contrario esso viene creato
ALLOQuesto comando (allocate) chiede al server di prevedere uno spazio di stoccaggio sufficiente per contenere il file il cui nome è passato in argomento.
RESTQuesto comando (restart) permette di riprendere un trasferimento al punto dove si era interrotto. Per fare questo il comando invia in parametro evidenziato che rappresenta la posizione nel file alla quale il trasferimento era stato interrotto. Questo comando deve essere immediatamente seguito da un comando di trasferimento.
RNFRQuesto comando (rename from) permette di rinominare un file. Esso indica in parametro il nome del file da rinominare e deve essere immediatamente seguito dal comando RNTO
RNTOQuesto comando (rename to) permette di rinominare un file. Esso indica in parametro il nome del file da rinominare e deve essere immediatamente preceduto dal comando RNFR
ABORQuesto comando (abort) indica al server DTP di abbandonare tutti i trasferimenti associati al comando precedente. Se nessuna connessione di dati è aperta, il server DTP non fa niente, altrimenti la chiude. Il canale di controllo resta invece aperto.
DELEQuesto comando (delete) permette di cancellare il file il cui nome è passato in parametro. Questo comando è irrimediabile, può essere fatta una conferma solo a livello del client.
RMDQuesto comando (remove directory) permette di cancellare una cartella. Esso indica in parametro in nome della cartella da cancellare.
MKDQuesto comando (make directory) permette di creare una cartella. Esso indica in parametro il nome della cartella da creare
PWDQuesto comando (print working directory) permette di rinviare il percorso completo della cartella corrente
LISTQuesto comando permette di rinviare l'elenco dei file e cartelle presenti nella cartella corrente. Questo elenco è inviato sul DTP passivo. E' possibile passare in parametro di questo comando un nome di cartella, il server DTP invierà la lista dei file nella cartella passata in parametro.
NLSTQuesto comando (name liste) permette di inviare l'elenco dei file e cartelle nella cartella corrente
SITEQuesto comando (site parameters) permette al server di proporre dei servizi specifici, non definiti nel protocollo FTP
SYSTQuesto comando (system) permette di inviare delle informazioni sul server remoto
STATQuesto comando (status) permette di emettere lo stato del server, ad esempio per conoscere la progressione di un trasferimento in corso. Questo comando accetta come argomento un percorso d'accesso, esso rinvia allora le stesse informazioni di LIST ma sul canale di controllo.
HELPQuesto comando permette di conoscere l'insieme dei comandi compresi dal server. Le informazioni sono rinviate sul canale di controllo
NOOPQuesto comando (no operations) serve unicamente ad ottenere un comando OK dal server. Esso può servire unicamente per non essere disconnessi dopo un tempo di inattività troppo lungo

Le risposte FTP


Le risposte FTP permettono di assicurare la sincronizzazione tra client e server FTP. Così ad ogni comando inviato dal client, il server effettuerà eventualmente un'azione e rinvierà sistematicamente una risposta.

Le risposte sono costituite da un codice a 3 cifre che indica il modo in cui il comando inviato dal client è stato trattato. Tuttavia, essendo questo codice a 3 cifre difficilmente leggibile da un essere umano, è accompagnato da un testo (stringa di caratteri Telnet separata dal codice numerico da uno spazio).

I codici di risposta sono costituiti da 3 cifre di cui trovate qui di seguito i significati :
  • La prima cifra indica lo stato della risposta (successo o fallimento)
  • La seconda cifra indica a cosa la risposta si riferisce
  • La terza cifra da un significato più specifico (relativo ad ogni seconda cifra)


Prima cifra
CifraSignificatoDescrizione
1 yzRisposta preliminare positivaMentre l'azione richiesta è in corso di realizzazione, prima di inviare un secondo comando deve essere ottenuta una seconda risposta
2 yzRisposta positiva di realizzazioneUna volta che l'azione richiesta è stata realizzata, si può inviare un nuovo comando
3 yzRisposta intermedia positivaL'azione richiesta è temporaneamente sospesa. Si attendono delle informazioni supplementari dal client
4 yzRisposta negativa di realizzazioneL'azione richiesta non si è verificata dato che il comando non è stato temporaneamente accettato. Il client è pregato di riprovare più tardi
5 yzRisposta negativa permanenteL'azione richiesta non si è verificata dato che il comando non è stato accettato. Il client è pregato di formulare una richiesta differente


Seconda cifra
CifraSignificatoDescrizione
x 0 zSintassiL'azione presenta un errore di sintassi, oppure si tratta di un comando non capito dal server
x 1 zInformazioneSi tratta di una risposta che rinvia delle informazioni (ad esempio per una risposta ad un comando STAT)
x 2 zConnessioniLa risposta riguarda il canale di dati
x 3 zAutenticazione e accountLa risposta riguarda il login (USER/PASS) o la domanda di cambiamento di account (CPT)
x 4 zNon usato dal protocollo FTP
x 5 zSistema di fileLa risposta riguarda il sistema di file remoto

Ulteriori informazioni


Per saperne di più sul protocollo FTP, non esitate a consultare i seguenti documenti :
Per poter consultare questo documento offline, ne potete scaricare gratuitamente una versione in formato PDF:
Il-protocollo-ftp-file-transfer-protocol .pdf

Vedi anche


FTP protocol (File Transfer Protocol)
FTP protocol (File Transfer Protocol)
Protocolo FTP (Protocolo de transferencia de archivos)
Protocolo FTP (Protocolo de transferencia de archivos)
Das FTP Protokoll (File Transfer Protocol)
Das FTP Protokoll (File Transfer Protocol)
Le protocole FTP (File Transfer Protocol)
Le protocole FTP (File Transfer Protocol)
O protocolo FTP (File Transfer Protocol)
O protocolo FTP (File Transfer Protocol)
Il documento intitolato « Il protocollo FTP (File Transfer Protocol) » da CCM (it.ccm.net) è reso disponibile sotto i termini della licenza Creative Commons. È possibile copiare, modificare delle copie di questa pagina, nelle condizioni previste dalla licenza, finché questa nota appaia chiaramente.