[successivo] [precedente] [indice]

File Transfer Protocol

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.

Il Protocollo

FTP apre due connessioni TCP:

  1. La connessione di controllo, usata per inviare comandi dal client al server e per i responsi del server.

    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"

  2. La connessione dati, che viene creata ad ogni trasferimento di un nuovo file.

    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.

Rappresentazione Dati

Occorre compiere quattro tipi di scelte:

  1. Tipo di File.

  2. Controllo di formato. Disponibile solo per i tipi ASCII ed EBCDIC.

  3. Struttura.

  4. Modo Trasmissione.

Le implementazioni UNIX comuni restringono le scelte possibili:

Comandi FTP

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:

Responsi FTP

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.

Gestione Connessione

Vi sono tre usi della connessione dati:

  1. invio di un file dal client al server
  2. invio di un file dal server al client
  3. invio di una lista di file o directory dal server al client

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:

  1. La creazione della connessione dati viene decisa dal client.
  2. Il client crea un porto effimero e compie una Open Passiva su tale porto.
  3. Il client comunica il numero di porto al server sulla connessione dati col comando PORT.
  4. Il server copmie una Active Open sul porto effimero comunicatogli dal client, usando il porto locale 20.

Abort del Trasferimento File

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.