FTP (File Transfer Protocol) è il protocollo generalmente utilizzato per trasferire dati tra due host.
Il protocollo di trasferimento dati FTP viene descritto nella RFC 959, l'obbiettivo per cui è stato sviluppato è il trasferimento affidabile ed efficiente dei dati, per questo motivo si basa TCP. In particolare un FTP Server rimane in attesa di connessioni sulla porta 21, i comandi utilizzati sono di tipo case-insensistive, possono essere seguiti da argomenti e sono terminati da un CRLF (Invio).
FTP utilizza due processi distinti per compiere il proprio compito:
PI (Protocol Interpreter) attraverso cui il client invia i comandi e riceve le risposte dal server;
DTP (Data Transfer Process) attraverso il quale il client ed il server si scambiano i dati;
Il Data Transfer Process può essere di due tipi Active MODE (default) o Passive MODE. Nella modalità Active Mode il client contatta il server il quale da inizio alla connessione (sulla porta 20) per trasmettere i dati con il client. In Passive MODE è prerogativa del client anche dare il via alla connessione per il trasferimento dei dati.
Le fasi di una sessione FTP sono:
FASE 1: Il client contatta il server sulla porta 21 utilizzando il processo PI;
FASE 2: Autenticazione del client;
FASE 3: Trasferimento dati attraverso tramite il DTP;
FASE 4: Termine della sessione TCP;
CODICI DI RISPOSTA
Ad ogni comando inserito il server risponde inviando un codice che identifica la riuscita o meno dell'operazione richiesta. I codici sono numerici e composti da tre caratteri xyz
, ognuno dei quali identifica in modo sempre più dettagliato lo stato delle operazioni. In particolare avremo in x
il valore più significativo in y
un maggiore dettaglio in relazione a x
così di seguito per z
.
Per quanto riguarda il codice di risposta più significativo, ovvero il primo dei tre caratteri abbiamo:
1yz
: Risposta preliminare positiva. Indica che il comando è stato accettato e che si avrà un ulteriore risposta prima del comando successivo;
2yz
: Comando terminato con successo;
3yz
: Risposta intermedia positiva. Comando eseguito correttamente e in attesa di ulteriori informazioni per completare l'operazione;
4yz
: Il comando non è stato eseguito correttamente;
5yz
: Comando che il server non ha potuto eseguire;
FTP ANONIMO
Il protocollo FTP permette anche la possibilità di sessioni FTP anonime, situazione tipica di un file server pubblico dove per esempio viene reso disponibile software per il download. In questo caso al client, a cui viene richiesto username anonymous e come password il proprio indirizzo email, viene permesso l'accesso in sola lettura.
PRINCIPALI COMANDI FTP
Accesso
OPEN
<host>: Apre una connessione verso un determinato host;
USER
<nomeutente>: Identifica l'utente che accede al server FTP;
PASS
<password>: Invio della password (di default in chiaro);
QUIT
: Termina la sessione client-server;
Parametri di trasferimento
PORT
<indirizzo-e-porta>: Definisce su quale porta lato client deve essere stabilita la connessione dati ;
PASV
: Attiva o disattiva la modalità Passive MODE;
Trasferimento
TYPE
: Indica il tipo di trasferimento dei dati;
ASCII
: Tipo di trasferimento per il file di testo;
BINARY
: Tipo di trasferimento per i file non di testo: eseguibili, grafici ecc.;
GET
<file-remoto> <file-locale>: Trasferimento di un file dal server al client;
MGET
<file-remoto> <file-locale>: Trasferimento multiplo di file dal server al client;
PUT
<file-remoto> <file-locale>: Trasferimento di un file dal client al server;
MPUT
<file-remoto> <file-locale>: Trasferimento multiplo di file dal client al server;
PROMPT
: Abilita/disabilita la conferma per ogni file durante il trasferimenti multipli;
Gestione File
DELETE
: Cancella un file sul server;
MDELETE
: Effettua una cancellazione multipla;
LCD
: Cambia la directory sul client;
CD
: Cambia la directory sul server;
CDUP
: Cambia la directory spostandosi in quella di livello superiore;
PWD
: Visualizza la directory in cui ci si trova al momento;
MKDIR
: Crea una nuova directory sul server;
RMDIR
: Rimuove una directory sul server;
LS
o DIR
: Visualizza l'elenco dei file presenti sul server;
RENAME
<file-1> <file-2>: rinomina un file;
Aiuto
HELP
o ?
: Visualizza i comandi disponibili sul client FTP;
!
: Esce alla shell di sistema mantenendo in esecuzione il client FTP in cui si può rientrare con EXIT
;
STATUS
: Visualizza le informazioni sulla sessione corrente;
VERBOSE
: Visualizza una quantità maggiore o minore di informazioni in relazione alle operazioni eseguite;
Una sessione di esempio:
homer@Joker:~$ ftp
Connessione al serever tramite un client FTP a linea di comamndo, ma è possibile utilizzare anche Telnet
ftp> open ftp.joker.net
Connected to ftp.joker.net.
220 ProFTPD 1.2.5 Server (ProFTPD Joker Installation) [Joker.Net]
Il server risponde e visualizza il proprio banner. Il codice di risposta è di tipo 2xx ovvero di comando completato con successo
Name (ftp.joker.net:homer): homerweb
331 Password required for homerweb.
Qui è possibile notare che il codice di risposta è 3xx ovvero, che il comando è stato eseguito con successo ma mancano altre informazioni... ovvero la password che verrà inserita successivamente
Password: h03hwp
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> type ascii
200 Type set to A.
Settaggio del tipo di trasferimento dati su ASCII
ftp> help pwd
pwd print working directory on remote machine
Tramite il comando help è possibile visualizzare l'aiuto su un determinato comando
ftp> ls
200 PORT command successful.
150 Opening ASCII mode data connection for file list.
drwxr-xr-x 4 homerweb users 4096 May 7 09:36 arnaldotest
drwxr-xr-x 2 homerweb users 4096 May 18 20:28 arnaldoweb2003
226 Transfer complete.
ftp> cd arnaldotest
250 CWD command successful.
ftp> pwd
257 "/arnaldotest" is current directory.
Verifica della directory in cui ci si trova tramite il comando PWD
ftp> ls
200 PORT command successful.
150 Opening ASCII mode data connection for file list.
-rw-r--r-- 1 homerweb users 1015 Mar 19 13:39 leggimi.txt
-rw-r--r-- 1 homerweb users 1793 Mar 19 13:38 guestbook_read.php
-rw-r--r-- 1 homerweb users 3293 Mar 19 13:38 guestbook_write.php
226 Transfer complete.
ftp> get testphp.php
local: testphp.php remote: testphp.php
200 PORT command successful.
150 Opening ASCII mode data connection for testphp.php (1391 bytes).
E' possibile notare il codice 1xx ovvero risposta preliminare positiva, si avrà una risposta di successo o di insuccesso solamente ad operazione terminata
226 Transfer complete.
1439 bytes received in 0.0649 secs (22 Kbytes/sec)
Trasferimento dal SERVER al CLIENT del file testphp.php
ftp> put dati.txt
local: dati.txt remote: dati.txt
200 PORT command successful.
150 Opening ASCII mode data connection for dati.txt.
226 Transfer complete.
41 bytes sent in 0.00116 secs (35 Kbytes/sec)
Trasferimento dal CLIENT al SERVER del file dati.txt
ftp> quit
221 Goodbye.
homer@Joker:~$
Uscita, ritorno al prompt di sistema e termine della connessione TCP
Per FTP, come per altri protocolli, sono stati sviluppati client di tipo grafico per facilitare il trasferimento di file da parte degli utenti. File Transfer Protocol è supportato anche sui comuni browser web.
File Transfer Protocol: sintassi e logica. Introduzione a TFTP (Trivial File Transfer Protocol)
a teresa
ciao teresa sono me medesima teresa sto facendo 1 prova del protocollo ftp
Rispondiinfo ftp
uso l'ftp da un host hp 3000 senza interfaccia grafica. avrei bisogno di prendermi le informazioni messe uscita da ftp "41 bytes sent in 0.00116 secs (35 Kbytes/sec) " e metterli in una variabile. come posso fare?