|  | 

Segger emFTP

FTP significa File Transfer Protocol (Protocollo di Trasferimento File). È il meccanismo di base per spostare file tra macchine su reti basate su TCP/IP, come Internet. L’FTP è un protocollo client/server, il che significa che una macchina (il client) avvia il trasferimento contattando un’altra macchina (il server) ed effettuando delle richieste. Il server deve essere operativo prima che il client invii le sue richieste. In genere, un client comunica con un server alla volta, mentre la maggior parte dei server è progettata per gestire più client simultanei.

Caratteristiche principali

  • Occupazione di memoria (footprint) ridotta.
  • Supporto per connessioni multiple.
  • Indipendente dal file system: è possibile utilizzare qualsiasi file system.
  • Indipendente dallo stack TCP/IP: è possibile utilizzare qualsiasi stack dotato di socket.
  • Include un progetto per Microsoft Visual Studio per l’esecuzione su PC.
  • Supporto per FTPS e FTPES.

Utilizzo delle Risorse

Utilizzo della ROM

L’utilizzo della ROM dipende dalle opzioni e dalla versione del compilatore, nonché dalla CPU utilizzata.

  • Sistema ARM7: Circa 6,6 KByte.
  • Sistema Cortex-M3: Circa 5,6 KByte.

Utilizzo della RAM

Quasi tutta la RAM è utilizzata dagli stack dei task. Il consumo totale può essere stimato come segue: Utilizzo RAM = 0,2 KB + Task Genitore (0,5 KB) + (Numero di Task Figli * 1,8 KB). Esempio: Un server che accetta 1 sola connessione richiede circa 2,5 KByte di RAM.


Requisiti

  • Stack TCP/IP: Ottimizzato per emNet, ma compatibile con qualsiasi stack conforme agli standard RFC.
  • Multitasking: Il server FTP deve essere eseguito come thread separato; è quindi necessario un sistema operativo RTOS (come embOS).

Fondamenti del protocollo FTP

L’FTP è un protocollo insolito poiché utilizza due porte: una porta “Data” (dati) e una porta “CMD” (comandi). Tradizionalmente, la porta 21 è per i comandi e la porta 20 per i dati.

Modalità Attiva (Active Mode)

In modalità attiva, il client si connette dalla porta P alla porta 21 del server e invia il comando PORT P+1. Il server apre quindi una connessione dalla sua porta locale 20 verso la porta P+1 del client per il trasferimento dei dati.

Modalità Passiva (Passive Mode)

In modalità passiva, il client invia il comando PASV. Il server risponde con l’indirizzo di una porta su cui è in ascolto. Il client stabilisce quindi la connessione dati verso tale porta. Questa modalità è preferibile per superare le restrizioni dei firewall lato client.


Protocolli FTP Sicuri

Mentre l’FTP standard trasmette dati e comandi in testo semplice, esistono vari modi per proteggere la connessione tramite SSL/TLS:

  1. FTPS (Modalità Implicita): L’intera sessione è avvolta in una connessione sicura fin dall’inizio, solitamente sulla porta 990.
  2. FTPES (Modalità Esplicita): Il client inizia su una porta standard (21) e richiede esplicitamente il passaggio a una connessione sicura tramite comandi specifici.
  3. SFTP (SSH FTP): Non è correlato all’FTP originale; è un’estensione del protocollo SSH (Secure Shell) e opera su un unico canale sicuro.

Codici di Risposta FTP

Ogni comando riceve un codice a 3 cifre:

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

Comandi FTP Supportati

Il server emFTP implementa i comandi fondamentali definiti dalla RFC 959, tra cui:

  • LIST / NLST: Elenco file.
  • RETR / STOR: Scarica/Carica file.
  • CWD / CDUP: Navigazione cartelle.
  • MKD / RMD: Creazione/Rimozione cartelle.
  • DELE: Eliminazione file.
  • USER / PASS: Autenticazione.

Server FTP Gratuito per Windows, Mac, Linux

SEGGER fornisce un’applicazione server FTP gratuita per host, che utilizza lo stesso codice (“engine”) disponibile per le applicazioni embedded. Questo permette di valutare il comportamento del software su PC con la garanzia che sarà identico una volta implementato sul target finale. È compatibile con qualsiasi client standard come FileZilla, Firefox, Chrome o riga di comando.

Articoli simili