TFTP ist die Abkürzung für Trivial File Transfer Protocol und ist ein sehr einfaches Dateiübertragungsprotokoll. TFTP ist der Nachfolger von EFTP (Easy File Transfer Protocol), auf dessen Basis das Trivial File Transfer Protocol aufbaut, und der Vorgänger von FTP, dem File Transfer Protokol. Es wurde im Jahre 1980 entwickelt.

Das Protokoll ist einfach/simpel zu implementieren und besitzt nur einen geringen Speicherverbrauch. Es unterstützt nur das Lesen und Schreiben von Dateien, einige Funktionen die man aus FTP kennt, wie z.B. eine Rechtevergabe oder Benutzerauthentifizierung, besitzt das Trivial File Transfer Protocol nicht.

Auch bei der Übertragung der Daten gibt es Unterschiede zwischen TFTP und FTP. Während FTP ein verbindungsorientiertes Transportprotokoll (TCP) erfordert, findet der Datenaustausch bei TFTP über ein verbindungsloses Protokoll wie UDP statt.

TFTP wurde wie schon gesagt bewusst einfach gehalten. Eingesetzt werden sollte es nämlich für das Laden von Betriebssystemen oder Konfigurationen über das Netzwerk. Unterstützt werden dafür drei Übertragungsmodi: „netascii“, „octet“ und „mail“. Zu beachten ist, dass die Maximalgröße der Daten bei 32 MB im Original-Protokoll liegt. Allerdings wurde diese Grenze auf 4 GB erweitert, bzw. wenn der Server und Client „block number wraparound“ unterstützt, gibt es keine Größenbeschränkung.

Da TFTP keine Sicherheits-Features besitzt, ist der Einsatz des Protokolls in öffentlichen Netzen, wie z.B. dem Internet, gefährlich. TFTP sollte generell nur in privaten, lokalen Netzwerken eingesetzt werden.
Doch nicht nur die übertragenen Daten sind mit TFTP nicht immer sicher, das Protokoll selbst wird von dem einen oder anderen Schädling missbraucht. So nutzen bestimmte Arten von Computerwürmern, wie z.B. der erfolgreiche W32.Blaster, den TFTP Server zu ihrer Verbreitung. Aus diesem Grund sollte dem Windows Service tftp.exe den Zugriff auf das Internet verweigert werden.

Ablauf einer TFTP Session

  • Host A sendet ein RRQ (read request – Schreibanfrage) Paket, dass den File Namen wie auch den Transfer Mode beinhaltet, zu Host B auf Port 69
  • Host B antwortet darauf mit einem ACK (Acknowledgement) Paket.
  • Daraufhin schickt Host A seinen Daten-Pakete los zum Ziel Host B. Host B antwortet im Gegenzug mit nummerierten ACK-Pakete für jedes erhaltene DATA-Paket.
  • Zum Schluss wird ein letztes DATA Paket geschickt, dass kleiner sein muss, als die davor verschickten Pakete. Unter gegebenen Umständen beträgt die Größe des Final-Data Paket genau 0 Bytes.