Sistemi di elaborazione dell'informazione / Reti

FTP

L'FTP, acronimo di File Transfer Protocol File Transfer Protocol (protocollo di trasferimento file), è un servizio che fornisce gli elementi fondamentali per la condivisione di file tra host. Tipicamente questi file sono pagine web. Gli obiettivi dell'FTP sono:

L'FTP ha subito una lunga evoluzione negli anni: il primo meccanismo di trasmissione file risale al 1971, fu sviluppato presso il MIT. Per usare FTP il client deve compiere un login alla stazione server, con un nome e password validi, oppure può essere configurato il server per accettare login anonimo, usando il nome convenzionale di login anonymous o ftp. FTP è stato progettato per il lavoro tra host diversi, con diversi sistemi operativi, diverse strutture di file system e anche diversi insiemi di caratteri. L'FTP usa il TCP per creare una connessione per le informazioni di controllo (PI Protocol Interpreter), poi crea una seconda connessione sempre TCP per il trasferimento dei dati (DTP Data Transfer Process). La connessione di controllo usa telnet per scambiare comandi e messaggi tra host. Nel PI 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 è attiva per tutta la sessione FTP. Di conseguenza 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 per trasmettere i dati con il client. La connessione dati viene invece creata ad ogni trasferimento di un nuovo file. I comandi più utilizzati nel protocollo FTP sono i seguenti:

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;

L'utente interattivo normalmente non tratta i comandi direttamente; questi sono scambiati dall'interprete di protocollo dell'applicativo. 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;

Vediamo di seguito un breve esempio di connessione 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> 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.

//Viene mostrato con ls l’ elenco delle cartelle
ftp> cd arnaldotest
250 CWD command successful.

// con il comandocd si accede alla cartella arnaldotest

ftp> help pwd
pwd     print working directory on remote machine
// Tramite il comando help è possibile visualizzare l'aiuto su un determinato comando
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

Simile all’ FTP c’è l’ TFTP che è un protocollo molto semplice utilizzato per trasferire file tra due host utilizzando UDP. TFTP (Trivial File Transfer Protocol) è definito nella RFC 1350. 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.























































Tutto quanto riportato in questa pagina è a puro scopo informativo personale. Se non ti trovi in accordo con quanto riportato nella pagina, vuoi fare delle precisazioni, vuoi fare delle aggiunte o hai delle proposte e dei consigli da dare, puoi farlo mandando un email. Ogni indicazione è fondamentale per la continua crescita del sito.