I protocolli FTP e TFTP
Guida ai protocolli Internet
Made in
 
DESCRIPTION Protocollo FTP Overview Live Discussion - Skill: 2- JUNIOR
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.

--- LINK RFC FTP - Url: http://rfc.openskills.info/rfc/959


DESCRIPTION Protocollo TFTP Overview Live Discussion - Skill: 2- JUNIOR
TFTP è un protocollo molto semplice utilizzato per trasferire file tra due host utilizzando UDP.
TFTP (Trivial File Transfer Protocol) è definito nella RFC 1350, ed è stato progettato per trasferire file utilizzando come protocollo di trasporto UDP (User Datagram Protocol). La porta sulla quale è in ascolto un TFTP server è la 69. Essendo molto semplice e con meno funzioni rispetto a FTP, non può leggere directory e non è provvisto di autenticazione, il suo utilizzo è limitato. TFTP viene solitamente usato per trasferire file tra un computer ed un altro dispositivo come router o switch in ambito LAN.

I dati trasmessi tramite TFTP sono rappresentati da pacchetti con una lunghezza fissa di 512 byte. Un pacchetto avente una dimensione inferiore rappresenta l'ultimo pacchetto trasmesso. I pacchetti dati inviati vengono memorizzati in un buffer fino alla ricezione della avvenuta accettazione da parte dell'host remoto. In caso di mancata conferma della ricezione entro un determinato tempo di un pacchetto, quest'ultimo viene ritrasmesso. La modalità di trasferimento dati di TFTP è di due tipi:
- NETASCII per i file di testo;
- OCTET per i file binari.

I pacchetti utilizzati durante una sessione TFTP sono di cinque tipi:
- RR: Read Request (Richiesta di lettura);
- WR: Write Request (Richiesta di scrittura);
- DATA: Dati;
- ACK: Acknowledgment (Accettazione);
- ERR: Errore;

Le fasi di una sessione TFTP:
1. Il client contatta il server inviando una pacchetto di tipo RR (richiesta di lettura) o WR (richiesta di scrittura);
2. Il server, se accetta la connessione, risponde inviando/ricevendo pacchetti DATA di 512 byte. Per ogni pacchetto inviato/ricevuto regolarmente viene inviato/ricevuto un ACK altrimenti un ERROR;
3. I pacchetti vengono trasferiti finchè la loro lunghezza non è inferiore a 512 byte;
4. Termine della connessione;

Esempi:
Un caso frequente di utilizzo di TFTP, la copia di un file di configurazione da un TFTP server ad un router Cisco:
Router-GW1# copy tftp run
Address or name of remote host []? 192.168.0.120
Indicazione del TFTP server
Source filename []? cisco2500-config
Indicazione del file da trasferire
Destination filename [running-config]? (invio)
Accessing tftp://192.168.0.120/cisco2500-config...
Loading cisco2500-config from 192.168.0.120 (via Ethernet0):
!!
[OK - 487/4096 bytes]
487 bytes copied in 5.400 secs (97 bytes/sec)
Router-GW1#


Trasferimento dati tra due computer:
F:\Arnaldo>tftp joker get prova.txt
Il client richiede (GET) al TFTP server joker il file prova.txt
Trasferimento effettuato: 14 byte in 2 secondi, 7 byte/s


Il protocollo TFTP viene utilizzato nell'ambito di soluzioni diskless dagli host BOOTP, il suo compito è quello di scaricare il sistema operativo per i client.

--- LINK RFC TFTP - Url: http://rfc.openskills.info/rfc/1350


  Openskills LiveBook: Guida ai protocolli Internet | (C)oresis Srl | GNU FDL licence Generated: 23/10/2003