Funzionamento del protocollo FTP

Il protocollo FTP permette il trasferimento dati tra un client, solitamente un PC, e un server. Ma esattamente come funziona? Scopritelo nel nostro articolo.

Come funziona il protocollo FTP?

Molti di voi avranno sicuramente già sentito parlare dell’acronimo FTP, che sta per File Transfer Protocol. In informatica è una tecnica di trasferimento dati piuttosto diffusa. E’ utile per poter trasferire dati ad un server da remoto oppure scaricare file da archivi protetti. Solitamente il trasferimento dei dati avviene tra due host, a volte anche di più, dove uno dei due ha la funzione di server, che ospita i vari file. La particolarità del trasferimento tramite protocollo FTP è la protezione dei dati. Infatti il client per accedere al server dovrà fornire nome utente e password corretta. Senza tali credenziali sarà impossibile modificare eventuali dati presenti nel server.

Il protocollo FTP sfrutta le connessioni TCP per trasferire i file tra vari computer. Purtroppo il protocollo FTP è affetto da un grave problema di sicurezza. Un server FTP infatti non è in grado di autenticare eventuali intrusi nella comunicazione, lasciando campo libero a possibili hacker o i cosiddetti Man-in-the-Middle, che potrebbero dirottare il traffico ed intercettare i trasferimenti. Fortunatamente però è possibile proteggere il protocollo FTP tramite l’SSL, allo stesso modo dell’HTTPS. Infatti l’SSL (Security Socket Layer) permette al traffico di essere crittografato, impedendo che eventuali dati vengano letti o peggio rubati.

Comandi e dati

Il funzionamento del protocollo FTP si basa sull’invio di comandi da parte del client al server o lo scambio di dati tra i due. Vengono eseguite due connessioni separate. Inizialmente si ha l’invio di un comando del client, che permette una determinata azione, come l’eliminazione di un file o semplicemente la modifica di uno di essi. Qui si genera il cosiddetto canale comandi, dedicato esclusivamente all’invio di azioni client-server.

Per il trasferimento effettivo di un file, si apre una connessione dati, che si divide in: attiva e passiva. In una connessione attiva,  è il client ad aprire una porta TCP casuale, al quale il server dovrà connettersi per stabilire un contatto tra le due parti. Successivamente il server effettuerà il binding alla porta 20 del server FTP. In pratica è il client a fornire la porta di accesso al protocollo FTP. In una connessione passiva invece è il contrario, ovvero il server apre una porta TCP casuale e tramite il canale comandi rende nota tale porta al client, così che possa connettersi ed accedere ai contenuti del server FTP.

La connessione dati viene creata singolarmente per ogni file scambiato, dunque non è permanente, mentre il canale comandi rimane attivo per tutta la durata della sessione, fin quando non si interrompe il collegamento.

Solitamente i server con protocollo FTP sono protetti da apposite credenziali. Ma in alcuni casi è possibile non inserire alcuna password di accesso, con i file mostrati in sola lettura. Le funzionalità che offre un server FTP sono molteplici, dal semplice scambio dei file alla modifica degli stessi, fino ad arrivare alla creazione di directory vere e proprie.

Esempi di comandi

Di seguito vi riportiamo alcuni dei comandi più comuni:

Nome Comando Parametri Descrizione
Abort ABOR Interrompe trasferimento dati.
Account ACCT <account-information> Informazioni account (raramente usato).
Allocate ALLO <decimal-integer> Alloca spazio sufficiente per ricevere un file (raramente usato).
Append (with create) APPE <pathname> Appende dati ad un file esistente.
Change to parent directory CDUP Va alla parent directory.
Change working directory CWD <pathname> Cambia directory corrente.
Delete DELE <pathname> Cancella file.
Help HELP <command> Ritorna la lista dei comandi accettati dal server. Con argomento fornisce spiegazioni riguardo al comando specificato.
List LIST <pathname> Lista il contenuto di una directory o le proprietà di un singolo file.
Trasfer mode MODE <mode-type> Imposta la modalità di trasferimento (S=streamB=blockC=compressed).
Make directory MKD <pathname> Crea directory.
Name list NLST <pathname> Ritorna il nome dei file della directory specificata.
Noop NOOP Non fa nulla (usato prevalentemente per prevenire disconnessioni per inattività prolungata).
Password PASS <password> Specifica la password dell’utente.
Passive PASV Inizializza connessione dati passiva.
Data port PORT <host-port> Inizializza connessione dati attiva.
Print working directory PWD Ritorna nome della directory corrente.
Logout QUIT Disconnette. Se un trasferimento è ancora in corso attende che termini prima di chiudere la sessione.
Reinitialize REIN Effettua il log-off dell’utente loggato.
Restart REST <marker> Riprende il trasferimento dall’offset indicato.
Retrieve RETR <pathname> Preleva file (da server a client).
Remove directory RMD <pathname> Rimuove directory.
Rename from RNFR <pathname> Rinomina (sorgente).
Rename to RNTO <pathname> Rinomina (destinazione).
Site parameters SITE <command> Manda comando specifico per il server (non standardizzato; varia tra implementazioni).
Structure mount SMNT <pathname> Monta struttura (raramente usato).
Status STAT <pathname> Ritorna statistiche riguardo al server. Con argomento lista il contenuto di una directory utilizzando il canale comandi.
Store STOR <pathname> Spedisce un file (da client a server).
Store unique STOU <pathname> Spedisce un file (da client a server) utilizzando un nome univoco.
File structure STRU <structure-code> Imposta la struttura dati (F=fileR=recordP=page). Praticamente inutilizzato. Il valore di default è F.
System SYST Ritorna tipo di sistema operativo.
Representation type TYPE <type> Imposta la modalità di trasferimento (A=ASCIIE=EBCDICI=BinaryL=Local). Il valore di default è A. EBCDIC e Local sono raramente usati (esempio: unicamente su sistemi mainframe).
User Name USER <username> Specifica nome utente.

Come potete vedere le possibilità offerte da un server FTP sono molteplici. Il vantaggio è che è possibile archiviare un gran numero di file in uno spazio esterno, senza dover occupare il proprio hard disk. Non è molto dissimile da un NAS, con la differenza che quest’ultimo non archivia file su un server ma crea un network vero e proprio, con un indirizzo IP unico a cui possono accedere i possessori delle rispettive credenziali di accesso. Lo scopo rimane comunque quello di poter condividere i propri file in remoto. Alcuni NAS integrano persino una funzione che permette di impostarli come server FTP, creando il connubio perfetto.

Un server FTP richiede l’utilizzo di un apposito software, che fungerà da client di accesso ai file. Uno dei più conosciuti è senza dubbio FileZilla. E’ completamente gratuito e piuttosto intuitivo da utilizzare.

Protocollo FTP FileZilla

In alto a sinistra è possibile notare gli appositi campi in cui inserire l’URL del server FTP e rispettiva porta di accesso. Sulla voce Host andrà inserito l’indirizzo web del server (solitamente nella forma ftp.indirizzo.it ftp.indirizzo.com) mentre sulla voce Port la porta di accesso (solitamente 20 o 21). A questo punto si apriranno le varie directory con tutti i file presenti all’interno, che potrete modifica e spostare, se sono stati concessi i permessi per farlo. Infatti avere la possibilità di accedere ad un server FTP non implica necessariamente la possibilità di poter eseguire qualunque azione possibile. Il server infatti può imporre dei limiti ai client che si collegano, al fine di migliorare la sicurezza del protocollo FTP e del server stesso.

Scaricando la versione Server è possibile anche impostare il server FTP per la condivisione dei dati. Bisogna tener conto però che il server FTP continua a rimanere attivo fin tanto che il PC rimane accesso e la linea internet attiva. Se una delle due cose dovesse venir meno non sarà più possibile per il client accedere ai dati o per il server condividere i file. I vantaggi di avere un server FTP sono:

  • Nessun limite di dimensioni dei file
  • Evitare di affidare i file a siti di file sharing o file hosting
  • Protezione dei file con nome utente e password
  • Semplicità di utilizzo e di accesso

Però ha anche dei grossi limiti come:

  • Velocità di caricamento dei file limitata alla propria velocità di upload, proprio come un classico file hosting
  • File disponibili fin quanto il PC ha una connessione attiva.

In questo articolo non ci addentreremo nel dettaglio della creazione di un server FTP, anche perchè si tratta di un’operazione molto lunga e macchinosa.

Con questo articolo abbiamo cercato di spiegare in maniera più chiara possibile il funzionamento del protocollo FTP e dei vari collegamenti che entrano in gioco. Per qualsiasi dubbio, commentate con le vostre domande. Fateci sapere inoltre se vorreste vedere un articolo riguardo alla creazione di un server FTP e di come collegarsi per la prima volta.