File Transfer Protocol - it.LinkFang.org

File Transfer Protocol




File Transfer Protocol (FTP) (protocollo di trasferimento file), in informatica e nelle telecomunicazioni, è un protocollo per la trasmissione di dati tra host basato su TCP e con architettura di tipo client-server.

Il protocollo usa connessioni TCP distinte per trasferire i dati e per controllare i trasferimenti e richiede autenticazione del client tramite nome utente e password, sebbene il server possa essere configurato per connessioni anonime con credenziali fittizie. Dato che FTP trasmette in chiaro sia tali credenziali sia ogni altra comunicazione, e visto che non dispone di meccanismi di autenticazione del server presso il client, il protocollo è spesso reso sicuro utilizzando un sottostrato SSL/TLS e tale variante è chiamata FTPS. L'acronimo SFTP designa invece un altro protocollo che, pur essendo molto simile a quest'ultimo dal punto di vista funzionale, è alquanto diverso da quello tecnologico: SSH File Transfer Protocol.

Indice

Cenni storici


FTP è uno dei primi protocolli definiti della Rete Internet e ha subito una lunga evoluzione negli anni. La prima specifica, sviluppata presso il MIT, risale al 1971 (RFC-114 ). L'attuale specifica fa riferimento all'RFC-959 .

Gli obiettivi principali di FTP descritti nella sua RFC ufficiale furono:

Il modello


Dove:

Funzionamento generale


FTP, a differenza di altri protocolli come per esempio HTTP, utilizza due connessioni separate per gestire comandi e dati. Un server FTP generalmente rimane in ascolto sulla porta 21 TCP a cui si connette il client. La connessione da parte del client determina l'inizializzazione del canale comandi attraverso il quale client e server si scambiano comandi e risposte. Lo scambio effettivo di dati (come per esempio un file) richiede l'apertura del canale dati, che può essere di due tipi.

In un canale dati di tipo attivo il client apre una porta solitamente casuale, tramite il canale comandi rende noto il numero di tale porta al server e attende che si connetta. Una volta che il server ha attivato la connessione dati al client FTP, quest'ultimo effettua il binding della porta sorgente alla porta 20 del server FTP. A tale scopo possono venire impiegati i comandi PORT o EPRT, a seconda del protocollo di rete utilizzato (in genere IPv4 o IPv6).

In un canale dati di tipo passivo il server apre una porta solitamente casuale (superiore alla 1023), tramite il canale comandi rende noto il numero di tale porta al client e attende che si connetta. A tale scopo possono venire impiegati i comandi PASV o EPSV, a seconda del protocollo di rete utilizzato (in genere IPv4 o IPv6).

Sia il canale comandi, sia il canale dati sono delle connessioni TCP; FTP crea un nuovo canale dati per ogni file trasferito all'interno della sessione utente, mentre il canale comandi rimane aperto per l'intera durata della sessione utente, in altre parole il canale comandi è persistente mentre il canale dati è non persistente.

Un server FTP offre svariate funzioni che permettono al client di interagire con il suo filesystem e i file che lo popolano, tra cui:

FTP fornisce inoltre un sistema di autenticazione in chiaro (non criptato) degli accessi. Il client che si connette potrebbe dover fornire delle credenziali a seconda delle quali gli saranno assegnati determinati privilegi per poter operare sul filesystem. L'autenticazione cosiddetta "anonima" prevede che il client non specifichi nessuna password di accesso e che lo stesso abbia privilegi che sono generalmente di "sola lettura".

Comandi


Lista dei comandi definiti nella RFC-959 .

Comandi
Nome Comando Parametri Descrizione
Abort ABOR   Interrompe trasferimento dati.
Account ACCT <account-information> Informazioni account (raramente usato).
Allocate ALLO <decimal-integer> Alloca spazio sufficiente per ricevere un file (raramente usato).
Append (with create) APPE <pathname> Appende dati ad un file esistente.
Change to parent directory CDUP   Va alla parent directory.
Change working directory CWD <pathname> Cambia directory corrente.
Delete DELE <pathname> Cancella file.
Help HELP <command> Ritorna la lista dei comandi accettati dal server. Con argomento fornisce spiegazioni riguardo al comando specificato.
List LIST <pathname> Lista il contenuto di una directory o le proprietà di un singolo file.
Trasfer mode MODE <mode-type> Imposta la modalità di trasferimento (S=stream, B=block, C=compressed).
Make directory MKD <pathname> Crea directory.
Name list NLST <pathname> Ritorna il nome dei file della directory specificata.
Noop NOOP   Non fa nulla (usato prevalentemente per prevenire disconnessioni per inattività prolungata).
Password PASS <password> Specifica la password dell'utente.
Passive PASV   Inizializza connessione dati passiva.
Data port PORT <host-port> Inizializza connessione dati attiva.
Print working directory PWD   Ritorna nome della directory corrente.
Logout QUIT   Disconnette. Se un trasferimento è ancora in corso attende che termini prima di chiudere la sessione.
Reinitialize REIN   Effettua il log-off dell'utente loggato.
Restart REST <marker> Riprende il trasferimento dall'offset indicato.
Retrieve RETR <pathname> Preleva file (da server a client).
Remove directory RMD <pathname> Rimuove directory.
Rename from RNFR <pathname> Rinomina (sorgente).
Rename to RNTO <pathname> Rinomina (destinazione).
Site parameters SITE <command> Manda comando specifico per il server (non standardizzato; varia tra implementazioni).
Structure mount SMNT <pathname> Monta struttura (raramente usato).
Status STAT <pathname> Ritorna statistiche riguardo al server. Con argomento lista il contenuto di una directory utilizzando il canale comandi.
Store STOR <pathname> Spedisce un file (da client a server).
Store unique STOU <pathname> Spedisce un file (da client a server) utilizzando un nome univoco.
File structure STRU <structure-code> Imposta la struttura dati (F=file, R=record, P=page). Praticamente inutilizzato. Il valore di default è F.
System SYST   Ritorna tipo di sistema operativo.
Representation type TYPE <type> Imposta la modalità di trasferimento (A=ASCII, E=EBCDIC, I=Binary, L=Local). Il valore di default è A. EBCDIC e Local sono raramente usati (esempio: unicamente su sistemi mainframe).
User Name USER <username> Specifica nome utente.

Codici di risposta


Problemi relativi alla sicurezza


La specifica originale di FTP non prevede alcuna cifratura per i dati scambiati tra client e server. Questo comprende nomi utenti, password, comandi, codici di risposta e file trasferiti i quali possono essere "sniffati" o visionati da malintenzionati in determinate situazioni (esempio: ambienti intranet).

Il problema è comune a diversi altri protocolli utilizzati prima della diffusione di SSL quali HTTP, TELNET e SMTP. Per ovviare al problema è stata definita una nuova specifica che aggiunge al protocollo FTP originale un layer di cifratura SSL/TLS più una nuova serie di comandi e codici di risposta. Il protocollo prende il nome di FTPS ed è definito nella RFC-4217 . Da non confondersi con SFTP che è comunque una valida alternativa per ovviare al problema descritto.

Applicazioni che utilizzano FTP


FileZilla, Fire Downloader, JDownloader sono alcuni dei tanti gestori di download che permettono di trasferire i dati mediante connessione FTP.

Tuttavia nei sistemi operativi, in genere, si può effettuare l'accesso anche tramite riga di comando.

Server FTP


Alcuni server FTP popolari sono[1]:

Note


  1. ^ 4 Popular FTP Servers Reviewed | TechWench , su www.techwench.com. URL consultato il 4 aprile 2019.
  2. ^ SFTP Server Software For Windows , su www.TitanFTP.com. URL consultato il 5 novembre 2019 (archiviato dall'url originale il 19 agosto 2013).

Voci correlate


Altri progetti


Collegamenti esterni


Controllo di autoritàLCCN (ENsh95000465  · GND (DE4268371-3








Categorie: Massachusetts Institute of Technology | File Transfer Protocol








Data: 19.05.2020 10:21:02 CEST

Sorgente: Wikipedia (Autori [Cronologia])    Licenza: CC-by-sa-3.0

Modifiche: Tutte le immagini e la maggior parte degli elementi di design correlati a questi sono stati rimossi. Alcune icone sono state sostituite da FontAwesome-Icons. Alcuni modelli sono stati rimossi (come "l'articolo ha bisogno di espansione) o assegnati (come" note "). Le classi CSS sono state rimosse o armonizzate.
Sono stati rimossi i collegamenti specifici di Wikipedia che non portano a un articolo o una categoria (come "Redlink", "collegamenti alla pagina di modifica", "collegamenti a portali"). Ogni collegamento esterno ha un'icona FontAwesome aggiuntiva. Oltre ad alcuni piccoli cambiamenti di design, sono stati rimossi i media container, le mappe, i box di navigazione, le versioni vocali e i geoformati.

Notare che Poiché il dato contenuto viene automaticamente prelevato da Wikipedia in un determinato momento, una verifica manuale è stata e non è possibile. Pertanto LinkFang.org non garantisce l'accuratezza e l'attualità del contenuto acquisito. Se ci sono informazioni che al momento sono sbagliate o che hanno una visualizzazione imprecisa, non esitate a Contattaci: e-mail.
Guarda anche: Impronta & Politica sulla riservatezza.