Il File Transfer Protocol (FTP), è un Protocollo per la trasmissione di dati tra host basato su TCP. FTP è uno dei primi protocolli definiti ed ha subito una lunga evoluzione negli anni. Gli obiettivi principali di FTP descritti nella sua RFC ufficiale sono: - Promuovere la condivisione di file (programmi o dati) - Incoraggiare l'uso indiretto o implicito di computer remoti. - Risolvere in maniera trasparente incompatibilità tra differenti sistemi di stoccaggio file tra host. - Trasferire dati in maniera affidabile ed efficiente. FTP, a differenza di altri protocolli come ad esempio HTTP, utilizza due connessioni separate per gestire comandi e dati. Un server FTP rimane tipicamente in ascolto sulla porta 21 TCP a cui si connette il client. La connessione da parte del client determinerà l'inizializzazione del canale comandi attraverso il quale client e server si scambieranno comandi e risposte. Lo scambio effettivo di dati (come ad esempio file) richiederà l'apertura del canale dati il quale può essere di due tipi. 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. - Rimozione e rinomina di file. - Creazione di directory. - Navigazione tra directory. FTP fornisce un sistema di autenticazione 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.