TFTP (Trivial File Transfer Protocol), il protocollo semplice per il trasferimento di file

Per consentire lo scambio di dati tra due sistemi informatici in rete è indispensabile una base di comprensione comune. Uno dei protocolli più semplici sviluppati a tale scopo è il Trivial File Transfer Protocol (TFTP), che ha giocato un ruolo importante in particolare agli inizi di Internet.

Cos’è il TFTP (Trivial File Transfer Protocol)?

Il Trivial File Transfer Protocol, in breve TFTP, è un protocollo del Client Server molto semplice, il quale regola il trasferimento di file nelle reti informatiche. Una prima specifica fu pubblicata nel giugno 1981 in RFC 783. Lo standard attuale è disponibile in RFC 1350, apparso nel 1992. Il protocollo TFTP si avvale di default dell’altrettanto minimalista protocollo di trasporto UDP (User Datagram Protocol), che prevede un trasferimento di dati tra le parti comunicanti senza un collegamento fisso. Comunque l’implementazione di TFTP è possibile anche sulla base di altri protocolli.

Il protocollo di trasferimento di file orientato ai pacchetti, parte della famiglia di protocolli TCP/IP, fu appositamente progettato con dimensioni ridotte per essere facile da implementare. Pertanto, descrive solo i metodi di lettura e scrittura per file o mail da un server. Un elenco di directory o l’assegnazione di diritti mediante chmod (come consentito dal più noto File Transfer Protocol (FTP)), non sono possibili con TFTP. Per le richieste, TFTP utilizza la porta 69. Successivamente, la comunicazione avviene mediante numeri di porte assegnati individualmente (tra 1024 e 65535), che il server TFTP trasmette al client richiedente in forma di TID (Transfer Identifiers).

N.B.

Molti sistemi operativi hanno già implementato client e server TFTP propri, impiegabili per il trasferimento di file mediante protocollo. Molte versioni di Linux e Windows (in particolare le edizioni server) offrono di default strumenti della riga di comando tftpd (server) e tftp (client). Inoltre, sono disponibili varie soluzioni di fornitori terzi, come il software open source Tftpd32, che include sia un server che un client.

Come funziona il protocollo TFTP

Il trasferimento di file tramite TFTP si basa sempre su una richiesta client, in cui viene richiesto l’accesso di scrittura o lettura. Questa richiesta serve anche come domanda di connessione, che viene concessa automaticamente quando il server accetta l’accesso. Successivamente, client o server inviano il rispettivo file in blocchi con una dimensione definita. Nelle prime versioni di protocollo si applicava ancora il valore fisso di 512 bytes; dal RFC 2348, server e client sono in grado di negoziare individualmente le dimensioni del blocco.

N.B.

Inizialmente, le dimensioni dei file inviati mediante TFTP erano limitate a 32 MB. Con RFC 2347, rilasciato nel 1998, il limite fu aumentato a 4 GB.

La spedizione ha luogo blocco per blocco; ogni blocco ricevuto va confermato attraverso un pacchetto specifico (“Acknowledgement”) prima che il successivo possa essere inviato. Un pacchetto dati di dimensioni ridotte rispetto a quella definita in byte indica la fine del trasferimento di file. Se un pacchetto viene perso durante il trasferimento, il destinatario riceve un timeout, in seguito al quale egli invia nuovamente l’ultimo pacchetto inviato. In questo modo, il mittente del pacchetto perso viene a sapere che è necessario ritrasferirlo. Gli errori emersi durante il trasferimento di file TFTP portano a pacchetti di errore che, nella maggior parte dei casi, concludono il trasferimento. Di seguito sono riportate tre possibili fonti di errore:

  • la richiesta non può essere evasa adeguatamente, ad esempio perché non è stato possibile trovare il file, in quanto l’utente non esiste o per via di una violazione d’accesso (file protetto, ecc.);
  • client o server ricevono un pacchetto che non può essere spiegato con un ritardo o una duplicazione in rete; ciò può verificarsi in caso di pacchetti malformati;
  • l’accesso ad una risorsa necessaria viene perso, ad esempio in assenza di spazio sufficiente sul disco rigido.

Come sono formati i pacchetti TFTP?

Il protocollo TFTP supporta complessivamente 5 tipi di pacchetti, i quali si annunciano mediante un proprio campo “Opcode” (che sta per Operation Code) a 16 bit con il rispettivo valore:

Opcode Tipo di pacchetto Descrizione
1 RRQ (Read request) Richiesta di accesso alla lettura
2 WRQ (Write request) Richiesta di accesso alla scrittura
3 DATA (Data) Pacchetto dati
4 ACK (Acknowledgment) Messaggio di conferma
5 ERROR (Error) Messaggio di errore

Tuttavia, il valore Opcode non è l’unico componente in cui la struttura dei tipi di pacchetti elencati si differenzia.

Struttura di pacchetti di accesso di lettura (RRQ) e scrittura (WRQ) TFTP

Le richieste d’iniziativa che un client TFTP invia per poter leggere (pacchetto RRQ) o scrivere (pacchetto WRQ) i file sul server TFTP si differenziano solo in merito al codice dell’operazione. Per il resto, i due tipi di pacchetto presentano il medesimo formato, come riportato di seguito:

Sia i messaggi RRQ che WRQ iniziano con il campo Opcode a 16 bit tipico del protocollo. Come mostra la prima tabella, i pacchetti RRQ sfruttano qui il valore “1”, mentre i pacchetti WRQ sono contrassegnati con il valore “2”. Segue una sequenza di bit in formato NetASCII di dimensione variabile; questa include il nome del file da leggere o inviare. La fine è caratterizzata da un campo di zeri a 8 bit.

N.B.

Il NetASCII è uno speciale formato ASCII a 8 bit che lascia indefiniti i caratteri di controllo usati raramente. Contiene l’intero blocco di 95 caratteri stampabili da x20 a x7E (32–126) e alcuni caratteri speciali (in particolare NUL, CR, LF).

Un’altra stringa di lunghezza variabile contiene infine l’informazione sulla modalità di trasferimento dei dati. Qui sono disponibili tre varianti “netascii”, “octet” (per il trasferimento di un file di formato a 8 bit) e “mail” (per il trasferimento di un indirizzo e-mail). Anche la fine di questo campo è contrassegnata dall’aggiunta di un gruppo di zeri a 8 bit.

Struttura dei pacchetti di dati TFTP (DATA)

I pacchetti DATA contengono i file da scambiare tra client e server. Dato che la trasmissione di questi file avviene in blocchi, un messaggio DATA TFTP contiene sempre solo una parte del file, ad eccezione di file la cui dimensione totale sia inferiore al valore predefinito di 512 byte o alla dimensione del blocco specificata individualmente. Il formato dei pacchetti di dati si presenta come segue:

Anche i pacchetti DATA iniziano con il campo Opcode a cui, in questo caso, è assegnato il valore “3”. La successiva sequenza a 16 bit caratterizza il numero del blocco dati, in cui il valore “1” funge da numero iniziale. Tale valore aumenta automaticamente di 1 ad ogni blocco dati ulteriore appartenente al file. Al contempo, i blocchi stessi si ritrovano nel campo dati di dimensioni tra 0 e 512 bytes (4096 bit) se server e client TFTP non hanno trattato altre dimensioni massime per i blocchi. Se la rispettiva dimensione massima viene completata, questo è un segno che il pacchetto DATA non contiene l’ultimo blocco dati del file.

Questo ultimo blocco, che contraddistingue la fine del trasferimento dati, è sempre inferiore di almeno un byte. Se il resto del file da trasferire presenta casualmente la medesima dimensione del blocco, il mittente è tenuto ad inviare un altro pacchetto con blocco dati vuoto.

Struttura dei pacchetti ACK del protocollo TFTP

Tutti i pacchetti WRQ e i pacchetti dati che non contraddistinguono la fine del trasferimento dati vengono confermati dal Trivial File Transfer Protocol con messaggi ACK, se la comunicazione funziona correttamente (tranne in caso di timeout).

N.B.

Le richieste di accesso di lettura a un file (pacchetti RRQ) non vengono confermate dai pacchetti ACK, ma da quelli DATA.

La struttura di questi messaggi di conferma molto semplici si presenta come segue:

I messaggi ACK della comunicazione protocollo TFTP sono composti dall’Opcode a 16 bit, che accetta il valore “4” e dal numero a 16 bit del blocco dati che il messaggio ACK conferma. Se si tratta di una risposta a una richiesta WRQ, il pacchetto ACK presenta il numero del blocco dati “0”.

Struttura dei messaggi di errore TFTP (ERROR)

I messaggi ERROR vengono inviati da client o server se nella comunicazione TFTP si verifica un errore. Di conseguenza, questi pacchetti di messaggi possono essere una possibile risposta a tutti i tipi di pacchetti già elencati. I pacchetti di errore sono sostanzialmente strutturati come segue:

Dopo l’Opcode (valore “5”), che occupa la prima posizione anche nei messaggi ERROR, segue un campo a 16 bit contenente il codice errore. Il valore “1” indica quindi per esempio che non è stato possibile trovare il relativo file, mentre il valore “6” svela al sistema ricevente che il file esiste già. Il successivo messaggio di errore aiuta l’utente a comprendere il problema. Anche per questo motivo, la stringa di caratteri con dimensioni variabili è tipica nel formato NetASCII. La conclusione è un campo di zeri a 8 bit.

Vantaggi e svantaggi di TFTP

TFTP convince in primo luogo per la sua semplicità. Il protocollo punta a consentire la scrittura e la lettura di file e svolge questo ruolo senza la necessità di creare una connessione tra client e server. Di conseguenza, non solo il protocollo TFTP è facile da implementare, ma consente anche un rapido trasferimento dei dati. I transfer Identifier (TID) e i numeri di blocchi di dati unici consentono l’arrivo a destinazione del rispettivo file completo.

La mancanza di una cifratura e di un meccanismo di autenticazione o controllo dell’accesso rende la spedizione di file sensibili mediante TFTP molto rischiosa; per questo si ricercano alternative più sicure come il più complesso FTP. Inoltre, non è ammesso eliminare e rinominare i file su tanti server TFTP.

Dove viene impiegato il Trivial File Transfer Protocol?

Il protocollo TFTP è strettamente legato al cosiddetto booting di rete (anche “bootstrapping”). In questa tecnica, particolarmente utilizzata negli anni ’80, un computer di rete ottiene e avvia il sistema operativo da un server centrale. In particolare per i terminal e le workstation senza disco rigido che non consentono l’installazione di un proprio sistema operativo, lo sviluppo e l’implementazione di TFTP sono stati decisivi. Il protocollo di trasferimento del file era supportato dal BOOTP pubblicato nel 1985, che consentiva ai client di rete di ottenere automaticamente l’indirizzo del server TFTP.

Oggi il Trivial File Transfer Protocol viene impiegato molto più raramente. Nelle reti i cui partecipanti dispongono ora di propri sistemi operativi, il metodo di avvio della rete può essere trovato solo isolato e in forma modificata. Ad esempio, installazioni di sistema, manutenzioni, aggiornamenti del firmware o scansioni antivirus possono aiutare a ridurre il sovraccarico amministrativo attraverso i cosiddetti sistemi operativi ausiliari. Anche nelle memorie ROM si trova implementato il TFTP, in quanto richiede un utilizzo di risorse limitate per via della mancanza di connessione del protocollo. Inoltre, i server TFTP vengono utilizzati per proteggere le configurazioni e le immagini di sistema di router e switch Cisco e per archiviare i record di dati tariffari presso i sistemi telefonici Siemens.

Hai trovato questo articolo utile?
Per offrirti una migliore esperienza di navigazione online questo sito web usa dei cookie, propri e di terze parti. Continuando a navigare sul sito acconsenti all’utilizzo dei cookie. Scopri di più sull’uso dei cookie e sulla possibilità di modificarne le impostazioni o negare il consenso.
Page top