TFTP | |
---|---|
Név | Triviális fájlátviteli protokoll |
Szint ( az OSI modell szerint ) | Alkalmazott |
Család | UDP / IP |
Létrehozva: | ~ 1980 |
Port/ID | 69/UDP |
A protokoll célja | Fájl átvitel |
Leírás | RFC 1350 / STD 33 |
Főbb megvalósítások (kliensek) | RIS Windows, tftp.exe |
Alapvető megvalósítások ( szerverek ) | WinAgents TFTP Server, RIS Windows, tftpd |
Bővíthetőség | Opciók ( RFC 2347 ) |
Főbb bővítések | Blokkméret ( RFC 2348 ), átviteli időtúllépés ( RFC 2349 ) |
A Trivial File Transfer Protocol ( TFTP ) elsősorban a lemez nélküli munkaállomások kezdeti indítására szolgál . A TFTP az FTP -vel ellentétben nem tartalmaz hitelesítési képességeket (bár az IP-cím szerinti szűrés lehetséges), és az UDP szállítási protokollon alapul .
A TFTP fő célja, hogy az ügyfél könnyen megvalósítható legyen. Mint ilyen, lemez nélküli munkaállomások indítására, frissítések és konfigurációk letöltésére „intelligens” hálózati eszközökre, statisztikák rögzítésére szolgál mini-alközpontokról ( CDR ) és hardveres útválasztókról / tűzfalakról .
Mikrokontrollerek alapján fejlesztett beágyazott rendszerek IAP programozására használják.
Mivel a protokoll nem támogatja a hitelesítést, a kliens azonosításának egyetlen módja a hálózati cím (amely meghamisítható). Unix rendszereken általában csak a /tftpboot könyvtár érhető el a tftpd számára. A régebbi TFTP-kiszolgálókon azonban lehetséges volt a jelszófájl beszerzése az RRQ ../etc/passwd paranccsal.
A tftpd démon (a tftp szerver egyik megvalósítása) nem hajlandó feldolgozni azokat a fájlokat, amelyek nevükben a „/../” kombinációt tartalmazzák, vagy „../”-vel kezdődnek. Csak olyan fájlok írhatók, amelyek már léteznek (bármilyen méretű, például nulla), és nyilvános írásra elérhetőek (engedélyek: -rw-rw-rw-) [1] .
További védelmet biztosít a tetszőleges fájlokhoz való hozzáférés ellen, ha a gyökérkönyvtárat a tftpd könyvtárra változtatja (általában /usr/TFTProot).
Először is, a TFTP-csomagban van egy 2 bájtos mező , amely meghatározza a csomag típusát:
Az adatátvitel elindításához a kliensnek WRQ vagy RRQ csomagot kell küldenie a szervernek. Mindkét csomag azonos formátumú:
0x01/0x02 (csomagtípus) | Fájl név | 0x00 (sor vége) | Átviteli mód | 0x00 (sor vége) | Opciók… (ha vannak) |
---|---|---|---|---|---|
2 bájt | karakterlánc ASCII -ben | 1 bájt | karakterlánc ASCII-ben | 1 bájt | Lásd: "Opciók" |
A TFTP-ben 2 átviteli mód van (az IEN 133 -ban meghatározott levelezési mód elavult):
Miután a szerver megkapta az RRQ csomagot, azonnal megkezdi az adatátvitelt. WRQ kérés esetén a szervernek egy ACK csomagot kell küldenie 0 csomagszámmal.
Az RRQ kérés beérkezése után a szerver azonnal elküld egy csomagot adattal és 1-gyel megegyező csomagazonosítóval nyugtázásként. A WRQ-ban a nullával egyenlő azonosítójú ACK-t nyugtázásként használják. Összesen 32 MB vihető át TFTP-n keresztül (65536 * 512 / 1024²), azonban az aláíratlan helyett aláírt int használata miatt a nyugtázás mérete 16 megabájtra korlátozódik. Ha azonban az ügyfél és a kiszolgáló támogatja az RFC 2347 és RFC 2348 protokollbővítményeket , akkor az átvihető fájl maximális mérete 4 Gb-ra nő.
Az RFC 2347 egy formátumot biztosított az RRQ-csomagok és egy WRQ-csomagok végéhez fűzhető opciókhoz:
Opció kód | 0x00 (sor vége) | Opció értéke | 0x00 (sor vége) |
---|---|---|---|
karakterlánc ASCII -ben | 1 bájt | karakterlánc ASCII-ben | 1 bájt |
Több lehetőség is lehet. Aztán követni fogják egymást. A lehetőségek sorrendje nem fontos.
Válaszul egy RRQ-ra (vagy WRQ-ra) opciókkal, a szervernek OACK-t KELL küldenie a szerver által elfogadott opciók listájával. A leggyakoribb lehetőségek a következők:
Név | ben meghatározott | Opció kód | |
---|---|---|---|
Blokkméret | RFC 2348 | blksize | Az opció értéke egy szám, amely 8 és 65464 közötti értéket vesz fel, jelezve a blokk méretét. |
Újraadási időköz (időtúllépés) | RFC 2349 | időtúllépés | Az opció értéke egy szám, amely 1 és 255 közötti értéket vesz fel, jelezve a várakozási időt a blokk újraküldése előtt másodpercekben. |
fájl méret | RFC 2349 | tsize | Az opció értéke egy szám, amely az átvitt fájl méretét mutatja bájtban. |
A TFTP-ben a hibainformációk a következő formátumúak:
0x05 (csomagtípus) | Hibakód | Hiba leírása | 0x00 (sor vége) |
---|---|---|---|
2 bájt | 2 bájt | karakterlánc ASCII -ben | 1 bájt |
A hibakód az STD 33-ban felsorolt értékek egyikét veheti fel (a 8-as kód kivételével - az RFC 2347 -ben van leírva ). Itt vannak:
Hibakód | Leírás |
---|---|
0 | Nincs meghatározott kód, lásd a hibaszöveget |
egy | Fájl nem található |
2 | Hozzáférés megtagadva |
3 | Nem lehet lemezterületet lefoglalni |
négy | Helytelen TFTP működés |
5 | Hibás átviteli azonosító |
6 | A fájl már létezik |
7 | A felhasználó nem létezik |
nyolc | Rossz lehetőség |
Az RFC 3617 meghatározza a TFTP URI formátumát. Ez így néz ki:
tftp://[célállomás]/[kívánt fájl];mode=[átviteli mód]Például:
tftp://example.com/todo.txt;mode=netasciiTCP / IP protokollok az OSI modell rétegei szerint | Alapvető|
---|---|
Fizikai | |
csatornázott | |
hálózat | |
Szállítás | |
ülés | |
Reprezentáció | |
Alkalmazott | |
Egyéb alkalmazva | |
A TCP és UDP portok listája |