File Transfer Protocol: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Iron Bishop (discussione | contributi)
cat
m Caricata immagine in locale
Riga 7:
# salvaguardare l'utente al variare dei sistemi di stoccaggio file, tra un host e l'altro
# trasferire dati in maniera affidabile ed efficiente
L'FTP ha subito una lunga evoluzione negli anni: il primo meccanismo di trasmissione file risale al [[1971]], fu sviluppato presso il [[M.I.T.MIT]].<br>
 
=== Il modello ===
 
<table align="left" border="0" cellspacing="6"><tr><td>http://en2.wikipedia.org/upload/0/0f/Modello_FTP.png</td><td></table>
[[Immagine:Modello_FTP.png|left|Modello FTP]]
 
Dove:
* <u>PI</u> (''protocol interpreter'') &egrave;è l'interprete del protocollo
* <u>DTP</u> (''data transfer process'') &egrave;è il processo di trasferimento dati, che stabilisce e gestisce la connessione dati. Pu&ograve; essere attivo o passivo.
* <u>Server PI</u> &egrave; il PI del server, che ''ascolta'' la porta L in attesa di una connessione dallo User PI e stabilisce la connessione di controllo della comunicazione. Riceve comandi standard FTP dallo User PI, manda risposte e governa il Server DTP.
* <u>Server DTP</u> &egrave; il DTP del server, che nello stato normale attivo stabilisce la connessione con la porta in ascolto. Setta i parametri per il trasferimento e lo stoccaggio, e trasferisce i dati a comando. Pu&ograve; essere messo in stato passivo per ascoltare, piuttosto che iniziare una connessione sulla porta dati.
Line 19 ⟶ 21:
L'FTP usa il [[TCP/IP|TCP]] per creare una connessione virtuale per le informazioni di controllo, poi crea una seconda connessione diversa dalla prima e sempre TCP per il trasferimento dei dati. La connessione di controllo usa il [[TELNET]] per scambiare comandi e messaggi tra host.
 
 
<table border="1" Cellpadding="2" Cellspacing="0" align="center">
{| border="1" Cellpadding="2" Cellspacing="0" align="center"
<caption> '''Comandi''' </caption>
|+ '''Comandi'''
<tr><td>''Nome''</td><td>''Comando''</td><td>''Parametri''</td><td>''Descrizione''</td></tr>
|-
<tr><td>Abort</td><td><tt>ABOR</tt></td><td>&nbsp;</td><td>Termina la connessione per il trasferimento dei dati</td></tr>
| ''Nome''
<tr><td>Account</td><td><tt>ACCT</tt></td><td><tt><account-information></tt></td><td>Alcuni server richiedono un account per accessi specifici, ad esempio per memorizzare file</td></tr>
| ''Comando''
<tr><td>Allocate</td><td><tt>ALLO</tt></td><td><tt><decimal-integer></tt></td><td>Alcuni server lo richiedono per riservare spazio sufficiente per contenere i nuovi file da trasferire</td></tr>
| ''Parametri''
<tr><td>Append (with create)</td><td><tt>APPE</tt></td><td><tt><pathname></tt></td><td>Obbliga il server ad accettare i dati inviati tramite la connessione dati e salvarli in un file. Se il file esiste gi&agrave; i dati vengono aggiunti, altrimenti il file viene creato ''ex-novo''</td></tr>
| ''Descrizione''
<tr><td>Change to parent directory</td><td><tt>CDUP</tt></td><td>&nbsp;</td><td>Cambia la directory di lavoro corrente con quella di livello superiore</td></tr>
|-
<tr><td>Change working directory</td><td><tt>CWD</tt></td><td><tt><pathname></tt></td><td>Cambia la directory di lavoro sul server</td></tr>
| Abort
<tr><td>Delete</td><td><tt>DELE</tt></td><td><tt><pathname></tt></td><td>Cancella dal server il file specificato</td></tr>
| <tt>ABOR</tt>
<tr><td>Help</td><td><tt>HELP</tt></td><td><tt><string></tt></td><td>Restituisce informazioni sul comando specificato</td></tr>
| &nbsp;
<tr><td>List</td><td><tt>LIST</tt></td><td><tt><pathname></tt></td><td>Se l'argomento indica un file, elenca le propriet&agrave; del file; se l'argomento &egrave; una directory, il server trasferisce una lista di file nella directory</td></tr>
| Termina la connessione per il trasferimento dei dati
<tr><td>Trasfer mode</td><td><tt>MODE</tt></td><td><tt><mode-code></tt></td><td>Modalit&agrave; di trasferimento (<tt>S=stream</tt>, <tt>B=block</tt>, <tt>C=compressed</tt>). Il valore di default &egrave; <tt>S</tt></td></tr>
|-
<tr><td>Make directory</td><td><tt>MKD</tt></td><td><tt><pathname></tt></td><td>Crea sul server la directory indicata</td></tr>
| Account
<tr><td>Name list</td><td><tt>NLST</tt></td><td><tt><pathname></tt></td><td>Elenca il contenuto della directory indicata</td></tr>
| <tt>ACCT</tt>
<tr><td>Noop</td><td><tt>NOOP</tt></td><td>&nbsp;</td><td>Indica nessuna azione tranne l'invio di un Ok dal server</td></tr>
| <tt><account-information></tt>
<tr><td>Password</td><td><tt>PASS</tt></td><td><tt><password></tt></td><td>Completa, per alcuni server, l'identificazione dell'utente. Deve essere immediatamente preceduta dal comando <tt>USER</tt></td></tr>
| Alcuni server richiedono un account per accessi specifici, ad esempio per memorizzare file
<tr><td>Passive</td><td><tt>PASV</tt></td><td>&nbsp;</td><td>Mette il server in ascolto su una porta che non &egrave; quella predefinita in attesa di una connessione dati</td></tr>
|-
<tr><td>Data port</td><td><tt>PORT</tt></td><td><tt><host-port></tt></td><td>Indirizzo internet dell'host e indirizzo TCP della porta, per la connessione dati</td></tr>
| Allocate
<tr><td>Print working directory</td><td><tt>PWD</tt></td><td>&nbsp;</td><td>Nella risposta viene indicato il nome della directory corrente</td></tr>
| <tt>ALLO</tt>
<tr><td>Logout</td><td><tt>QUIT</tt></td><td>&nbsp;</td><td>Disconnette l'utente e chiude la connessione di controllo. Se i file sono ancora in trasferimento, attende che terminino prima di chiudere le connessioni</td></tr>
| <tt><decimal-integer></tt>
<tr><td>Reinitialize</td><td><tt>REIN</tt></td><td>&nbsp;</td><td>Resetta tutti i parametri, termina le connessioni dati ma mantiene quelle di controllo ed aspetta un comando <tt>USER</tt></td></tr>
| Alcuni server lo richiedono per riservare spazio sufficiente per contenere i nuovi file da trasferire
<tr><td>Restart</td><td><tt>REST</tt></td><td><tt><marker></tt></td><td>Riprende il trasferimento file dall'offset indicato</td></tr>
|-
<tr><td>Retrieve</td><td><tt>RETR</tt></td><td><tt><pathname></tt></td><td>Obbliga il server a spedire una copia del file all'utente/server dall'altra parte della connessione</td></tr>
| Append (with create)
<tr><td>Remove directory</td><td><tt>RMD</tt></td><td><tt><pathname></tt></td><td>Rimuove dal server la directory specificata</td></tr>
| <tt>APPE</tt>
<tr><td>Rename from</td><td><tt>RNFR</tt></td><td><tt><pathname></tt></td><td>Indica il vecchio nome del file da rinominare. Deve essere immediatamente seguito da un <tt>RNTO</tt></td></tr>
| <tt><pathname></tt>
<tr><td>Rename to</td><td><tt>RNTO</tt></td><td><tt><pathname></tt></td><td>Indica il nuovo nome del file da rinominare, indicato dal comando <tt>RNFR</tt> immediatamente precedente</td></tr>
| Obbliga il server ad accettare i dati inviati tramite la connessione dati e salvarli in un file. Se il file esiste gi&agrave; i dati vengono aggiunti, altrimenti il file viene creato ''ex-novo''
<tr><td>Site parameters</td><td><tt>SITE</tt></td><td><tt><string></tt></td><td>Comando usato dal server per fornire servizi specifici del suo sistema che sono essenziali per il trasferimento dei file ma non sufficientemente universali per essere inclusi come comandi del protocollo</td></tr>
|-
<tr><td>Structure mount</td><td><tt>SMNT</tt></td><td><tt><pathname></tt></td><td>Inserisce la struttura di file specificata</td></tr>
| Change to parent directory
<tr><td>Status</td><td><tt>STAT</tt></td><td><tt><pathname></tt></td><td>&Egrave; una risposta inviata dal server: durante il trasferimento di file contiene lo stato dell'operazione, oppure tra un trasferimento e l'altro e allora ha lo stesso significato del comando <tt>LIST</tt></td></tr>
| <tt>CDUP</tt>
<tr><td>Store</td><td><tt>STOR</tt></td><td><tt><pathname></tt></td><td>Obbliga il server ad accettare i dati inviati tramite la connessione dati e salvarli</td></tr>
| &nbsp;
<tr><td>Store unique</td><td><tt>STOU</tt></td><td><tt><pathname></tt></td><td>Obbliga il server ad accettare i dati inviati tramite la connessione dati e salvarli con un nome univoco</td></tr>
| Cambia la directory di lavoro corrente con quella di livello superiore
<tr><td>File structure</td><td><tt>STRU</tt></td><td><tt><structure-code></tt></td><td>Codice della struttura dati (<tt>F=file</tt>, <tt>R=record</tt>, <tt>P=page</tt>). Il valore di default &egrave; <tt>F</tt></td></tr>
|-
<tr><td>System</td><td><tt>SYST</tt></td><td>&nbsp;</td><td>Restituisce il sistema operativo in uso sul server</td></tr>
| Change working directory
<tr><td>Representation type</td><td><tt>TYPE</tt></td><td><tt><type-code></tt></td><td>Tipo di rappresentazione dei dati (<tt>A=ASCII</tt>, <tt>E=EBCDIC</tt>, <tt>I=binary</tt>). Il valore di default &egrave; <tt>A</tt></td></tr>
| <tt>CWD</tt>
<tr><td>User Name</td><td><tt>USER</tt></td><td><tt><username></tt></td><td>Identificazione dell'utente richiesta dal server per poter accedere al suo file system</td></tr>
| <tt><pathname></tt>
</table>
| Cambia la directory di lavoro sul server
|-
| Delete
| <tt>DELE</tt>
| <tt><pathname></tt>
| Cancella dal server il file specificato
|-
| Help
| <tt>HELP</tt>
| <tt><string></tt>
| Restituisce informazioni sul comando specificato
|-
| List
| <tt>LIST</tt>
| <tt><pathname></tt>
| Se l'argomento indica un file, elenca le propriet&agrave; del file; se l'argomento &egrave; una directory, il server trasferisce una lista di file nella directory
|-
| Trasfer mode
| <tt>MODE</tt>
| <tt><mode-code></tt>
| Modalit&agrave; di trasferimento (<tt>S=stream</tt>, <tt>B=block</tt>, <tt>C=compressed</tt>). Il valore di default &egrave; <tt>S</tt>
|-
| Make directory
| <tt>MKD</tt>
| <tt><pathname></tt>
| Crea sul server la directory indicata
|-
| Name list
| <tt>NLST</tt>
| <tt><pathname></tt>
| Elenca il contenuto della directory indicata
|-
| Noop
| <tt>NOOP</tt>
| &nbsp;
| Indica nessuna azione tranne l'invio di un Ok dal server
|-
| Password
| <tt>PASS</tt>
| <tt><password></tt>
| Completa, per alcuni server, l'identificazione dell'utente. Deve essere immediatamente preceduta dal comando <tt>USER</tt>
|-
| Passive
| <tt>PASV</tt>
| &nbsp;
| Mette il server in ascolto su una porta che non &egrave; quella predefinita in attesa di una connessione dati
|-
| Data port
| <tt>PORT</tt>
| <tt><host-port></tt>
| Indirizzo internet dell'host e indirizzo TCP della porta, per la connessione dati
|-
| Print working directory
| <tt>PWD</tt>
| &nbsp;
| Nella risposta viene indicato il nome della directory corrente
|-
| Logout
| <tt>QUIT</tt>
| &nbsp;
| Disconnette l'utente e chiude la connessione di controllo. Se i file sono ancora in trasferimento, attende che terminino prima di chiudere le connessioni
|-
| Reinitialize
| <tt>REIN</tt>
| &nbsp;
| Resetta tutti i parametri, termina le connessioni dati ma mantiene quelle di controllo ed aspetta un comando <tt>USER</tt>
|-
| Restart
| <tt>REST</tt>
| <tt><marker></tt>
| Riprende il trasferimento file dall'offset indicato
|-
| Retrieve
| <tt>RETR</tt>
| <tt><pathname></tt>
| Obbliga il server a spedire una copia del file all'utente/server dall'altra parte della connessione
|-
| Remove directory
| <tt>RMD</tt>
| <tt><pathname></tt>
| Rimuove dal server la directory specificata
|-
| Rename from
| <tt>RNFR</tt>
| <tt><pathname></tt>
| Indica il vecchio nome del file da rinominare. Deve essere immediatamente seguito da un <tt>RNTO</tt>
|-
| Rename to
| <tt>RNTO</tt>
| <tt><pathname></tt>
| Indica il nuovo nome del file da rinominare, indicato dal comando <tt>RNFR</tt> immediatamente precedente
|-
| Site parameters
| <tt>SITE</tt>
| <tt><string></tt>
| Comando usato dal server per fornire servizi specifici del suo sistema che sono essenziali per il trasferimento dei file ma non sufficientemente universali per essere inclusi come comandi del protocollo
|-
| Structure mount
| <tt>SMNT</tt>
| <tt><pathname></tt>
| Inserisce la struttura di file specificata
|-
| Status
| <tt>STAT</tt>
| <tt><pathname></tt>
| &Egrave; una risposta inviata dal server: durante il trasferimento di file contiene lo stato dell'operazione, oppure tra un trasferimento e l'altro e allora ha lo stesso significato del comando <tt>LIST</tt>
|-
| Store
| <tt>STOR</tt>
| <tt><pathname></tt>
| Obbliga il server ad accettare i dati inviati tramite la connessione dati e salvarli
|-
| Store unique
| <tt>STOU</tt>
| <tt><pathname></tt>
| Obbliga il server ad accettare i dati inviati tramite la connessione dati e salvarli con un nome univoco
|-
| File structure
| <tt>STRU</tt>
| <tt><structure-code></tt>
| Codice della struttura dati (<tt>F=file</tt>, <tt>R=record</tt>, <tt>P=page</tt>). Il valore di default &egrave; <tt>F</tt>
|-
| System
| <tt>SYST</tt>
| &nbsp;
| Restituisce il sistema operativo in uso sul server
|-
| Representation type
| <tt>TYPE</tt>
| <tt><type-code></tt>
| Tipo di rappresentazione dei dati (<tt>A=ASCII</tt>, <tt>E=EBCDIC</tt>, <tt>I=binary</tt>). Il valore di default &egrave; <tt>A</tt>
|-
| User Name
| <tt>USER</tt>
| <tt><username></tt>
| Identificazione dell'utente richiesta dal server per poter accedere al suo file system
|}