Inserisci Infobox

I protocolli FTP e TFTP

File Transfer Protocol: sintassi e logica. Introduzione a TFTP (Trivial File Transfer Protocol)

Protocollo FTP Overview
Autore: homer - Ultimo Aggiornamento: 2003-05-23 20:50:36 - Data di creazione: 2003-05-23 20:50:36
Tipo Infobox: DESCRIPTION - 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.

Protocollo TFTP Overview
Autore: homer - Ultimo Aggiornamento: 2003-10-03 08:57:54 - Data di creazione: 2003-10-03 08:57:54
Tipo Infobox: DESCRIPTION - 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.

ncftp
Autore: g4b0 - Ultimo Aggiornamento: 2004-11-20 15:01:40 - Data di creazione: 2004-11-20 15:01:40
Tipo Infobox: COMMANDS - Skill: 2- JUNIOR

E' un valido sostituto del comando ftp, soprattutto quando si rende necessario l'upload o il download di file residenti in più directory, anche annidate, grazie alla autocompletion dei path. Non fa 'solitamente' parte delle distro standard, ma è facilmente downlodabile dalla rete all'indirizzo: http://www.ncftp.com/

ncftp [-DH] [[-aupdg] hostname[:path-name]]
-D Attiva la modalita' debug e il trace mode
-H Stampa informazioni sulla versione
-a Si connette in modo anonimo
-u Dopo essersi connesso prompta per user e pass
-p X Si connette alla porta X

Una volta connessi al server ftp i comandi sono pressoche' gli stessi dell'ftp standard, con la (grandiosa) differenza che con l'attributo -R si possono effettuare dei get e delle put ricorsive, uploadando quindi, per esempio, un intero sito con un semplice comando! Altra caratteristica interessante riguarda i comandi ncftpput e ncftpget, che possono essere invocati da shell ed utilizzati all'interno di script.

ncftpput
Autore: g4b0 - Ultimo Aggiornamento: 2004-11-20 14:59:35 - Data di creazione: 2004-11-20 14:59:35
Tipo Infobox: COMMANDS - Skill: 2- JUNIOR

Utile shorthand per effettuare un upload ad un sito ftp con un semplice comando, o mediante un'apposito script.
Non fa 'solitamente' parte delle distro standard, ma è facilmente downlodabile dalla rete all'indirizzo: http://www.ncftp.com/

ncftpput [-upPamUARFDD] host-remoto directory-remota file-locali
-u XX Specifica lo username
-p XX Specifica la password
-P XX Specifica Il numero di porta a cui connettersi anziche quello standard (21)
-a ASCII file transfer invece di binario
-m Se la directory remota non esiste la crea (anche ricorsivo)
-U XX Utilizza XX come umask remota
-A Append ai file remoti, anziche sovrascriverli
-R Ricorsivo (necessario per directory annidate)
-F Passive mode
-DD Cancella i file locali dopo l'upload

ncftpput e' un ottimo strumento per gestire siti ed upload in generale, ottimamente integrabile in script per la gestionre simultanea di piu' upload.

Esempio di utilizzo:
ncftpput -u g4b0 -p lamiapassword -a -m -R g4b0.altervista.org / *

ncftpget
Autore: g4b0 - Ultimo Aggiornamento: 2004-11-20 14:58:22 - Data di creazione: 2004-11-20 14:58:22
Tipo Infobox: COMMANDS - Skill: 2- JUNIOR

Utile shorthand per effettuare download ad un sito ftp con un semplice comando, o mediante un'apposito script.
Non fa 'solitamente' parte delle distro standard, ma è facilmente downlodabile dalla rete all'indirizzo: http://www.ncftp.com/

ncftpget [-upPaARFDD] host-remoto directory-locale file-remoti
-u XX Specifica lo username
-p XX Specifica la password
-P XX Specifica Il numero di porta a cui connettersi anziche quello standard (21)
-a ASCII file transfer invece di binario
-A Append ai file remoti, anziche sovrascriverli
-R Ricorsivo (necessario per directory annidate)
-F Passive mode
-DD Cancella i file remoti dopo l'upload

ncftpget e' un ottimo strumento per gestire siti ed download in generale, ottimamente integrabile in script per la gestionre simultanea di piu' download.

Esempio di utilizzo:
ncftpget -u g4b0 -p lamiapassword -a -R g4b0.altervista.org / /home/g4b0/www

Privacy Policy