File Transfer Protocol: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
nella definizione del protocollo (primo paragrafo), ho modificato l'espressione "trasmissione di dati" in "trasmissione di file", che trovo molto più pertinente, oltre che coerente con la definizione Wikipedia in lingua inglese.
fix
 
(18 versioni intermedie di 14 utenti non mostrate)
Riga 1:
Il '''File Transfer Protocol''' ('''FTP''') è un [[protocollo di comunicazione]] usato per il [[trasferimento di file]] da un server a un client su una [[rete informatica]]. Il protocollo FTP è basato su un'[[Sistema client/server|architettura di tipo client-server]], tenendo separati il controllo e le connessioni di dati tra il client e il server.<ref name="for">{{Cita libro|cognome=Forouzan|nome=B.A.|anno=2000|titolo=TCP/IP: Protocol Suite|edizione=1st|città=New Delhi, India|editore=Tata McGraw-Hill Publishing Company Limited}}</ref> 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 sostrato [[Transport Layer Security|SSL/TLS]], definendo una variante del protocollo chiamata [[FTPS]]. Un altro simile protocollo sicuro è il cosiddetto [[SSH File Transfer Protocol]] (SFTP) che a dispetto del nome è un protocollo tecnologicamente diverso.
'''File Transfer Protocol''' ('''FTP''') (''protocollo di trasferimento file''), in [[informatica]] e nelle [[telecomunicazioni]],
è un [[Protocollo (informatica)|protocollo]] di [[Livello di applicazione|livello applicativo]] per la [[trasmissione (telecomunicazioni)|trasmissione]] di [[file]] tra [[host]]
basato su [[Transmission Control Protocol|TCP]] e con [[Sistema client/server|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 FTP|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]].
 
Le prime applicazioni di FTP furono [[Interfaccia a riga di comando|programmi a riga di comando]] sviluppati prima dell'avvento dell'[[interfaccia grafica]], e sono ancora distribuite con la maggior parte dei sistemi operativi [[Windows]], [[Unix]] e [[Linux]].<ref name="tcpip">{{cita web|cognome=Kozierok |nome=Charles M. |anno=2005 |titolo=The TCP/IP Guide v3.0 |url=http://www.tcpipguide.com/free/t_FTPOverviewHistoryandStandards.htm |editore=Tcpipguide.com}}</ref><ref>{{Cita libro|autore=Tamara Dean|titolo=Network+ Guide to Networks|anno=2010|editore=Delmar|pp=168-171}}</ref> Un client FTP è stato integrato nei [[browser]], dove si potevano navigare i server FTP col prefisso <code>ftp://</code>. Tuttavia, nel 2021, il supporto a FTP fu dismesso da Google Chrome e Firefox,<ref name=":0">{{Cita web|cognome=Vonau|nome=Manuel|data=7 luglio 2021|titolo=Firefox follows in Chrome's footsteps and drops FTP support (APK Download)|url=https://www.androidpolice.com/2021/07/14/firefox-90-fully-removes-ftp-support-and-reorganizes-some-settings-apk-download/|accesso=12 luglio 2021|sito=Android Police|lingua=en}}</ref><ref name="chromestatus">{{Cita web|titolo=Remove FTP support - Chrome Platform Status|url=https://chromestatus.com/feature/6246151319715840|accesso=2 settembre 2021}}</ref> in quanto è ormai superato dalle alternative più sicure SFTP e FTPS, nonostante nessun navigatore abbia implementato questi protocolli.<ref>{{Cita web|cognome=by |nome=Written |data=23 marzo 2020 |titolo=Firefox is dropping FTP support |url=https://news.sophos.com/en-us/2020/03/23/firefox-is-dropping-ftp-support/ |accesso=13 ottobre 2023 |sito=Sophos News |lingua=en}}</ref><ref>{{Cita web|cognome=Edwards |nome=Benj |data=14 luglio 2022 |titolo=Chrome and Firefox Killed FTP Support: Here's an Easy Alternative |url=https://www.howtogeek.com/744569/chrome-and-firefox-killed-ftp-support-heres-an-easy-alternative/ |accesso=13 ottobre 2023 |sito=How-To Geek |lingua=en}}</ref>
== Storia ==
FTP è uno dei primi protocolli definiti della [[Internet|Rete Internet]] e ha subito una lunga evoluzione negli anni. La prima specifica, sviluppata presso il [[Massachusetts Institute of Technology|MIT]], risale al [[1971]]<ref>{{IETF|114|A ([http:FILE TRANSFER PROTOCOL}}<//www.networksorcery.com/enp/protocol/ftp.htm RFC-114])ref>. L'attuale specifica fa riferimento all'[http://www.faqs.org/rfcs/rfc959.html[Request for Comments|RFC-]] 959]<ref name="rfc959">{{IETF|959|FILE TRANSFER PROTOCOL (FTP)}}</ref>.
 
Gli obiettivi principali di FTP descritti nella sua [[Request for Comments|RFC]] ufficiale furono:
 
Gli obiettivi principali di FTP descritti nella sua [[Request for Comments|RFC]] ufficiale furono:
* Promuovere la condivisione di [[file]] (programmi o dati)
* Incoraggiare l'uso indiretto o implicito di [[computer]] remoti.
Line 20 ⟶ 14:
=== Modello ===
[[File:FTP model.png|centre|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 ===
FTP, a differenza di altri protocolli come per esempio [[Hypertext Transfer Protocol|HTTP]], utilizza due [[connessione (informatica)|connessioni]] separate per gestire comandi e dati. Un [[server FTP]] generalmente rimane in ascolto sulla [[Porta (reti)|porta]] 21 [[Transmission Control Protocol|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.
 
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 [[IPv4|IPv6]]).
 
Line 35 ⟶ 29:
 
Un server FTP offre svariate funzioni che permettono al client di interagire con il suo [[filesystem]] e i file che lo popolano, tra cui:
 
* [[Download]]/[[upload]] di file.
* Resume di trasferimenti interrotti.
Line 45 ⟶ 38:
 
== Comandi ==
Lista dei comandi definiti nella [http://www.faqs.org/rfcs/RFC 959<ref name="rfc959.html" RFC-959]/>.
 
{{clear}}
{| class="wikitable" style="margin:auto;clear:both;"
|+ '''Comandi'''
|-
Line 94 ⟶ 87:
| <code>HELP</code>
| <code><command></code>
| RitornaRestituisce la lista dei comandi accettati dal server. Con argomento fornisce spiegazioni riguardo al comando specificato.
|-
| List
| <code>LIST</code>
| <code><pathname></code>
| ListaRestituisce il contenuto di unadella directory o le proprietà di unspecificata singolocon file.metadati
|-
| Transfer mode
Line 114 ⟶ 107:
| <code>NLST</code>
| <code><pathname></code>
| RitornaRestituisce ili nomenomi dei file dellacontenuti nella directory specificata.
|-
| Noop
Line 189 ⟶ 182:
| <code>STAT</code>
| <code><pathname></code>
| RitornaRestituisce statistiche riguardo al server. Con argomento lista il contenuto di una directory utilizzando il canale comandi.
|-
| Store
Line 209 ⟶ 202:
| <code>SYST</code>
| &nbsp;
| RitornaRestituisce il tipo di sistema operativo.
|-
| Representation type
Line 248 ⟶ 241:
 
== Server FTP ==
Alcuni server FTP popolari sono<ref>{{Cita web|url=https://www.techwench.com/4-popular-ftp-servers-reviewed/|titolo=4 Popular FTP Servers Reviewed {{!}} TechWench|accesso=4 aprile 2019-04-04}}</ref>:
* [[FileZilla Server]] (Windows e Linux)
* Titan FTP Server<ref>{{Cita web|url=https://www.https://titanftp.com//|titolo=SFTP Server Software For Windows|sito=TitanFTP.com|accesso=5 novembre 2019|urlarchivio=https://web.archive.org/web/20130819141428/http://https/|dataarchivio=19 agosto 2013|urlmorto=sì}}</ref> (Windows)
* Pure-FTPd (Unix)
* VsFTPd (Unix)
Line 256 ⟶ 249:
 
== Note ==
<references />
 
== Bibliografia ==
* {{IETF|959|FILE TRANSFER PROTOCOL (FTP)}}
* {{en}} RFC IETF|2228 |FTP Security Extensions}}
* {{en}} RFC IETF|2640 |Internationalization of FTPthe File Transfer Protocol}}
* {{en}} RFC IETF|4217 |Securing FTP with TLS}}
 
== Voci correlate ==
* [[Hypertext Transfer Protocol]] (HTTP)
* [[Protocollo (informatica)di comunicazione]]
* [[Protocollo di rete]]
 
== Altri progetti ==
{{interprogetto|preposizione=sul}}
 
== Collegamenti esterni ==
* {{Collegamenti esterni}}
* {{en}} RFC 959 FTP ([http://www.rfc.altervista.org/rfctradotte/rfc959_tradotta.txt traduzione in italiano])
* {{FOLDOC|File Transfer Protocol}}
* {{en}} RFC 2228 FTP Security Extensions
* {{cita web|url=http://www.rfc.altervista.org/rfctradotte/rfc959_tradotta.txt|titolo=FILE TRANSFER PROTOCOL (FTP) (protocollo per il trasferimento di file)|traduttore=ComiSAT|mese=aprile|anno=2003}}
* {{en}} RFC 2640 Internationalization of FTP
* {{cita web|lingua=en|url=https://titanftp.com/2021/02/23/whats-the-difference-ftp-sftp-and-ftp-s/|titolo=What’s the Difference Between FTP and SFTP?|sito=Titan FTP|data=23 febbraio 2021|urlarchivio=https://web.archive.org/web/20230313143536/https://titanftp.com/2021/02/23/whats-the-difference-ftp-sftp-and-ftp-s/}}
* {{en}} RFC 4217 Securing FTP with TLS
* {{en}}cita [web|lingua=en|url=https://titanftp.com/2018/0508/1823/whatswhat-is-the-difference-ftpbetween-sftpactive-and-ftppassive-sftp/|titolo=What is the Difference Between FTPActive and SFTP]Passive FTP?|sito=Titan FTP|data=23 agosto 2018|urlarchivio=https://web.archive.org/web/20230328113459/https://titanftp.com/2018/08/23/what-is-the-difference-between-active-and-passive-ftp/}}
*{{en}} [https://titanftp.com/2018/08/23/what-is-the-difference-between-active-and-passive-ftp/ Difference Between Active and Passive FTP]
* {{en}} [//servertest.online/ftp Test di FTP Server Online]
 
{{IPstack}}