Zum Hauptinhalt springen

2. Protokollübersicht (Overview of the Protocol)

Jede Übertragung beginnt mit einer Anfrage zum Lesen oder Schreiben einer Datei, die auch als Verbindungsanfrage dient. Wenn der Server die Anfrage gewährt, wird die Verbindung geöffnet und die Datei in Blöcken fester Länge von 512 Bytes gesendet. Jedes Datenpaket enthält einen Datenblock und muss durch ein Bestätigungspaket bestätigt werden, bevor das nächste Paket gesendet werden kann. Ein Datenpaket mit weniger als 512 Bytes signalisiert das Ende einer Übertragung. Wenn ein Paket im Netzwerk verloren geht, läuft beim beabsichtigten Empfänger ein Timeout ab und er kann sein letztes Paket erneut übertragen (das Daten oder eine Bestätigung sein kann), wodurch der Sender des verlorenen Pakets veranlasst wird, dieses verlorene Paket erneut zu übertragen. Der Sender muss nur ein Paket für die Neuübertragung bereithalten, da die Lock-Step-Bestätigung garantiert, dass alle älteren Pakete empfangen wurden. Beachten Sie, dass beide an einer Übertragung beteiligten Maschinen als Sender und Empfänger betrachtet werden. Eine sendet Daten und empfängt Bestätigungen, die andere sendet Bestätigungen und empfängt Daten.

Die meisten Fehler führen zum Abbruch der Verbindung. Ein Fehler wird durch Senden eines Fehlerpakets signalisiert. Dieses Paket wird nicht bestätigt und nicht erneut übertragen (d. h. ein TFTP-Server oder Benutzer kann nach dem Senden einer Fehlermeldung beendet werden), sodass das andere Ende der Verbindung es möglicherweise nicht erhält. Daher werden Timeouts verwendet, um eine solche Beendigung zu erkennen, wenn das Fehlerpaket verloren gegangen ist. Fehler werden durch drei Arten von Ereignissen verursacht: die Anfrage kann nicht erfüllt werden (z. B. Datei nicht gefunden, Zugriffsverletzung oder kein solcher Benutzer), Empfang eines Pakets, das nicht durch eine Verzögerung oder Duplizierung im Netzwerk erklärt werden kann (z. B. ein falsch geformtes Paket), und Verlust des Zugriffs auf eine notwendige Ressource (z. B. Festplatte voll oder Zugriff während einer Übertragung verweigert).

TFTP erkennt nur eine Fehlerbedingung, die nicht zum Abbruch führt: der Quellport eines empfangenen Pakets ist falsch. In diesem Fall wird ein Fehlerpaket an den ursprünglichen Host gesendet.

Dieses Protokoll ist sehr restriktiv, um die Implementierung zu vereinfachen. Zum Beispiel macht die feste Blocklänge die Zuweisung einfach, und die Lock-Step-Bestätigung bietet Flusskontrolle und eliminiert die Notwendigkeit, eingehende Datenpakete neu zu ordnen.