

Internet standartları daha güçlü olan ve daha yaygın kullanılan bir dosya transfer protokolü olan FTP'yi (file transfer protocol) içerir. FTP iki makine arasında dosya transferi yapılabilmesi için prosedürler tanımlar.
FTP, oldukça alışılmadık bir biçimde, makineler arasında iki mantıksal bağlantı sağlar. Bağlantılardan biri, makineler arasında login için kullanılır. Bu bağlantı TELNET protokolünü kullanır. Şekil 11-4'de bu kavram gösterilmiştir. Son kullanıcı bir protokol çeviricisi (PI) ile haberleşir. Bu PI kontrol bağlantısını yönetir. PI, kullanıcı ve PI'ın dosya sistemi arasında bilgiyi transfer etmelidir. Komutlar ve cevaplar kullanıcı-PI ve sunucu-PI arasında iletilir. Şekilde gösterildiği gibi, diğer makinenin (sunucunun) PI'sı, yönetim bağlantıları için de TELNET protokolünü cevaplar.
Dosya transferi sırasında, veri yönetimi, data transfer process (DTP)' denilen diğer mantıksal bağlantı ile sağlanır. Bir kere DTP fonksiyonlarını gerçekleştirince ve kullanıcının isteği sağlanınca, PI bağlantıyı kapatır.
FTP aynı zamanda üçüncü-taraf transferi olarak bilinen bir işleme izin verir. Şekil 11-5'de görüldüğü gibi bir istekçi, ikisi de sunucu olarak davranan iki uzak makineyle bağlantı kurar. Böyle bir bağlantının amacı istekçinin, iki sunucunun dosya sistemi arasında dosya transfer izni almak için, istek yapmasıdır. Eğer istek onaylanırsa, bir sunucu diğer sunucuyla bir TCP bağlantısı oluşturur ve gönderici FTP modülü, veriyi TCP modülleri boyunca ilerleterek alıcı FTP modülüne transfer eder.
FTP'nin farklı tiplerdeki veri gösterilişlerini ve makineler arası bu tiplerin nasıl kullanılacağına dair müzakere yapılmasını destekleme yeteneği sınırlıdır. FTP kullanıcısı transferde kullanılacak bir tip tanımlayabilir (örneğin, ASCII, EBCDIC, vs.). ASCII default tiptir, ve FTP kurulduğu sistemde ASCII kodunun desteklenmesini gerektirir. EBCDIC de aynı zamanda desteklenir ve mainframe host bilgisayarları arasında veri transferlerinde biraz daha yaygın olarak kullanılır.
ASCII ve EBCDIC bir ikinci parametre kullanarak karakterlerin format kontrol amaçları için kullanılacağını veya kullanılamayacağını belirtirler. Örneğin carriage return (CR), line feed (LF), dikey tab (VT), ve form feed (FF) FTP oturumu boyunca kontrol karakterleri temsil etmek üzere tanımlanabilirler.
FTP, bit nehirlerinin transferini de destekler. Bu bit nehirlerine imaj tipleri denir. Bu işlemle, veri sürekli bit nehirleri içinde gönderilir. Gerçek transfer için veriler, 8-bit baytlara paketlenir. Çoğu işlem ikilik imajlar iletmek için imaj tiplerini kullanır. Böylece çoğu FTP uygulamaları imaj tipini destekler.
FTP yerel bir tipi de destekler. Bu tip baytlar içerisinde iletilir ve burada bayt büyüklüğüne byte size denilen bir parametre ile karar verilir. FTP'de byte size değeri ondalık bir tamsayı olarak gösterilir.
FTP, ön tanımlama, password yetkisi, ve dosya transfer işlemleri için bazı komutlar kullanılır. Tablo 11-3'de bu komutların kısaltmalarını ve fonksiyonlarının kısa bir tanımlamasını bulabilirsiniz.
FTP aynı zamanda iki proses arasında doğru dosya transferi yapmak için belli sayıda cevaplar tanımlar. Adından da anlaşılabileceği gibi, bu cevaplar FTP komutlarının bir sonucu olarak istenir. Cevaplar üç-basamaklı bir sayıyı takip eden tanımlayıcı metinlerden oluşurlar. Cevapların ilk basamağı 1-5 arası bir değer alabilir. Bu değer cevapların beş ana tipini belirtmek için kullanılır. Tablo 11-4'de cevapların ana tiplerini ve fonksiyonlarının kısa açıklamalarını bulabilirsiniz.
Cevap kodlarının y değeri, cevabın doğası ile ilgili ek bilgi içermek üzere, kodlanabilir. Bu koddaki cevap tipleri, 0-5 arası altı değeri alarak; statü komutları, yazım hataları, yetki komutları, kontrol, veri bağlantı komutları, vs. gibi ilgili cevapları tanıtırlar. Tablo 11-5'de bu kodlar listelenmiştir ve tanımlanmıştır.
Üçüncü basamak cevabın anlamı ile ilgili daha detaylı bir seviye tanımlar. Bu kodlar çeşitlidir ve bu bitirme tezinin bakışının ötesindedir ancak bunların kullanımı ile ilgili bir örnek kısaca sunulmuştur. FTP cevap kodlarının bu detay seviyesi üzerinde daha fazla bilgi edinmek için RFC 959'a başvurunuz.
FTP iki kullanıcı arasında veri transferini sağlamak için belirli iyi-sıralanmış adımlar takip eder. Bu bölümde adımlar oluş sırasına göre anlatılacaktır.
İki kullanıcı arasında veri transferi oluşmadan önce, login işlemi tamamlanmalıdır. Bu login'in fonksiyonlarından biri password'ların, yetki kodlarının, ve diğer güvenlik özelliklerinin yeterli olduğunu garantilemektir. Minimum olarak, bir kullanıcı; diğer host cihazının kabul edebileceği bir kullanıcı ismine ve password'a sahip olmalıdır.
Login işlemi süresince,veri transferini kontrolde kullanılacak bazı tabloların değiştirilmesi olasıdır. Eğer bir kullanıcı farklı bağlantılar için farlı destek servisleri istiyorsa, bu fonksiyon çok kullanışlı olur.
Bu özellik gerekli olabilir veya gerekli olmayabilir. Dizin tanımı ile, bir kez kontrol bağlantısı sağlanınca, verinin yerleşeceği boşluğu yönetmek için dizin değiştirilebilir.
Bu üçüncü işlem, dizini kullanarak, bir alt-komutlar listesi aracılığıyla transfer edilecek dosyayı tanımlar. FTP çok geniş bir alt-komutlar repertuarını destekler. En yaygınları GET ve PUT'tur. Bunlar bir dosyanın uzak host'tan bir yerel dosya sistemine, veya yerel dosya sisteminden uzak host'a kopyalanmasına olanak sağlarlar.
FTP dosya transfer prosesinin sıradaki adımı, transfer boyunca kullanılacak mod tipinin tanımlanmasını içerir. Basitçe, bu adım verinin nasıl gösterileceğinin ve bitlerin nasıl transfer edileceğinin tanımlanmasını sağlar. FTP bu işlemleri destekleyecek belirli alt-komutlar içerir:
Bu adım, FTP komutlarının birçoğu ile başlatılabilir. Örneğin, retrieve komutu kullanılarak işlemler başlatılabilir veya append komutu kullanılarak var olan bir dosyaya kayıtlar eklenebilir.
Veri transferinin durdurulması oldukça basittir. Durdurma FTP QUIT alt-komutunun kullanılması ile başarılabilir. Bu alt-komut FTP işlemlerini yürüten host'un bağlantısını keser. Bazen bağlantı kesimine sebep vermeyen, CLOSE alt-komutu kullanılır. Eğer CLOSE kullanırsanız, FTP aktif kalır ve başka bir kullanıcı OPEN alt-komutu ile yeni bir oturum başlatabilir.
Bu bölümde, işlemlerin özetlenmesi ve şimdiye kadar sunulan FTP bilgi parçacıklarının toparlanması amacıyla örnekler sunulmuştur.
FTP konum-sürümlü olması açısından, diğer belirli internet protokollerine benzerdir. Bu nedenle, belirli konum diyagramlarını göstererek, konuyu örneklerle açıklamak faydalı olacaktır. Tüm örneklerde aşağıdaki tanımlamaları kullanacağız:
Şekillerde her bir işlemi, fonksiyon kutularından çıkan cevap kodları ile gösterdik. Cevap kodları 1yz, 2yz, 3yz, 4yz, ve 5yz gibi kodlanmışlardır (Bunları daha önce tartışmıştık). Hatırlayalım ki, yz değerleri cevaplarla ilgili daha özel bilgi verirler.
Bu şekillerin genel notasyonu Şekil 11-6'dan görülebilir. Şekilde CMD etiketli bir kod gösterilmiştir. Bu komut işlemi başlatarak bir bekleme konumu (wait state) yaratır. Buna karşılık verecek cevap kodları işlemin başarısını veya hatasını belirtir. Bunu aklımızda tutarak, FTP'nin belirli işlemlerinin bir tartışmasını yapalım.
Tekrar Şekil 11-6'ya bakalım. Bu şekilde, FTP işlemlerinin birçoğu için model olan bir konum diyagramı (state diagram) gösterilmiştir. Şekil 11-6'daki model şu komutları desteklemektedir: ABOR, DELE, CWD, CDUP, SMNT, HELP, MODE, NOOP, PASV, QUIT, SITE, PORT, SYST, STAT, RMD, MKD, PWD, STRU, ve TYPE (Bu komutların kısa açıklamaları için Tablo 11-3'e bakabilirsiniz.). Şekilde CMD' komutu yerine bu komutlardan birini yerleştirebilir ve akış şemasının kalanını takip ederek olası çıkışlara karar verebilirsiniz.
Şekil 11-7, cevap kodu 1'in protokol cihazını tekrar bir bekleme konumuna getirmesi dışında, önceki şekildekine benzer bir diyagramdır. Bu diyagram şu komutları destekler: APPE, LIST, NLST, REIN, RETR, STOR ve STOU.
Şekil 11-8'de login prosedürü için konum geçiş işlemleri gösterilmiştir. Şekilde gösterildiği gibi, işlem bir kullanıcı (USER) mesajının yayınlanması ile başlar. Bunu takiben, password (PASS) ve accounting (ACCT) mesajları yayınlanarak login işlemlerinin başarılı, başarısız veya hatalı yapıldığına karar verilir.
Şekil 11-8'de bir doya gönderme örneği verilmiştir. Şeklin üst tarafında bir retrive (RETR) komutuna verilebilecek cevaplar gösterilmiştir. Şeklin alt tarafında cevapların sırası gösterilmiştir: Öncelikli cevaplar ilkin, takip eden cevaplar sonra, pozitif ve negatif tamamlama cevapları en son olarak gösterilmiştir. Analizi yapabilmek için Tablo 11-6'daki, RETR'ın cevap kodlarının numaralarını şekil 11-8'deki numaralar ile eşleştirin. Hatırlayalım ki, FTP standardında başka pek çok cevap kodu tanımlanmıştır.
Tüm FTP kurulumları en azından kutu 11-7'de gösterilen servisleri ve komutları desteklemelidirler.

