File Transfer Protocol: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
FrescoBot (discussione | contributi)
fix
 
(24 versioni intermedie di 18 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 [[dati]] 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]]).
 
Sia il canale comandi, sia il canale dati sono delle connessioni [[Transmission Control Protocol|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:
 
* [[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
|-
| TrasferTransfer mode
| <code>MODE</code>
| <code><mode-type></code>
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}}