File Transfer Protocol
In informatica e telecomunicazioni File Transfer Protocol (FTP) (protocollo di
trasferimento file) è un protocollo per la trasmissione di dati tra host basato
su TCP.
FTP è uno dei primi protocolli definiti della Rete Internet ed ha subito una
lunga evoluzione negli anni. La prima specifica, sviluppata presso il MIT,
risale al 1971 (RFC-114). L'attuale specifica fa riferimento all'RFC-959.
Gli obiettivi principali di FTP descritti nella sua RFC ufficiale sono:
Promuovere la condivisione di file (programmi o dati)
Incoraggiare l'uso indiretto o implicito di computer remoti.
Risolvere in maniera trasparente incompatibilità tra differenti sistemi di
stoccaggio file tra host.
Trasferire dati in maniera affidabile ed efficiente.
FTP, a differenza di altri protocolli come ad esempio HTTP, utilizza due
connessioni separate per gestire comandi e dati. Un server FTP rimane
tipicamente in ascolto sulla porta 21 TCP a cui si connette il client. La
connessione da parte del client determinerà l'inizializzazione del canale
comandi attraverso il quale client e server si scambieranno comandi e risposte.
Lo scambio effettivo di dati (come ad esempio file) richiederà l'apertura del
canale dati il quale può essere di due tipi.
In un canale dati di tipo attivo il client apre una porta tipicamente random,
tramite il canale comandi rende noto il numero di tale porta al server e attende
che esso si connetta. Una volta che il server ha attivato la connessione dati al
client FTP, quest'ultimo effettua il binding della porta sorgente alla porta 20
del server FTP. A tale scopo possono venire impiegati i comandi PORT o EPRT, a
seconda del protocollo di rete utilizzato (tipicamente IPv4 o IPv6).
In un canale dati di tipo passivo il server apre una porta tipicamente random (>
1023), tramite il canale comandi rende noto il numero di tale porta al client e
attende che esso si connetta. A tale scopo possono venire impiegati i comandi
PASV o EPSV, a seconda del protocollo di rete utilizzato (tipicamente IPv4 o
IPv6).
Sia il canale comandi sia il canale dati sono delle connessioni TCP; FTP crea un
nuovo canale dati per ogni file trasferito all'interno della sessione utente,
mentre il canale comandi rimane aperto per l'intera durata della sessione
utente, in altre parole il canale comandi è persistente mentre il canale dati è
non persistente.
Un server FTP offre svariate funzioni che permettono al client di interagire con
il suo filesystem e i file che lo popolano, tra cui:
Download/upload di file.
Resume di trasferimenti interrotti.
Rimozione e rinomina di file.
Creazione di directory.
Navigazione tra directory.
FTP fornisce inoltre un sistema di autenticazione (N.B. in chiaro) degli
accessi. Il client che si connette potrebbe dover fornire delle credenziali a
seconda delle quali gli saranno assegnati determinati privilegi per poter
operare sul filesystem. L'autenticazione cosiddetta "anonima" prevede che il
client non specifichi nessuna password di accesso e che lo stesso abbia
privilegi che sono tipicamente di "sola lettura".