Triviální protokol pro přenos souborů

Aktuální verze stránky ještě nebyla zkontrolována zkušenými přispěvateli a může se výrazně lišit od verze recenzované 22. července 2015; kontroly vyžadují 13 úprav .
TFTP
název Triviální protokol pro přenos souborů
Úroveň (podle modelu OSI ) Aplikovaný
Rodina UDP / IP
Vytvořeno v ~ 1980
Port/ID 69/UDP
Účel protokolu Přenos souboru
Specifikace RFC 1350 / STD 33
Hlavní implementace (klienti) RIS Windows, tftp.exe
Implementace jádra ( servery ) WinAgents TFTP Server, RIS Windows, tftpd
Rozšiřitelnost Možnosti ( RFC 2347 )
Hlavní rozšíření Velikost bloku ( RFC 2348 ), časový limit přenosu ( RFC 2349 )

Protokol TFTP ( Trivial File Transfer Protocol ) se primárně používá pro počáteční spouštění bezdiskových pracovních stanic .  TFTP na rozdíl od FTP neobsahuje autentizační schopnosti (i když je možné filtrování podle IP adresy) a je založeno na transportním protokolu UDP .

Aplikace

Hlavním účelem TFTP je usnadnit implementaci klienta. Jako takový se používá ke spouštění bezdiskových pracovních stanic, stahování aktualizací a konfigurací do „chytrých“ síťových zařízení, zaznamenávání statistik z mini-PBX ( CDR ) a hardwarových směrovačů / firewallů .

Používá se pro IAP programování vestavěných systémů vyvinutých na bázi mikrokontrolérů.

Zabezpečení

Protože protokol nepodporuje ověřování, jedinou metodou identifikace klienta je jeho síťová adresa (která může být podvržena). Na systémech Unix je pro tftpd obvykle dostupný pouze adresář /tftpboot. Na starších serverech TFTP však bylo možné získat soubor s hesly pomocí příkazu RRQ ../etc/passwd.

Démon tftpd (jedna z implementací serveru tftp) odmítá zpracovat soubory, které obsahují ve svém názvu kombinaci "/../" nebo začínají "../". Zápis je povolen pouze do souborů, které již existují (jakékoli velikosti, například nulové) a jsou dostupné pro veřejný zápis (oprávnění: -rw-rw-rw-) [1] .

Další ochranu proti přístupu k libovolným souborům poskytuje změna kořenového adresáře na adresář tftpd (obvykle /usr/TFTPRoot).

Typy balíčků

Za prvé, v paketu TFTP je 2bajtové pole , které určuje typ paketu:

Požadavky na čtení a zápis

Pro zahájení přenosu dat musí klient odeslat paket WRQ nebo RRQ na server. Oba balíčky mají stejný formát:

0x01/0x02 (typ paketu) Název souboru 0x00 (konec řádku) Režim přenosu 0x00 (konec řádku) Možnosti… (pokud existují)
2 bajty řetězec v ASCII 1 bajt řetězec v ASCII 1 bajt Viz "Možnosti"

V TFTP existují 2 režimy přenosu (režim pošty definovaný v IEN 133 byl zastaralý):

Po přijetí paketu RRQ serverem okamžitě zahájí přenos dat. V případě požadavku WRQ musí server odeslat ACK paket s paketem číslo 0.

Proces přenosu dat

Po přijetí požadavku RRQ server okamžitě odešle paket s daty a s ID paketu rovným jedné jako potvrzení. Ve WRQ se jako potvrzení používá ACK s ID rovným nule. Přes TFTP (65536 * 512 / 1024²) lze přenést celkem 32 MB, avšak kvůli použití podepsaného int namísto nepodepsaného je velikost potvrzení omezena na 16 megabajtů. Pokud však klient a server podporují rozšíření protokolů RFC 2347 a RFC 2348 , pak se maximální velikost přenášeného souboru zvýší na 4 Gb.

Možnosti TFTP

RFC 2347 poskytuje formát voleb, které lze připojit na konec paketu RRQ a paketu WRQ:

Kód možnosti 0x00 (konec řádku) Hodnota opce 0x00 (konec řádku)
řetězec v ASCII 1 bajt řetězec v ASCII 1 bajt

Možností může být několik. Pak budou následovat jeden za druhým. Pořadí možností není důležité.

V reakci na zprávu RRQ (nebo WRQ) s možnostmi MUSÍ server odeslat zprávu OACK se seznamem možností, které server přijal. Nejběžnější možnosti jsou:

název Definováno v Kód možnosti
Velikost bloku RFC 2348 velikost blks Hodnota volby je číslo, které nabývá hodnoty od 8 do 65464, označující velikost bloku.
Interval opakovaného přenosu (časový limit) RFC 2349 Časový limit Hodnota volby je číslo, které nabývá hodnoty od 1 do 255, udávající dobu čekání před opětovným odesláním bloku v sekundách.
velikost souboru RFC 2349 velikost ts Hodnota volby je číslo udávající velikost přenášeného souboru v bajtech.

Chyby

V TFTP mají informace o chybě následující formát:

0x05 (typ paketu) Chybový kód Popis chyby 0x00 (konec řádku)
2 bajty 2 bajty řetězec v ASCII 1 bajt

Kód chyby může nabývat jedné z hodnot uvedených v STD 33 (s výjimkou kódu 8 - je popsán v RFC 2347 ). Zde jsou:

Chybový kód Popis
0 Žádný definovaný kód, viz text chyby
jeden Soubor nenalezen
2 Přístup odepřen
3 Nelze přidělit místo na disku
čtyři Nesprávná operace TFTP
5 Nesprávné ID převodu
6 Soubor již existuje
7 Uživatel neexistuje
osm Špatná možnost

Schéma URI

RFC 3617 definuje formát URI pro TFTP. Vypadá to takto:

tftp://[cílový hostitel]/[požadovaný soubor];mode=[režim přenosu]

Například:

tftp://example.com/todo.txt;mode=netascii

Normy

Možnosti

Poznámky

  1. Manuálové stránky tftpd FreeBSD 4.9

Literatura

Odkazy