TFTP (ang. Trivial File Transfer Protocol) – względnie prosty protokół wykorzystywany do przesyłania plików.

Jest on implementowany na protokole UDP, chociaż jego definicja nie wyklucza stosowania innych protokołów pakietowych. Nie posiada większości funkcji protokołu FTP – np. nie może wyświetlać katalogów, ani uwierzytelniać użytkowników, a jego jedynym zadaniem jest odczytywanie plików z komputera zdalnego i transmitowanie ich do niego.

Przesył TFTP rozpoczyna się od żądania odczytu lub zapisu pliku, które żąda również połączenia. Plik wysyłany jest w blokach o długości od 0 do 512 bajtów. Pakiet danych mniejszy niż 512 bajtów wskazuje zakończenie przesyłu. Każdy z pakietów musi być potwierdzony przez pakiet potwierdzający, zanim będzie mógł zostać wysłany następny pakiet. Pakiet danych traktowany jest jako potwierdzenie, że komputer wysyłający otrzymał potwierdzenie poprzedniego pakietu danych. Jedynie pakiet końca transmisji nie wymaga potwierdzenia.

Jeżeli jakiś pakiet ulegnie zagubieniu, to u planowanego odbiorcy następuje przeterminowanie, a ten następnie żąda transmisji zagubionego pakietu. Pakiet retransmitowany w tym przypadku, to ostatni pakiet poprzedniej transmisji, więc nadawca musi zachować do retransmisji tylko jeden pakiet. Poprzednie potwierdzenia gwarantują, że pakiety uprzednio wysłane zostały otrzymane.

Każdemu z pakietów danych towarzyszy numer bloku. Numery bloków są kolejne i zaczynają się od jeden, z wyjątkiem pozytywnej odpowiedzi na żądanie zapisu, która jest pakietem potwierdzającym o numerze bloku zero. Zazwyczaj pakiet potwierdzający zawiera numer bloku potwierdzanego pakietu danych.

Poza jednym wyjątkiem, błąd sprawia zakończenie połączenia. Błąd, sygnalizowany przez pakiet błędu, nie jest potwierdzany ani retransmitowany. Dlatego też, kiedy pakiet ulegnie zagubieniu, do wykrycia zakończenia wykorzystywane jest przeterminowanie.

Jeżeli port źródłowy otrzymanego pakietu jest niewłaściwy, to błąd nie powoduje zakończenia; do hosta, z którego pochodzi pakiet, zostaje wysłany pakiet błędu.

Tryby przesyłania protokołu TFTP

Protokół TFTP obsługuje trzy tryby przesyłania, chociaż tylko dwa z nich są zazwyczaj wykorzystywane:

  • Netascii – standardowy 7-bitowy kod ASCII zmodyfikowany przez specyfikację protokołu Telnet (RFC 854 ↓)
  • Oktet – wykorzystywany do przesyłania informacji bit po bicie. Tryb ten składa się z „surowych” 8-bitowych bajtów i jest on podobny do trybu binarnego protokołu FTP
  • Poczta – znaki Netascii wysyłane do użytkownika zamiast pliku. Choć jest wciąż obsługiwany, tryb ten jest przestarzały i nie powinien być implementowany ani używany

Struktura pakietów protokołu TFTP

Protokół TFTP obsługuje pięć typów pakietów, z których każdy ma swój własny kod operacji. Pakiety RRQ i WRQ zawierają następujące pola:

  • Opcode – to 16-bitowe pole zawiera kod operacji.
  • Filename – to pole o zmiennej długości zawiera nazwę pliku, który ma zostać przesłany jako ciąg bajtów netascii.
  • Filename terminator – to 8-bitowe pole zawiera wartość zero, która wskazuje koniec pola Filename.
  • Mode – to pole o zmiennej długości zawierające tekst: "netascii", "octet" lub "mail", jako szereg bajtów netascii. Tekst może być napisany wielkimi literami, małymi literami, lub połączeniem jednych i drugich.
  • Mode terminator – to 8-bitowe pole zawiera wartość zero, która wskazuje koniec pola Mode.

Typy pakietów TFTP

Opcode Typ pakietu
1 Żądanie odczytu (RRQ)
2 Żądanie zapisu (WRQ)
3 Dane (DATA)
4 Potwierdzenie (ACK)
5 Błąd (ERROR)

Specyfikacja RFC 2347 ↓ rozszerza pakiety RRQ i WRQ, aby hosty wysyłające i odbierające mogły negocjować dodatkowe opcje TFTP. Do potwierdzania żądania negocjacji opcji zgłoszonego przez klienta wykorzystywany jest nowego typu pakiet TFTP, potwierdzenie opcji (OACK). Specyfikacja RFC 2349 ↓ jeszcze bardziej rozszerza pakiety RRQ i WRQ, aby umożliwić hostom protokołu TFTP uzgadnianie interwałów przeterminowania oraz rozmiarów przesyłu.

Do wysyłania określonego pliku wykorzystywane są pakiety DATA; zawierają one następujące pola:

  • Opcode – w przypadku pakietów DATA, to 16-bitowe pole zawiera wartość 3.
  • Numer bloku – to 16-bitowe pole zawiera numer bloku. W przypadku pakietów DATA, zaczyna się ono od 1 i wzrasta o 1 wraz z każdym wysłanym blokiem danych.
  • Data – to pole o zmiennej długości zawiera dane. W przypadku tradycyjnego TFTP to pole zawiera 512 bajtów chyba że pakiet sygnalizuje koniec przesyłu; w takim wypadku pole Data zawiera mniej niż 512 bajtów. Jeżeli wynegocjowana zostanie opcja rozmiaru bloku, to rozmiar pola dla przesyłu danych może być inny niż 512 bajtów. Koniec przesyłu jest sygnalizowany przez mniejszy rozmiar pola.

Potwierdzane są wszystkie pakiety, poza podwojonymi ACK-ami oraz pakietami DATA sygnalizującymi zakończenie, chyba że wystąpi przeterminowanie. Pakiet DATA potwierdza pakiet ACK poprzedniego pakietu DATA. Pakiety ACK lub ERROR potwierdzają pakiety WRQ i DATA, a pakiety DATA lub ERROR potwierdzają pakiety RRQ oraz ACK. Pakiet ACK o numerze bloku zero potwierdza WRQ. Pakiet ACK zawiera następujące pola:

  • Opcode – w przypadku pakietów ACK, to 16-bitowe pole zawiera wartość 4
  • Block number – numer bloku w pakiecie ACK potwierdza numer bloku pakietu DATA, który potwierdza. To pole zawiera wartość zerową, jeśli ACK potwierdza WRQ.

Pakiet ERROR może być potwierdzeniem każdego innego typu pakietu. Zawiera on następujące pola:

  • Opcode – w przypadku pakietów ERROR to 16-bitowe pole zawiera wartość 5.
  • Error code – to 16-bitowe pole zawiera kod błędu, zdefiniowany w tabeli 9.2.
  • Errmsg – to pole o zmiennej długości zawiera czytelny dla człowieka komunikat o błędzie w netascii.
  • Errmsg terminator – to 8-bitowe pole zawiera wartość zerową i wskazuje koniec komunikatu o błędzie. Jest ono czasem uważane za część pola errmsg, a nie oddzielne pole.

Użytkownik może wydawać polecenia protokołu TFTP z konsoli polecenia. Zazwyczaj jednak są one wykorzystywane przez aplikacje opierające się na TFTP, takie jak zestawy poczty elektronicznej.

Demon protokołu transferu plików podstawowych

Demon TFTP (TFTPD) jest przykładem usługi opartej na protokole TFTP, wykorzystywanej przez system Windows 2000 oraz dystrybucje systemów Linux. Serwer usług instalacji zdalnej (PXE) wykorzystuje tę usługę do pobierania plików, które są mu potrzebne do rozpoczęcia procesu instalacji zdalnej.

Kody błędów TFTP

Kod błędu Znaczenie
0 Niezdefiniowany. Sprawdź komunikat o błędzie (jeżeli jest).
1 Nie znaleziono pliku.
2 Naruszenie dostępu.
3 Dysk pełny lub przekroczona alokacja.
4 Zabroniona operacja TFTP.
5 Nieznana tożsamość przesyłu.
6 Plik już istnieje.
7 Nie ma takiego użytkownika.

Bibliografia

  • K. Sollins, The TFTP Protocol (Revision 2), STD 33, RFC 1350, IETF, lipiec 1992, DOI: 10.17487/RFC1350, ISSN 2070-1721, OCLC 943595667 (ang.).

Zobacz też

Linki zewnętrzne

  • TFTPD32 – Serwer tftp i dhcp dla windows (free)
  • Jon Postel, Joyce K. Reynolds, Telnet Protocol Specification, STD 8, RFC 854, IETF, maj 1983, DOI: 10.17487/RFC0854, ISSN 2070-1721, OCLC 943595667 (ang.).
  • G. Malkin, A. Harkin, TFTP Option Extension, RFC 2347, IETF, maj 1998, DOI: 10.17487/RFC2347, ISSN 2070-1721, OCLC 943595667 (ang.).
  • G. Malkin, A. Harkin, TFTP Timeout Interval and Transfer Size Options, RFC 2349, IETF, maj 1998, DOI: 10.17487/RFC2349, ISSN 2070-1721, OCLC 943595667 (ang.).

Witaj

Uczę się języka hebrajskiego. Tutaj go sobie utrwalam.

Źródło

Zawartość tej strony pochodzi stąd.

Odsyłacze

Generator Margonem

Podziel się