FTP sta per File Transfer Protocol. È il meccanismo di base per spostare file tra macchine su reti basate su TCP/IP come Internet. FTP è un protocollo client/server, il che significa che una macchina, il client, inizia un trasferimento di file contattando un’altra macchina, il server e facendo richieste. Il server deve essere operativo prima che il client inizi le sue richieste. In generale, un client comunica con un server alla volta, mentre la maggior parte dei server è progettata per funzionare con più client simultanei.

Caratteristiche principali

  • Ridotta occupazione di memoria
  • Supporto di più connessioni
  • Indipendente dal file system: può essere utilizzato qualsiasi file system
  • Indipendente dallo stack TCP/IP: può essere utilizzato qualsiasi stack con socket
  • Progetto per eseguibile su PC per Microsoft Visual Studio incluso
  • FTPS e FTPES supportati

Server FTP gratuito per Windows, Mac, Linux

Il server FTP SEGGER è un’applicazione gratuita e completa. Consente di valutare facilmente il nucleo emFTPServer.

Le applicazioni host (disponibili per Windows, Linux e macOS) utilizzano lo stesso identico “motore”, quindi lo stesso identico codice emFTPServer disponibile per le applicazioni embedded. In questo modo è garantito che si comportino allo stesso modo quando vengono eseguite su un host come quando vengono eseguite su un target embedded.

Non esitate a utilizzare Wireshark per annusare la comunicazione tra il server e qualsiasi client FTP. emFTPServer è compatibile con qualsiasi client FPC conforme a RFC, dai browser come Firefox o Chrome ai client FTP dedicati come FileZilla fino ai semplici client della riga di comando come i client ftp in dotazione con la maggior parte dei sistemi operativi host. Le utilità fornite sono sia per la valutazione che per l’uso “produttivo”, il che significa che sei libero di usarle se le trovi utili.

Informazioni di base su FTP

Il File Transfer Protocol (FTP) è un protocollo di livello applicazione. FTP è un servizio insolito in quanto utilizza due porte, una porta “Dati” e una porta “CMD” (comando). Tradizionalmente queste sono la porta 21 per la porta di comando e la porta 20 per la porta dati. FTP può essere utilizzato in due modalità, attiva e passiva. A seconda della modalità, la porta dei dati non è sempre sulla porta 20.

Quando un client FTP contatta un server, viene stabilita una connessione TCP tra le due macchine. Il server esegue un’apertura passiva (una socket è in ascolto) quando inizia l’operazione; successivamente i client possono connettersi al server tramite aperture attive. Questa connessione TCP persiste finché il client mantiene una sessione con il server (solitamente determinata da un utente umano). Questa connessione viene quindi utilizzata per trasmettere comandi dal client al server e il server risponde al client. Questa connessione viene definita connessione di comando FTP.

I comandi FTP dal client al server consistono in brevi set di caratteri ASCII, seguiti da parametri di comando opzionali.

Ad esempio, il comando FTP per visualizzare la directory di lavoro corrente è PWD (Stampa directory di lavoro). Tutti i comandi vengono terminati da una sequenza di ritorno a capo (CRLF) (ASCII 10,13; o Ctrl-J, Ctrl-M). Le risposte dei server consistono in un codice a 3 cifre (in ASCII) seguito da un testo esplicativo. In generale, i codici nella serie 200 sono successi e quelli nella serie 500 sono errori. Consultare l’RFC per una guida completa ai codici di risposta. La maggior parte dei client FTP supporta una modalità dettagliata che consentirà all’utente di vedere questi codici mentre i comandi procedono.

Se il comando FTP richiede al server di spostare una grande quantità di dati (come un file), è necessaria una seconda connessione TCP per farlo. Questa viene definita connessione dati FTP (in contrapposizione alla connessione di comando precedentemente menzionata). In modalità attiva, la connessione dati viene aperta dal server nuovamente a un client in ascolto. In modalità passiva, il client apre anche la connessione dati. La connessione dati persiste solo per il trasporto dei dati necessari. Viene chiuso non appena vengono inviati tutti i dati.

Modalità attiva FTP

In modalità attiva FTP, il client si connette da una porta non privilegiata casuale P (P > 1023) alla porta di comando del server FTP, porta 21. Quindi, il client inizia ad ascoltare la porta P+1 e invia il comando FTP PORT P+1 al server FTP. Il server si riconnetterà quindi alla porta dati specificata del client dalla sua porta dati locale, che è la porta 20.

Modalità passiva FTP

In modalità passiva FTP, il client si connette da una porta non privilegiata casuale P (P > 1023) alla porta di comando del server FTP, porta 21. Contrariamente a una connessione FTP in modalità attiva in cui il client apre una porta passiva per la trasmissione dei dati e attende la connessione dal lato server, il client invia in modalità passiva il comando “PASV” al server e si aspetta una risposta con le informazioni sulla porta su cui il server sta ascoltando per la connessione dati.

Dopo aver ricevuto queste informazioni, il client si connette alla porta dati specificata del server dalla sua porta dati locale.

Diversi protocolli FTP sicuri

Con FTP (File Transfer Protocol) i comandi e il trasferimento dei dati avvengono in testo normale.

La protezione della connessione utilizzando SSL/TLS è disponibile in due modi diversi, FTPES e FTPS.

FTPS

Modalità implicita: La modalità implicita è ciò che ti viene tipicamente in mente quando si protegge un protocollo TCP stabilito utilizzando SSL/TLS semplicemente avvolgendo l’intero protocollo in una connessione sicura, simile a come viene fatto per HTTP => HTTPS. Per FTPS ciò significa che invece della ben nota porta 21 ora viene utilizzata la porta 990 e la connessione viene protetta tramite SSL/TLS dall’inizio. Qualsiasi transazione non sicura viene quindi semplicemente non compresa dalla connessione e viene scartata.

FTPES

Modalità esplicita: In modalità esplicita, il client inizia con una connessione standard non sicura sulla ben nota porta 21 e richiede esplicitamente un aggiornamento a una connessione sicura. Ciò comporta il vantaggio che la maggior parte dei firewall non blocca la porta standard 21 per consentire il successo delle operazioni Internet di base senza causare troppi problemi ai clienti quando si aggiunge la sicurezza altrimenti. Ciò consente inoltre al server di fornire sicurezza opzionale insieme a una connessione non sicura se necessario per le apparecchiature più vecchie. Naturalmente, il server può anche rifiutare il client se il client non richiede un aggiornamento della connessione.

SFTP

A differenza di FTPS e FTPES, il protocollo SFTP non si limita a racchiudere il protocollo FTP in un livello sicuro (sia direttamente dall’inizio o nel caso di FTPES in un momento definito durante una connessione in testo normale). SFTP sta per SSH FTP e non è correlato al protocollo FTP originale. È un’estensione del protocollo terminale SSH (Secure SHell) utilizzato principalmente nei sistemi Unix.

Codici di risposta FTP

Ogni comando FTP viene risposto da uno o più codici di risposta definiti in [RFC 959]. Una risposta è un riconoscimento (positivo o negativo) inviato dal server all’utente tramite la connessione di controllo in risposta ai comandi FTP. La forma generale di una risposta è un codice di completamento a 3 cifre (inclusi i codici di errore) seguito da Spazio, seguito da una riga di testo e terminato da ritorno a capo. I codici sono per l’uso da parte dei programmi e il testo è generalmente destinato agli utenti umani.

La prima cifra del codice di risposta definisce la classe di risposta. Ci sono 5 valori per la prima cifra:

  • 1yz: Risposta preliminare positiva
  • 2yz: Risposta di completamento positiva
  • 3yz: Risposta intermedia positiva
  • 4yz: Risposta di completamento negativa transitoria
  • 5yz: Risposta di completamento negativa permanente

La seconda cifra del codice di risposta definisce il gruppo della risposta.

  • x0z: Sintassi – Errori di sintassi, comandi sintatticamente corretti che non rientrano in nessuna categoria funzionale, comandi non implementati o superflui.  
  • x1z: Informazioni – Queste sono risposte a richieste di informazioni, come stato o aiuto.
  • x2z: Connessioni – Risposte relative alle connessioni di controllo e dati.
  • x3z: Autenticazione e contabilità – Risposte per il processo di login e le procedure di contabilità.x4z: Non ancora specificato.
  • x5z: Sistema di file – Queste risposte indicano lo stato del sistema di file del server rispetto al trasferimento richiesto o ad altre azioni del sistema di file.

La terza cifra dà un’informazione più fine e dettagliata del significato in ciascuna delle categorie di funzioni, specificate dalla secnoda cifra.