TFTP — kichik va sodda fayl uzatish protokoli. Uning to‘liq nomi Trivial File Transfer Protocol hisoblanadi.
TFTP autentifikatsiya, katalog ko‘rish, fayl nomini o‘zgartirish yoki shifrlash kabi keng imkoniyatlarga ega emas. U asosan boshqariladigan lokal tarmoqda boot fayli, firmware yoki qurilma konfiguratsiyasini uzatish uchun ishlatiladi.
TFTP UDP asosida ishlaydi. Soddaligi sababli kichik bootloader va embedded qurilmalarda amalga oshirish oson.
TFTP vazifalari
TFTP quyidagi muhitlarda uchraydi:
- PXE network boot;
- router va switch firmware yangilash;
- konfiguratsiya backup;
- diskless qurilmalar;
- IP telefon provisioning;
- embedded tizim;
- laboratoriya va test muhiti.
TFTP umumiy foydalanuvchi fayl almashinuvi uchun mo‘ljallanmagan.
UDP va portlar
TFTP server dastlab UDP 69-portda so‘rov kutadi.
Client RRQ yoki WRQ yuborgandan keyin server boshqa vaqtinchalik UDP portdan javob beradi. Keyingi paketlar shu yangi port juftligi orqali almashadi.
Bu xususiyat firewall uchun muhim:
- faqat UDP 69-portni ochish yetarli bo‘lmasligi mumkin;
- stateful firewall sessiyaning keyingi portini kuzatishi kerak;
- NAT yoki ACL paketlarni noto‘g‘ri bloklashi mumkin.
TFTP xabar turlari
| Opcode | Xabar | Vazifasi |
|---|---|---|
| 1 | RRQ | Faylni o‘qish so‘rovi |
| 2 | WRQ | Fayl yozish so‘rovi |
| 3 | DATA | Fayl ma’lumoti |
| 4 | ACK | Blok qabul qilinganini tasdiqlash |
| 5 | ERROR | Xato xabari |
| 6 | OACK | Optionlarni tasdiqlash |
TFTP xabarlari kichik va sodda formatga ega.
Faylni o‘qish
Client serverdan fayl olish uchun RRQ yuboradi.
Jarayon:
- Client UDP 69-portga RRQ yuboradi.
- Server DATA block 1 yuboradi.
- Client ACK block 1 qaytaradi.
- Server DATA block 2 yuboradi.
- Jarayon oxirgi blokgacha davom etadi.
Har DATA blok alohida tasdiqlanadi. ACK kelmasa, server timeoutdan keyin blokni qayta yuborishi mumkin.
Fayl yozish
Client serverga fayl yuborish uchun WRQ yuboradi.
Jarayon:
- Client WRQ yuboradi.
- Server ACK block 0 yoki OACK qaytaradi.
- Client DATA block 1 yuboradi.
- Server ACK block 1 qaytaradi.
- Fayl tugaguncha davom etadi.
Server yozishga ruxsat bermasligi yoki faqat oldindan mavjud fayl nomlariga yozishga ruxsat berishi mumkin.
Blok hajmi
Klassik TFTP DATA bloki 512 bayt payload tashiydi.
Oxirgi blok 512 baytdan kichik bo‘lsa, fayl tugagan hisoblanadi. Fayl hajmi aynan 512 baytga karrali bo‘lsa, tugashni bildirish uchun nol uzunlikdagi qo‘shimcha DATA blok yuborilishi mumkin.
512 baytlik blok katta fayllarda ko‘p paket va ACK talab qiladi. Shu sababli option extension orqali kattaroq block size kelishilishi mumkin.
Stop-and-wait
Klassik TFTP stop-and-wait modelidan foydalanadi:
DATA 1 → ACK 1 → DATA 2 → ACK 2
Bir vaqtning o‘zida faqat bitta tasdiqlanmagan blok mavjud.
Afzalligi:
- implementatsiya sodda;
- xotira talabi kichik;
- yo‘qolgan blokni aniqlash oson.
Kamchiligi:
- yuqori kechikishli tarmoqda juda sekin;
- har blok uchun round trip;
- katta faylda samarasiz.
Window size optioni bir nechta blokni ketma-ket yuborish orqali samaradorlikni oshirishi mumkin.
TFTP optionlari
TFTP kengaytmalari client va serverga ayrim parametrlarni kelishish imkonini beradi.
blksize
DATA blok hajmini o‘zgartiradi.
timeout
Qayta uzatish kutish vaqtini belgilaydi.
tsize
Fayl hajmini oldindan bildirishi mumkin.
windowsize
Bir ACKdan oldin nechta blok yuborilishini belgilaydi.
Server qabul qilgan optionlarni OACK bilan qaytaradi. Client taklif qilingan qiymatni tekshiradi.
Uzatish rejimlari
TFTP RRQ yoki WRQ ichida uzatish rejimini bildiradi.
octet
Binary faylni baytma-bayt o‘zgartirmasdan uzatadi. Hozir eng ko‘p ishlatiladigan rejim.
netascii
Matn satr yakunlarini standart tarmoq ko‘rinishiga moslashtiradi. Turli operatsion tizim matn fayllari uchun yaratilgan.
Tarixiy va deyarli ishlatilmaydigan rejim.
Firmware, boot image va konfiguratsiya odatda octet rejimida uzatiladi.
Xato kodlari
TFTP ERROR xabari sababni bildiradi.
| Kod | Mazmuni |
|---|---|
| 0 | Aniqlanmagan xato |
| 1 | Fayl topilmadi |
| 2 | Access violation |
| 3 | Disk to‘ldi |
| 4 | Noto‘g‘ri TFTP amali |
| 5 | Noma’lum transfer ID |
| 6 | Fayl allaqachon mavjud |
| 7 | Foydalanuvchi mavjud emas |
| 8 | Option negotiation xatosi |
ERROR paketi ishonchli tasdiqlanmaydi. U yo‘qolishi mumkin.
PXE bilan ishlashi
PXE orqali tarmoqdan yuklanishda TFTP tarixan muhim rol o‘ynagan.
Jarayon:
- Qurilma DHCP orqali IP manzil oladi.
- DHCP yoki proxyDHCP boot server manzilini bildiradi.
- Boot fayl nomi olinadi.
- Qurilma TFTP orqali boshlang‘ich bootloaderni yuklaydi.
- Bootloader kernel va boshqa fayllarni yuklaydi.
Zamonaviy iPXE muhitida boshlang‘ich kichik fayl TFTPdan olinib, katta fayllar HTTP orqali yuklanishi mumkin.
Firmware va konfiguratsiya
Router yoki switchda quyidagi amallar uchraydi:
- running configurationni TFTP serverga yozish;
- startup configurationni olish;
- firmware image yuklash;
- log yoki diagnostika faylini uzatish.
Firmware image buzilgan bo‘lsa, qurilma boot qilmasligi mumkin. Checksum va model mosligi alohida tekshiriladi.
Xavfsizlik cheklovlari
TFTPning o‘zida quyidagilar yo‘q:
- foydalanuvchi autentifikatsiyasi;
- parol;
- shifrlash;
- serverni tekshirish;
- fayl yaxlitligi imzosi;
- katalog ruxsati protokoli;
- kuchli audit identifikatsiyasi.
TFTP server internetga ochilmaydi. U odatda:
- alohida management VLAN;
- IP allowlist;
- read-only katalog;
- aniq fayl nomlari;
- firewall;
- vaqtinchalik service;
- kichik boot tarmog‘i
bilan cheklanadi.
TFTP root
Server faqat belgilangan katalogni TFTP root sifatida ko‘rsatadi.
Masalan:
/srv/tftp/
Client to‘liq operatsion tizim yo‘lini emas, TFTP rootga nisbiy fayl nomini so‘raydi.
Path traversalga qarshi server:
../yo‘llarni rad etadi;- symbolic linklarni cheklaydi;
- read va write kataloglarini ajratadi;
- service user huquqini kamaytiradi.
Diagnostika
TFTP ishlamasa quyidagilar tekshiriladi:
- UDP 69-port;
- serverning vaqtinchalik UDP portlari;
- RRQ yoki WRQ;
- fayl nomining katta-kichik harfi;
- TFTP root;
- file ownership;
- read/write ruxsati;
- SELinux;
- firewall;
- NAT;
- block size option;
- timeout;
- MTU;
- server logi;
- packet capture.
So‘rov serverga yetib, javob clientga qaytmasa, ko‘pincha firewall yoki NAT vaqtinchalik UDP portni bloklagan bo‘ladi.
Bog‘liq tushunchalar
UDP, PXE, DHCP, Network boot, Firmware, RRQ, WRQ, DATA, ACK, Block size, TFTP server, iPXE