Il protocollo FTP e' lo standard Internet per i file transfer. FTP copia un file completo tra due sistemi. Per usare FTP il client deve compiere un login alla stazione server, con un nome e password validi, oppure puo' essere configurato il server per accettare login anonimo, usando il nome convenzionale di login anonymous o ftp.
FTP e' stato progettato per il lavoro tra host diversi, con diversi sistemi operativi, diverse strutture di file system e anche diversi insiemi di caratteri. Anziche' mappare tutto ad NVT 7-bit ASCII, come Telnet, le implementazioni di FTP supportano un numero limitato di tipi di file e di strutture di file (stream o a blocchi).
Il documento di riferimento di FTP e' lo RFC959.
FTP apre due connessioni TCP:
Il server compie una Passive Open sul porto TCP 21 ed attende la connessione del client. Il client compie una Active Open sul proprio porto TCP 21 per stabilire la connessione. La connessione di controllo e' attiva per tutta la sessione FTP.
Il tipi di servizio IP per la connessione di controllo dovrebbe essere "minimizzare il ritardo"
Il tipo di servizio IP per la connessione dati dovrebbe essere "massimizzare la banda".
L'utente interattivo normalmente non tratta i comandi direttamente; questi sono scambiati dall'interprete di protocollo dell'applicativo.
Occorre compiere quattro tipi di scelte:
Questo e' il default. Il trasmittente converte il file in formato NVT ASCII e il ricevente lo riconverte nella propria rappresentazione interna.
Anche detto binario. Uno stream continuo di bit.
Il numero di bit per byte e' specificato dalla stazione inviante.
Le implementazioni UNIX comuni restringono le scelte possibili:
I comandi vengono inviati attraverso la connessione di controllo in formato NVT ASCII. I comandi sono tre o quattro caratteri maiuscoli con argomenti opzionali. Lo standard definisce piu' di 30 comandi. I piu' usati sono:
I responsi sono formati da un codice numerico a tre cifre in ASCII, seguito da un messaggio. Il software interpreta il codice, il messaggio e' per comprensibilita' umana.
Ogni cifra del codice ha un significato diverso.
La terza cifra fornisce dettagli addizionali sui messaggi d'errore.
Normalmente un responso FTP e' su una sola linea. Nei responsi a piu' linee il codice numerico e' subito seguito da un trattino su tutte le linee tranne l'ultima, nella quale e' seguito da uno spazio.
Vi sono tre usi della connessione dati:
I listati directory vengono inviati come file sulla connessione dati anziche' la connessione controllo, per permettere tra l'altro all'utente di salvarli in file.
Una connessione nuova e' creata per ogni file transfer. La procedura normale e' come segue:
La terminazione abort di un file transfer dal client al server e' semplice: il client sospende la trasmissione dati ed invia un comando ABOR al server sulla connessione di controllo.
La terminazione di un file transfer dal server al client e' piu' complessa. L'utente preme il tasto di interruzione ed il client da' subito un messaggio di inizio di abort. Il client invia il messaggio di ABOR al server in modalita' urgente TCP, e il server conferma il messaggio ed abortisce l'invio dati. Possono esservi dei pacchetti dati ancora in transito sulla rete: il client li ignora. Alla ricezione della conferma di ABOR dal server il client da' un messaggio di successo.