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 .
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ů.
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).
Za prvé, v paketu TFTP je 2bajtové pole , které určuje typ paketu:
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.
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.
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. |
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 |
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=netasciiprotokoly TCP /IP podle vrstev modelu OSI | Základní|
---|---|
Fyzický | |
odvedeny | |
síť | |
Doprava | |
zasedání | |
Zastoupení | |
Aplikovaný | |
Uplatněno jiné | |
Seznam portů TCP a UDP |