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">{{citeCita booklibro|lastcognome=Forouzan|firstnome=B.A.|yearanno=2000|titletitolo=TCP/IP: Protocol Suite|editionedizione=1st|___locationcittà=New Delhi, India|publishereditore=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.
Le prime applicazion 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">{{citecita web |lastcognome=Kozierok |firstnome=Charles M. |yearanno=2005 |titletitolo=The TCP/IP Guide v3.0 |url=http://www.tcpipguide.com/free/t_FTPOverviewHistoryandStandards.htm |publishereditore=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">{{CiteCita web|lastcognome=Vonau|firstnome=Manuel|datedata=7 luglio 2021-07-07|titletitolo=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/|access-dateaccesso=12 luglio 2021-07-12|websitesito=Android Police|languagelingua=en-US}}</ref><ref name="chromestatus">{{CiteCita web|titletitolo=Remove FTP support - Chrome Platform Status|url=https://chromestatus.com/feature/6246151319715840|access-dateaccesso=2 settembre 2021-09-02|website=www.chromestatus.com}}</ref> in quanto è ormai superato dalle alternative più sicure SFTP e FTPS, nonostante nessun navigatore abbia implementato questi protocolli.<ref>{{CiteCita web |lastcognome=by |firstnome=Written |datedata=2020-03-23 marzo 2020 |titletitolo=Firefox is dropping FTP support |url=https://news.sophos.com/en-us/2020/03/23/firefox-is-dropping-ftp-support/ |access-dateaccesso=2023-10-13 ottobre 2023 |websitesito=Sophos News |languagelingua=en-US}}</ref><ref>{{CiteCita web |lastcognome=Edwards |firstnome=Benj |datedata=2022-07-14 luglio 2022 |titletitolo=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/ |access-dateaccesso=13 ottobre 2023-10-13 |websitesito=How-To Geek |languagelingua=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 FILE TRANSFER PROTOCOL}}</ref>. L'attuale specifica fa riferimento all'[[Request for Comments|RFC]] 959<ref name="rfc959">{{IETF|959|FILE TRANSFER PROTOCOL (FTP)}}</ref>.
* 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]]).
== 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)
|