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 .
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.
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).
For det første er der i TFTP-pakken et 2 - byte felt , der bestemmer pakkens type:
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.
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.
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. |
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 |
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=netasciiTCP / IP-protokoller efter lag af OSI-modellen | Grundlæggende|
---|---|
Fysisk | |
kanaliseret | |
netværk | |
Transportere | |
session | |
Repræsentation | |
Anvendt | |
Andet anvendt | |
Liste over TCP- og UDP-porte |