2. Panoramica del protocollo (Overview of the Protocol)
Ogni trasferimento inizia con una richiesta di lettura o scrittura di un file, che serve anche come richiesta di connessione. Se il server concede la richiesta, la connessione viene aperta e il file viene inviato in blocchi di lunghezza fissa di 512 byte. Ogni pacchetto di dati contiene un blocco di dati e deve essere riconosciuto da un pacchetto di riconoscimento prima che il pacchetto successivo possa essere inviato. Un pacchetto di dati di meno di 512 byte segnala la terminazione di un trasferimento. Se un pacchetto viene perso nella rete, il destinatario previsto andrà in timeout e può ritrasmettere il suo ultimo pacchetto (che può essere dati o un riconoscimento), causando così al mittente del pacchetto perso di ritrasmettere quel pacchetto perso. Il mittente deve tenere a portata di mano un solo pacchetto per la ritrasmissione, poiché il riconoscimento lock-step garantisce che tutti i pacchetti più vecchi siano stati ricevuti. Notare che entrambe le macchine coinvolte in un trasferimento sono considerate mittenti e ricevitori. Una invia dati e riceve riconoscimenti, l'altra invia riconoscimenti e riceve dati.
La maggior parte degli errori causa la terminazione della connessione. Un errore viene segnalato inviando un pacchetto di errore. Questo pacchetto non viene riconosciuto e non viene ritrasmesso (cioè, un server o utente TFTP può terminare dopo aver inviato un messaggio di errore), quindi l'altro capo della connessione potrebbe non riceverlo. Pertanto, i timeout vengono utilizzati per rilevare tale terminazione quando il pacchetto di errore è stato perso. Gli errori sono causati da tre tipi di eventi: non essere in grado di soddisfare la richiesta (ad esempio, file non trovato, violazione dell'accesso o nessun utente del genere), ricevere un pacchetto che non può essere spiegato da un ritardo o duplicazione nella rete (ad esempio, un pacchetto formato in modo errato) e perdere l'accesso a una risorsa necessaria (ad esempio, disco pieno o accesso negato durante un trasferimento).
TFTP riconosce solo una condizione di errore che non causa terminazione: la porta di origine di un pacchetto ricevuto è errata. In questo caso, un pacchetto di errore viene inviato all'host di origine.
Questo protocollo è molto restrittivo, al fine di semplificare l'implementazione. Ad esempio, i blocchi di lunghezza fissa rendono l'allocazione semplice, e il riconoscimento lock-step fornisce il controllo di flusso ed elimina la necessità di riordinare i pacchetti di dati in arrivo.