MokaByte Numero 18 - Aprile 1998

 
FTP
I parte
di
Luca Bertoncello
Introduciamo questo mese il File Transfert Protocol, e come utilizzarlo in Java

 

Eccoci nuovamente a parlare di applicazioni Java che interessano il mondo Internet nelle sue caratteristiche fondamentali.

Dopo aver analizzato il protocollo SMTP e POP3 (usati rispettivamente per spedire e ricevere E-Mail), passiamo a vedere come funziona il protocollo FTP.

FTP sta per File Transfer Protocol, ossia Protocollo per il Trasferimento di File.

Penso che tutti noi abbiamo già avuto a che fare con questo protocollo, usando programmi vari (CuteFTP, EasyFTP, FTP Explorer, WS-FTP tanto per fare alcuni nomi) per scaricare qualche file da Internet.

Vediamo ora in dettaglio come funziona questo sistema.

Innanzi tutto è necessario ricordare che, come gli altri protocolli di comunicazione, basano la loro esistenza (e la trasmissione dei dati) sui Socket, a proposito dei quali tempo fa avevo già scritto un articolo.

In questo caso, la porta interessata è, generalmente, la 21. Tramite essa passano tutti i comandi FTP.

A differenza però di SMTP e POP3, nel protocollo FTP i dati viaggiano attraverso altre porte, aperte prima di iniziare il lavoro e chiuse subito dopo. Il numero di queste porte è variabile, quindi ogni volta che ci deve essere un trasferimento di dati (visualizzare la directory, spedire o ricevere files), il client FTP (quello che usate sulla vostra macchina), cercherà una porta libera e la comunicherà al server (che invece è sull’host al quale vi siete collegati).

A questo punto comincia il traffico dei dati, che sarà funzione del comando dato in precedenza.

Vediamo ora alcuni comandi fondamentali del protocollo FTP (NB: tutti questi comandi sono contenuti nella RFC959).

Prima di tutto esistono i comandi utilizzati per il logon, quindi USER per fornire il proprio UserName e PASS per dare la propria password.

Questi comandi hanno un parametro che (come si può immaginare) sarà, a seconda del caso, lo UserName o la Password.

Come quasi tutti sanno esiste anche l’FTP anonimo, quindi, in quel caso, UserName sarà "anonymous" e password il proprio indirizzo E-Mail.

La sintassi è quindi:

 

USER <nome>
e
PASS <password>
 

A questo punto sorge il problema di capire se l’host ci permette di entrare. Per saperlo basta analizzare la risposta che il server fornisce ad ogni comando.

Questa risposta è composta di due parti, una riservata al programma e l’altra all’utente.

La prima parte è un numero, che per il programma vuol dire una certa cosa, e la seconda è la traduzione in linguaggio umano di quel numero.

Evidentemente il programma non può basarsi sulla traduzione, in quanto essa può variare notevolmente da un server all’altro (anche come linguaggio).

Si userà quindi il numero. Abbiamo dunque un po’ di risposte da esaminare.

All’inizio, quando si chiama il sito, esso dice "220", ossia "Chi sei? Che vuoi?", a questo punto si manda il proprio username e il server risponderà "530" (Picche!) o "331" (OK! Dammi la password).

Supponendo di essere nel secondo caso, si manda la password e si attende la risposta, che sarà ancora "530" (Picche!) o "230" (OK! Ti sei loggato!).

A questo punto (sempre supponendo che tutto sia andato a buon fine), siamo entrati nel sistema remoto. Supponiamo quindi di dargli un comando (ad esempio CWD [Change Work Directory]). Questo comando ha un parametro: la directory dove si vuole andare.

Il server risponderà sempre con un numero che sarà "250" (Tutto OK!) o "550" (la directory è inesatta).

Tanto per amor di cronaca, vediamo ancora un comando, veramente fondamentale. Si tratta del comando QUIT. Esso, come suggerisce il nome, serve a chiudere la connessione. Esso ritorna un numero (221). Quando vedete questo numero potrete chiudere il vostro programma. Il server ha ricevuto il comando di sconnessione e ha "riagganciato".

A questo punto tutti voi (spero!) vorrete provare quello che ho detto. Beh, in effetti è abbastanza semplice. Tutti i Sistemi Operativi con installato il protocollo TCP/IP hanno un'utility chiamata Telnet.

Aprite questa applicazione e dal menu "Connetti" scegliete "Sistema Remoto". Nella finestra che compare digitate il nome di un server FTP (in Nome Host) e la porta (generalmente 21) in "Porta".

A questo punto potete tranquillamente fingere di essere un programma FTP e comportarvi secondo le norme che ho detto prima.

Il server, diligentemente e credendovi un programma FTP, vi risponderà.

 

La prossima volta vedremo di creare un semplice programmino Java che si connetterà con un qualsiasi server FTP, si loggherà secondo lo username e la password che gli fornirete e accetterà alcuni semplici comandi, visualizzando le risposte del server.

  
Luca Bertoncello  è un programmatore in C++ e Java (da poco dopo i suoi esordi). Diplomato in Informatica all'ITIS di Ivrea, lavora presso una ditta che ha creato due anni fa. È specializzato in programmi sistemistici per il gioco del Lotto, ma non disdegna altri programmi e speculazioni mentali sui vari sistemi.  E' inoltre webmaster del sito ufficiale dell'associazione JIA

Può essere contattato a: bertoncello@infomedia.it 

 

 

MokaByte rivista web su Java

MokaByte ricerca nuovi collaboratori
Chi volesse mettersi in contatto con noi può farlo scrivendo a mokainfo@mokabyte.it