Protocol trivial de transfer de fișiere

Versiunea actuală a paginii nu a fost încă examinată de colaboratori experimentați și poate diferi semnificativ de versiunea revizuită la 22 iulie 2015; verificările necesită 13 modificări .
TFTP
Nume Protocol trivial de transfer de fișiere
Nivel (conform modelului OSI ) Aplicat
Familie UDP / IP
Creat în ~ 1980
Port/ID 69/UDP
Scopul protocolului Transfer de fișier
Specificație RFC 1350 / STD 33
Principalele implementări (clienți) RIS Windows, tftp.exe
Implementări de bază ( servere ) WinAgents TFTP Server, RIS Windows, tftpd
Extensibilitate Opțiuni ( RFC 2347 )
Extensii majore Dimensiunea blocului ( RFC 2348 ), Timeout de transmisie ( RFC 2349 )

Trivial File Transfer Protocol ( TFTP ) este folosit în primul rând pentru pornirea inițială a stațiilor de lucru fără disc .  TFTP, spre deosebire de FTP , nu conține capabilități de autentificare (deși filtrarea după adresa IP este posibilă) și se bazează pe protocolul de transport UDP .

Aplicație

Scopul principal al TFTP este de a face clientul ușor de implementat. Ca atare, este folosit pentru a porni stații de lucru fără disc, pentru a descărca actualizări și configurații pe dispozitive de rețea „inteligente”, pentru a înregistra statistici de la mini-PBX- uri ( CDR ) și routere hardware / firewall -uri .

Folosit pentru programarea IAP a sistemelor încorporate dezvoltate pe baza de microcontrolere.

Securitate

Deoarece protocolul nu acceptă autentificarea, singura metodă de identificare a unui client este adresa sa de rețea (care poate fi falsificată). De obicei, pe sistemele Unix, numai directorul /tftpboot este disponibil pentru tftpd. Cu toate acestea, pe serverele TFTP mai vechi a fost posibil să se obțină fișierul cu parole cu comanda RRQ ../etc/passwd.

Daemonul tftpd (una dintre implementările serverului tftp) refuză să proceseze fișierele care conțin combinația „/../” în numele lor sau care încep cu „../”. Scrierea este permisă numai fișierelor care există deja (de orice dimensiune, cum ar fi zero) și sunt disponibile pentru scriere publică (permisiuni: -rw-rw-rw-) [1] .

Protecție suplimentară împotriva accesului la fișiere arbitrare este oferită prin schimbarea directorului rădăcină în directorul tftpd (de obicei /usr/TFTPRoot).

Tipuri de pachete

În primul rând, în pachetul TFTP, există un câmp de 2 octeți care determină tipul pachetului:

Citiți și scrieți solicitări

Pentru a începe transferul de date, clientul trebuie să trimită un pachet WRQ sau RRQ către server. Ambele pachete au același format:

0x01/0x02 (tip de pachet) Nume de fișier 0x00 (sfârșitul rândului) Modul de transfer 0x00 (sfârșitul rândului) Opțiuni... (dacă există)
2 octeți șir în ASCII 1 octet șir în ASCII 1 octet Vezi „Opțiuni”

Există 2 moduri de transfer în TFTP (modul Mail definit în IEN 133 a fost depreciat):

După ce a primit pachetul RRQ de către server, acesta începe imediat transmisia de date. În cazul unei cereri WRQ, serverul trebuie să trimită un pachet ACK cu numărul de pachet 0.

Procesul de transfer de date

După primirea cererii RRQ, serverul trimite imediat un pachet cu date și cu un ID de pachet egal cu unul ca o confirmare. În WRQ, ACK cu ID egal cu zero este folosit ca o confirmare. Un total de 32 MB pot fi transferați prin TFTP (65536 * 512 / 1024²), cu toate acestea, datorită utilizării unui int semnat în loc de unul nesemnat, dimensiunea confirmării este limitată la 16 megaocteți. Cu toate acestea, dacă clientul și serverul acceptă extensiile de protocol RFC 2347 și RFC 2348 , atunci dimensiunea maximă a fișierului care trebuie transferat crește la 4 Gb.

Opțiuni TFTP

RFC 2347 a furnizat un format pentru opțiunile care pot fi atașate la sfârșitul unui pachet RRQ și unui pachet WRQ:

Cod opțiune 0x00 (sfârșitul rândului) Valoarea opțiunii 0x00 (sfârșitul rândului)
șir în ASCII 1 octet șir în ASCII 1 octet

Pot exista mai multe opțiuni. Apoi se vor urma unul pe altul. Ordinea opțiunilor nu este importantă.

Ca răspuns la un RRQ (sau WRQ) cu opțiuni, serverul TREBUIE să trimită un OACK cu o listă a opțiunilor acceptate de server. Cele mai comune opțiuni sunt:

Nume Definit în Cod opțiune
Dimensiunea blocului RFC 2348 blksiize Valoarea opțiunii este un număr care ia o valoare de la 8 la 65464, indicând dimensiunea blocului.
Interval de retransmisie (Timeout) RFC 2349 pauză Valoarea opțiunii este un număr care ia o valoare de la 1 la 255, indicând timpul de așteptare înainte de a retransmite blocul în secunde.
mărime fișier RFC 2349 tsize Valoarea opțiunii este un număr care indică dimensiunea fișierului transferat în octeți.

Greșeli

În TFTP, informațiile de eroare au următorul format:

0x05 (tip de pachet) Cod de eroare Descrierea erorii 0x00 (sfârșitul rândului)
2 octeți 2 octeți șir în ASCII 1 octet

Codul de eroare poate lua una dintre valorile enumerate în STD 33 (cu excepția codului 8 - este descris în RFC 2347 ). Aici sunt ei:

Cod de eroare Descriere
0 Niciun cod definit, vezi textul de eroare
unu Fișierul nu a fost găsit
2 Accesul este interzis
3 Nu se poate aloca spațiu pe disc
patru Operare TFTP incorectă
5 ID de transfer greșit
6 Fisierul există deja
7 Utilizatorul nu exista
opt Opțiune greșită

Schema URI

RFC 3617 definește formatul URI pentru TFTP. Arata cam asa:

tftp://[gazdă de destinație]/[fișierul dorit];mode=[modul de transfer]

De exemplu:

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

Standarde

Opțiuni

Note

  1. Paginile de manual FreeBSD 4.9 tftpd

Literatură

Link -uri