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.
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
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:
* 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
{{clear}}
{|
|+ '''Comandi'''
|-
Line 94 ⟶ 87:
| <code>HELP</code>
| <code><command></code>
|
|-
| List
| <code>LIST</code>
| <code><pathname></code>
|
|-
| Transfer mode
Line 114 ⟶ 107:
| <code>NLST</code>
| <code><pathname></code>
|
|-
| Noop
Line 189 ⟶ 182:
| <code>STAT</code>
| <code><pathname></code>
|
|-
| Store
Line 209 ⟶ 202:
| <code>SYST</code>
|
|
|-
| 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
* [[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/
* Pure-FTPd (Unix)
* VsFTPd (Unix)
Line 256 ⟶ 249:
== Note ==
<references />
== Bibliografia ==
* {{IETF|959|FILE TRANSFER PROTOCOL (FTP)}}
== Voci correlate ==
* [[Hypertext Transfer Protocol]] (HTTP)
* [[Protocollo
* [[Protocollo di rete]]
== Altri progetti ==
{{interprogetto|preposizione=sul}}
== Collegamenti esterni ==
* {{Collegamenti esterni}}
* {{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
* {{
{{IPstack}}
|