Movatterモバイル変換


[0]ホーム

URL:


Vai al contenuto
WikipediaL'enciclopedia libera
Ricerca

File Transfer Protocol

Da Wikipedia, l'enciclopedia libera.

IlFile Transfer Protocol (FTP) è unprotocollo di comunicazione usato per iltrasferimento di file da un server a un client su unarete informatica. Il protocollo FTP è basato su un'architettura di tipo client-server, tenendo separati il controllo e le connessioni di dati tra il client e il server.[1] Gli utenti di un FTP possono autenticarsi con un protocollo di registrazione in testo semplice, tipicamente sotto forma di nome utente e password, ma possono connettersi in maniera anonima se il server è configurato appositamente. Dal momento che FTP trasmette le credenziali in chiaro, e inoltre che non dispone di meccanismi di autenticazione del server presso il client, FTP è spesso reso sicuro con un sostratoSSL/TLS, definendo una variante del protocollo chiamataFTPS. Un altro simile protocollo sicuro è il cosiddettoSSH File Transfer Protocol (SFTP) che a dispetto del nome è un protocollo tecnologicamente diverso.

Le prime applicazioni di FTP furonoprogrammi a riga di comando sviluppati prima dell'avvento dell'interfaccia grafica, e sono ancora distribuite con la maggior parte dei sistemi operativiWindows,Unix eLinux.[2][3] Un client FTP è stato integrato neibrowser, dove si potevano navigare i server FTP col prefissoftp://. Tuttavia, nel 2021, il supporto a FTP fu dismesso da Google Chrome e Firefox,[4][5] in quanto è ormai superato dalle alternative più sicure SFTP e FTPS, nonostante nessun navigatore abbia implementato questi protocolli.[6][7]

Storia

[modifica |modifica wikitesto]

FTP è uno dei primi protocolli definiti dellaRete Internet e ha subito una lunga evoluzione negli anni. La prima specifica, sviluppata presso ilMIT, risale al1971[8]. L'attuale specifica fa riferimento all'RFC 959[9].

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

  • Promuovere la condivisione difile (programmi o dati)
  • Incoraggiare l'uso indiretto o implicito dicomputer remoti.
  • Risolvere in maniera trasparente incompatibilità tra differenti sistemi di stoccaggio file trahost.
  • Trasferire dati in maniera affidabile ed efficiente.

Descrizione

[modifica |modifica wikitesto]

Modello

[modifica |modifica wikitesto]
Modello FTP
Modello FTP

Dove:

  • PI (protocol interpreter) è l'interprete del protocollo, utilizzato da client (User-PI) e server (Server-PI) per lo scambio di comandi e risposte. In gergo comune ci si riferisce a esso come "canale comandi".
  • DTP (data transfer process) è il processo di trasferimento dati, utilizzato da client (User-DTP) e server (Server-DTP) per lo scambio di dati. In gergo comune ci si riferisce a esso come "canale dati".

Funzionamento generale

[modifica |modifica wikitesto]

FTP, a differenza di altri protocolli come per esempioHTTP, utilizza dueconnessioni separate per gestire comandi e dati. Unserver FTP generalmente rimane in ascolto sullaporta 21TCP a cui si connette ilclient. 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 unfile) richiede l'apertura del canale dati, che può essere di due tipi:

  • In un canale dati di tipoattivo 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 comandiPORT oEPRT, a seconda del protocollo di rete utilizzato (in genereIPv4 oIPv6).
  • In un canale dati di tipopassivo 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 comandiPASV oEPSV, a seconda del protocollo di rete utilizzato (in genereIPv4 oIPv6).

Sia il canale comandi, sia il canale dati sono delle connessioniTCP; FTP crea un nuovo canale dati per ogni file trasferito all'interno dellasessione 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 suofilesystem e i file che lo popolano, tra cui:

  • Download/upload di file.
  • Resume di trasferimenti interrotti.
  • Rimozione e rinomina di file.
  • Creazione didirectory.
  • Navigazione tra directory.

FTP fornisce inoltre un sistema diautenticazione 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 nessunapassword di accesso e che lo stesso abbia privilegi che sono generalmente di "sola lettura".

Comandi

[modifica |modifica wikitesto]

Lista dei comandi definiti nellaRFC 959[9].

Comandi
NomeComandoParametriDescrizione
AbortABOR Interrompe trasferimento dati.
AccountACCT<account-information>Informazioni account (raramente usato).
AllocateALLO<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 directoryCDUP Va alla parent directory.
Change working directoryCWD<pathname>Cambia directory corrente.
DeleteDELE<pathname>Cancella file.
HelpHELP<command>Restituisce la lista dei comandi accettati dal server. Con argomento fornisce spiegazioni riguardo al comando specificato.
ListLIST<pathname>Restituisce il contenuto della directory specificata con metadati
Transfer modeMODE<mode-type>Imposta la modalità di trasferimento (S=stream,B=block,C=compressed).
Make directoryMKD<pathname>Crea directory.
Name listNLST<pathname>Restituisce i nomi dei file contenuti nella directory specificata.
NoopNOOP Non fa nulla (usato prevalentemente per prevenire disconnessioni per inattività prolungata).
PasswordPASS<password>Specifica la password dell'utente.
PassivePASV Inizializza connessione dati passiva.
Data portPORT<host-port>Inizializza connessione dati attiva.
Print working directoryPWD Ritorna nome della directory corrente.
LogoutQUIT Disconnette. Se un trasferimento è ancora in corso attende che termini prima di chiudere la sessione.
ReinitializeREIN Effettua il log-off dell'utente loggato.
RestartREST<marker>Riprende il trasferimento dall'offset indicato.
RetrieveRETR<pathname>Preleva file (da server a client).
Remove directoryRMD<pathname>Rimuove directory.
Rename fromRNFR<pathname>Rinomina (sorgente).
Rename toRNTO<pathname>Rinomina (destinazione).
Site parametersSITE<command>Manda comando specifico per il server (non standardizzato; varia tra implementazioni).
Structure mountSMNT<pathname>Monta struttura (raramente usato).
StatusSTAT<pathname>Restituisce statistiche riguardo al server. Con argomento lista il contenuto di una directory utilizzando il canale comandi.
StoreSTOR<pathname>Spedisce un file (da client a server).
Store uniqueSTOU<pathname>Spedisce un file (da client a server) utilizzando un nome univoco.
File structureSTRU<structure-code>Imposta la struttura dati (F=file,R=record,P=page). Praticamente inutilizzato. Il valore di default èF.
SystemSYST Restituisce il tipo di sistema operativo.
Representation typeTYPE<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 NameUSER<username>Specifica nome utente.

Codici di risposta

[modifica |modifica wikitesto]
  • 1xx: Risposta positiva preliminare. L'azione richiesta è incominciata ma ci sarà un'altra risposta a indicare che essa è effettivamente completata.
  • 2xx: Risposta positiva definitiva. L'azione richiesta è completata. Il client può ora mandare altri comandi.
  • 3xx: Risposta positiva intermedia. Il comando è stato accettato ma è necessario mandarne un secondo affinché la richiesta sia completata definitivamente.
  • 4xx: Risposta negativa temporanea. Il comando non è andato a buon fine ma potrebbe funzionare in un secondo momento.
  • 5xx: Risposta negativa definitiva. Il comando non è andato a buon fine e il client non dovrebbe più ripeterlo.
  • x0x: Errore di sintassi.
  • x1x: Risposta a una richiesta informativa.
  • x2x: Risposta relativa alla connessione.
  • x3x: Risposta relativa all'account e/o ai permessi.
  • x4x: Non meglio specificato.
  • x5x: Risposta relativa al file-system.

Problemi relativi alla sicurezza

[modifica |modifica wikitesto]

La specifica originale di FTP non prevede alcunacifratura 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: ambientiintranet).

Il problema è comune a diversi altri protocolli utilizzati prima della diffusione diSSL qualiHTTP,TELNET eSMTP. Per ovviare al problema è stata definita una nuova specifica che aggiunge al protocollo FTP originale un layer di cifraturaSSL/TLS più una nuova serie di comandi e codici di risposta.Il protocollo prende il nome diFTPS ed è definito nellaRFC-4217.Da non confondersi conSFTP che è comunque una valida alternativa per ovviare al problema descritto.

Applicazioni che utilizzano FTP

[modifica |modifica wikitesto]

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

Tuttavia neisistemi operativi, in genere, si può effettuare l'accesso anche tramiteriga di comando.

Server FTP

[modifica |modifica wikitesto]

Alcuni server FTP popolari sono[10]:

  • FileZilla Server (Windows e Linux)
  • Titan FTP Server[11] (Windows)
  • Pure-FTPd (Unix)
  • VsFTPd (Unix)
  • ProFTPd (Unix)

Note

[modifica |modifica wikitesto]
  1. ^ B.A. Forouzan,TCP/IP: Protocol Suite, 1st, New Delhi, India, Tata McGraw-Hill Publishing Company Limited, 2000.
  2. ^ Charles M. Kozierok,The TCP/IP Guide v3.0, sutcpipguide.com, 2005.
  3. ^ Tamara Dean,Network+ Guide to Networks, Delmar, 2010, pp. 168-171.
  4. ^(EN) Manuel Vonau,Firefox follows in Chrome's footsteps and drops FTP support (APK Download), suAndroid Police, 7 luglio 2021.URL consultato il 12 luglio 2021.
  5. ^Remove FTP support - Chrome Platform Status, suchromestatus.com.URL consultato il 2 settembre 2021.
  6. ^(EN) Written by,Firefox is dropping FTP support, suSophos News, 23 marzo 2020.URL consultato il 13 ottobre 2023.
  7. ^(EN) Benj Edwards,Chrome and Firefox Killed FTP Support: Here's an Easy Alternative, suHow-To Geek, 14 luglio 2022.URL consultato il 13 ottobre 2023.
  8. ^(EN)RFC 114 — A FILE TRANSFER PROTOCOL, sudatatracker.ietf.org,Internet Engineering Task Force.
  9. ^ab(EN)RFC 959 — FILE TRANSFER PROTOCOL (FTP), sudatatracker.ietf.org,Internet Engineering Task Force.
  10. ^4 Popular FTP Servers Reviewed | TechWench, sutechwench.com.URL consultato il 4 aprile 2019.
  11. ^SFTP Server Software For Windows, suTitanFTP.com.URL consultato il 5 novembre 2019(archiviato dall'url originale il 19 agosto 2013).

Bibliografia

[modifica |modifica wikitesto]

Voci correlate

[modifica |modifica wikitesto]

Altri progetti

[modifica |modifica wikitesto]

Altri progetti

Collegamenti esterni

[modifica |modifica wikitesto]
V · D · M
Suite di protocolli Internet
Livello di applicazioneFTP ·HTTP ·HTTP/2 ·HTTP/3 ·HTTPS ·NNTP ·DHCP ·DNS ·SMTP ·POP3 ·IMAP ·Telnet ·SSH ·SFTP ·TFTP ·IRC ·SNMP ·VoIP ·SIP ·RTP ·RTSP ·Rsync ·HSRP ·RIP ·BGP ·IGRP ·altro..
Livello di trasportoTCP ·UDP ·SCTP ·DCCP ·altro..
Livello di reteIP (IPv4 ·IPv6) ·ICMP (ICMPv6) ·IGMP ·IPsec ·OSPF ·altro..
Livello di accesso alla rete (LLC ·MAC)ARP ·RARP ·NDP ·PPP ·SLIP ·Ethernet ·Token ring ·Token bus ·WiFi ·Powerline ·ATM ·SPB ·MPLS ·FDDI ·HSDPA ·WiMAX ·altro..
Controllo di autoritàLCCN(ENsh95000465 ·GND(DE4268371-3 ·J9U(EN, HE987007530226005171
Estratto da "https://it.wikipedia.org/w/index.php?title=File_Transfer_Protocol&oldid=143907909"
Categorie:
Categorie nascoste:

[8]ページ先頭

©2009-2025 Movatter.jp