# TFTP
Trivial File Transfer Protocol (TFTP) 1980 yılında tanımlanmış, FTP' nin temel fonksiyonel şekli olarak ifade edilen basit bir dosya transfer protokolüdür.
Basit yapısından dolayı kullanılması esnasında çok az bellek tüketilmektedir. Bu özelliğinden dolayı, yeterli yığın bellek cihazı (mass storage device) olmayan yönlendirici (router) bilgisayarların önyüklemesinde kullanılırdı. Halen ağ üzerinde bulunan host makinalar arasında küçük dosyaların transferi için kullanılır. TFTP kısmen PUP protokol grubunun eski bir parçası olan EFTP protokolüne dayanır. TCP/IP protokol grubunun geliştirilmesinin ilk safhalarında TFTP basitliğinden dolayı genellikle yeni bir host tipinin üstünde çalıştırılan ilk protokoldü.


## Açıklama.
Trivial File Transfer Protocol(TFTP) dosya transferi için kullanılan basit bir protokoldür.Bu protokol UDP(User Datagram Protokol) üzerinde 69. port kullanılarak uygulanmıştır. TFTP basit ve uygulanması kolay olacak şekilde tasarlanmıştır ve bu nedenle çoğu FTP özelliğinden yoksundur. TFTP sadece okur ve uzak bir sunucuya yazar.Dizinleri listelemez ve şu anda kullanıcı kimlik doğrulaması için bir kural yoktur.
TFTP' de herhangi bir transfer bir dosya okuma veya yazma isteği ile başlar.Sunucu isteği onaylarsa, bağlantı açılır ve dosya 512 byte sabit uzunluklu bloklar halinde gönderilir. Her veri paketi bir blok veri içerir ve sonraki paket gönderilmeden önce bir bildirim paketi tarafından kabul edilmelidir.Eğer bir paket ağ içinde kaybolursa, alıcının zaman aşımı ve onun son paketi yeniden iletilebilir olacaktır.Diğer eski paketlerden alındı bilgisi gelinceye kadar gönderen yeniden iletim için sadece bir paket tutmalıdır.
TFTP aktarım protokolü olarak genellikle UDP kullanır fakat bu bir gereklilik değildir.Veri transferi 69.portta başlatılır, fakat bu veri aktarım portları bağlantı başlatma sırasında alıcı ve göndericiden bağımsız olarak seçilir.Bu portlar ağ yığınının parametrelerine göre rastgele seçilir, genellikle Ephemeral port aralığından.
TFTP, 3 transfer modu tanımlar: netascii, oktet(octet) ve posta(mail).Netascii, RFC 764'te tanımlanan ASCII'nin değiştirilmiş halidir.Bu 0x20'den 0x7F'ye kadar olan 7 bit ASCII karakter alanı için 8 bit genişletme ve 8 kontrol karakteri içerir.Kontrol karakterleri boş karakter (0x00),satır ilerletme(LF, 0x0A) ve satırbaşı (CR, 0x0D) içerir.
Oktet, gönderdiği dosya ile aynı olan alının dosya iel isteğe bağlı sekizli aktarıma izin verir.Daha doğrusu, bir dizi sekizli dosyayı alır ve bu geri dönerse, geri gelen dosya orijinal dosya ile aynı olmalıdır. Posta transfer modu Netascii transferi kullanır, fakat dosya dosya adı gibi alıcıya özel e-posta adresine gönderilir.RFC 1350, bu eskimiş transfer modunu tanımladı.
Protokol özelliklerine göre güvenlik ve kimlik doğrulama sağlanmaz.Unix uygulamaları yapılandırılmış tek bir dizine dosya transferini kısıtlar.


## Protokolün Anlatımı.
 - A sunucusu transfer modunu ve dosya ismini içeren bir okuma isteğini(RRQ) veya yazma isteğini(WRQ) 69.portta bulunan S sunucusuna gönderir.
 - S, bir WRQ için ACK(onay) paketi ile RRQ için doğrudan DATA paketi ile yanıtlar. Paketler yeni tahsis edilmiş bir ephemeral porttan gönderilir ve S ye gidecek tüm paketler bu portta olmalıdır.
 - Kaynak sunucu, hedef sunucuya sayılı DATA paketleri gönderir, fakat sonuncu tam boyutlu blok veri içerir (512 byte). Hedef sunucu tüm DATA paketlerini sayılı ACK paketleri ile yanıtlar.
 - Son DATA paketinin sonuncu olduğunu belirtmek için bu DATA paketi tam boyutlu blok veriden daha az içermelidir. Transfer dosya boyutu blok boyutunun tam katı ise, kaynak 0 byte veri içeren son DATA paketi gönderir.
 - Alıcı her DATA'ya ilişkili sayıda ACK ile yanıt verir. Gönderen, bloğun ilk alınan ACK si ile sonraki bloğun DATA sına yanıt verir.
 - Sonunda bir ACK alınmadıysa, yeniden aktarma zamanlayıcısı DATA paketini yeniden gönderir.


## Ek Olarak.
  - Orijinal protokol maksimum 32 MB lık dosyaya sahip olabilir. 1998'de bu limit RFC 2347 nin tanıttığı seçenek müzakeresi ve RFC 2348 in tanıttığı blok-uzunluğu müzakeresi tarafından 4GB a çıkarılmıştır.
  - TFTP nin UDP yi kullandığından beri, bu, kendi nakliyesini ve oturum desteğini sağlamak zorundadır. TFTP ile taşınan her dosya bağımsız bir dönüşüm oluşturmaktadır. 


## İlgili Konular.
TFTP server