Trivial filoverførselsprotokol

Den aktuelle version af siden er endnu ikke blevet gennemgået af erfarne bidragydere og kan afvige væsentligt fra den version , der blev gennemgået den 22. juli 2015; checks kræver 13 redigeringer .
TFTP
Navn Trivial filoverførselsprotokol
Niveau (ifølge OSI-modellen ) Anvendt
Familie UDP / IP
Oprettet i ~ 1980
Port/ID 69/UDP
Formål med protokollen Filoverførsel
Specifikation RFC 1350 / STD 33
Vigtigste implementeringer (klienter) RIS Windows, tftp.exe
Kerneimplementeringer ( servere ) WinAgents TFTP Server, RIS Windows, tftpd
Udvidelsesmuligheder Indstillinger ( RFC 2347 )
Større udvidelser Blokstørrelse ( RFC 2348 ), transmissionstimeout ( RFC 2349 )

Trivial File Transfer Protocol ( TFTP ) bruges primært til indledende opstart af diskløse arbejdsstationer .  TFTP, i modsætning til FTP , indeholder ikke godkendelsesfunktioner (selvom filtrering efter IP-adresse er mulig) og er baseret på UDP -transportprotokollen .

Ansøgning

Hovedformålet med TFTP er at gøre klienten nem at implementere. Som sådan bruges den til at starte diskløse arbejdsstationer, downloade opdateringer og konfigurationer til "smarte" netværksenheder, optage statistik fra mini-PBX'er ( CDR'er ) og hardware - routere / firewalls .

Anvendes til IAP-programmering af indlejrede systemer udviklet på basis af mikrocontrollere.

Sikkerhed

Fordi protokollen ikke understøtter godkendelse, er den eneste metode til at identificere en klient dens netværksadresse (som kan spoofes). På Unix-systemer er det typisk kun mappen /tftpboot, der er tilgængelig for tftpd. På ældre TFTP-servere var det dog muligt at få adgangskodefilen med kommandoen RRQ ../etc/passwd.

tftpd- dæmonen (en af ​​implementeringerne af tftp-serveren) nægter at behandle filer, der indeholder kombinationen "/../" i deres navn eller begynder med "../". Skrivning er kun tilladt til filer, der allerede eksisterer (af enhver størrelse, såsom nul) og er tilgængelige for offentlig skrivning (tilladelser: -rw-rw-rw-) [1] .

Yderligere beskyttelse mod adgang til vilkårlige filer ydes ved at ændre rodmappen til tftpd-mappen (normalt /usr/TFTPRoot).

Pakketyper

For det første er der i TFTP-pakken et 2 - byte felt , der bestemmer pakkens type:

Læs og skriv anmodninger

For at starte dataoverførsel skal klienten sende en WRQ- eller RRQ-pakke til serveren. Begge pakker har samme format:

0x01/0x02 (pakketype) Filnavn 0x00 (slut på linje) Overførselstilstand 0x00 (slut på linje) Valgmuligheder... (hvis nogen)
2 bytes streng i ASCII 1 byte streng i ASCII 1 byte Se "Valgmuligheder"

Der er 2 overførselstilstande i TFTP (Mail-tilstanden defineret i IEN 133 er blevet forældet):

Efter at have modtaget RRQ-pakken af ​​serveren, starter den straks datatransmission. I tilfælde af en WRQ-anmodning skal serveren sende en ACK-pakke med pakkenummer 0.

Dataoverførselsproces

Efter at have modtaget RRQ-anmodningen, sender serveren straks en pakke med data og med et pakke-ID svarende til én som en bekræftelse. I WRQ bruges ACK med ID lig nul som en bekræftelse. I alt 32 MB kan overføres via TFTP (65536 * 512 / 1024²), men på grund af brugen af ​​en signeret int i stedet for en usigneret, er størrelsen af ​​bekræftelsen begrænset til 16 megabyte. Men hvis klienten og serveren understøtter protokoludvidelserne RFC 2347 og RFC 2348 , så øges den maksimale filstørrelse, der skal overføres, til 4 Gb.

TFTP-indstillinger

RFC 2347 gav et format til muligheder, der kan tilføjes til slutningen af ​​en RRQ-pakke og en WRQ-pakke:

Tilvalgskode 0x00 (slut på linje) Option værdi 0x00 (slut på linje)
streng i ASCII 1 byte streng i ASCII 1 byte

Der kan være flere muligheder. Så vil de følge hinanden. Rækkefølgen af ​​mulighederne er ikke vigtig.

Som svar på en RRQ (eller WRQ) med optioner SKAL serveren sende en OACK med en liste over de muligheder serveren accepterede. De mest almindelige muligheder er:

Navn Defineret i Tilvalgskode
Blokstørrelse RFC 2348 blksstørrelse Værdien af ​​optionen er et tal, der tager en værdi fra 8 til 65464, hvilket angiver blokkens størrelse.
Gentransmissionsinterval (timeout) RFC 2349 tiden er gået Værdien af ​​optionen er et tal, der tager en værdi fra 1 til 255, hvilket angiver den tid, der skal ventes, før blokken genudsendes i sekunder.
filstørrelse RFC 2349 tsize Værdien af ​​indstillingen er et tal, der angiver størrelsen af ​​den overførte fil i bytes.

Fejl

I TFTP har fejlinformation følgende format:

0x05 (pakketype) Fejlkode Fejlbeskrivelse 0x00 (slut på linje)
2 bytes 2 bytes streng i ASCII 1 byte

Fejlkoden kan tage en af ​​værdierne anført i STD 33 (med undtagelse af kode 8 - den er beskrevet i RFC 2347 ). Her er de:

Fejlkode Beskrivelse
0 Ingen defineret kode, se fejltekst
en Fil ikke fundet
2 Adgang nægtet
3 Kan ikke tildele diskplads
fire Forkert TFTP-handling
5 Forkert overførsels-id
6 Filen findes allerede
7 bruger eksisterer ikke
otte Forkert mulighed

URI-skema

RFC 3617 definerer URI-formatet for TFTP. Det ser sådan ud:

tftp://[destinationsvært]/[ønsket fil];mode=[overførselstilstand]

For eksempel:

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

Standarder

Indstillinger

Noter

  1. FreeBSD 4.9 tftpd man-sider

Litteratur

Links