Familie: | UDP/IP | ||||||||||||||||||||||||
Einsatzgebiet: | Laden von Betriebssystemen und anderen Daten über das Netzwerk | ||||||||||||||||||||||||
Ports: | 69/UDP | ||||||||||||||||||||||||
|
Das Trivial File Transfer Protocol (TFTP) ist ein sehr einfaches Dateiübertragungsprotokoll. Es wurde 1981[1] auf der Basis von EFTP entwickelt. TFTP unterstützt lediglich das Lesen oder Schreiben von Dateien. Nicht vorhanden sind viele Funktionen des mächtigeren FTP wie etwa Rechtevergabe mittels chmod, Anzeigen der vorhandenen Dateien oder Benutzerauthentifizierung.
Im Gegensatz zu FTP, das ein verbindungsorientiertes Transportprotokoll erfordert, wird TFTP normalerweise über ein verbindungsloses Protokoll wie UDP betrieben. Allerdings gibt es die Ähnlichkeit zu FTP, dass die Daten nicht in der gleichen Verbindung wie die Steuerungskommandos übertragen werden. Der Client fragt eine Aktion (lesen/schreiben) zwar auf dem Port 69 an, aber der Server sendet nicht mit Port 69 als Quellport, wie man es beispielsweise von DNS kennt (mit Port 53). Client und Server wählen vielmehr sogenannte Transfer IDentifiers (TID). Diese TIDs entsprechen dem UDP-Port auf der jeweiligen Seite und liegen im Bereich von 1024 bis 65535.
Motivation für die Entwicklung von TFTP war das Laden von Betriebssystemen oder Konfigurationen über das Netzwerk. Da dies meist von einer Firmware oder einem kleinen Bootloader aus durchgeführt wird, sind das verbindungsorientierte TCP und das darauf aufsetzende FTP viel zu komplex für diesen Zweck. TFTP wurde dagegen bewusst einfach gehalten mit den Funktionen:
Eine Kommunikation könnte ungefähr so aussehen:
Client Port | Kommando | Server Port |
---|---|---|
32534 | – RRQ filexxx → | 69 |
32534 | ← DATA 'xyz’ – | 1765 |
32534 | – ACK → | 1765 |
32534 | ← DATA 'xyz’ – | 1765 |
32534 | – ACK → | 1765 |
32534 | ← DATA 'xyz’ – | 1765 |
32534 | … | 1765 |
32534 | … | 1765 |
32534 | – Error → | 1765 |
In diesem Beispiel ist das Lesen vom Server fehlgeschlagen, weil etwa auf dem Client kein Speicherplatz mehr zur Verfügung stand.
Die Firmware von netzwerkfähigen Geräten, beispielsweise Personal Computer, bietet meist die Möglichkeit eines Netzboots, das heißt das Starten des Gerätes über ein Netzwerk. Dies kann entweder direkt über die Eingabe von Dateiname und IP-Adresse (inklusive Subnetzmaske und Gateway) geschehen, oder über ein eigens dafür geschaffenes Protokoll wie BOOTP oder PXE. Nach dem Initialisieren der Netzwerkkarte sucht die Firmware in letzterem Fall meist via DHCP selbständig einen Server und lädt die entsprechende Datei herunter. Diese Datei entspricht dem ersten Teil des zu startenden Betriebssystems, kann z. B. der Kernel sein. Sobald die Datei per TFTP in den Arbeitsspeicher des Gerätes übertragen wurde, wird diese ausgeführt und holt sich im Anschluss weitere benötigte Dateien ebenfalls per Netzwerk auf das im Netzboot befindliche Gerät.
Beispiele für TFTP-fähige Firmware:
Bei der Verwendung von TFTP sind nur verbindungslose Protokolle erforderlich, es kann daher mit nur wenig Aufwand in einem ROM implementiert werden. Zudem müssen durch einen Netzboot gestartete Geräte keine zusätzlichen Datenspeicher wie Festplatten bereitstellen, was kleinere und billigere Geräte ermöglicht. Daneben wird TFTP auch dazu verwendet, um Computerarbeitsplätze in großen Netzwerken (Schulen, Universitäten, Firmen) zentral zu administrieren, was den Verwaltungsaufwand reduziert.
Weitere Beispiele zur Nutzung von TFTP:
Bestimmte Arten von Computerwürmern wie beispielsweise W32.Blaster nutzen TFTP-Server zu ihrer Verbreitung. Deshalb sollte dem Windows-Service tftp.exe bei Benutzung einer Personal Firewall standardmäßig der Internetzugriff verweigert werden.
Server:
Clients:
TFTP wurde in mehreren Schritten als Request for Comments (RFC) weiterentwickelt:
Die Weiterentwicklung der Erweiterungen auf der Basis von RFC 1350 erfolgte 1998 und 2015: