Ağ Çalışma Grubu
Yorum Talebi: 414
Günceller: RFC 354, RFC 385
NIC: 12406
Yazar: A. Bhushan
Bağlı Kurum: MIT-MAC
Tarih: 29 Kasım 1972
Dosya Aktarım Protokolü (FTP) Durumu ve Ek Yorumlar
Şu anda birçok HOST çalışır durumda sunucu ve kullanıcı FTP’lerine sahiptir. Aşağıda, bilgim dahilinde FTP uygulamalarının durumu yansıtılmaktadır:
BBN (A ve B), SRI-ARC, UTAH, CASE, USC-ISI, CCA, MIT-AI, MIT-Mathlab, MIT-DMCG, CMU, AMES-67 ve SU-AI, tam işlevli sunucu ve kullanıcı FTP’lerine sahiptir.
MIT-Multics, kullanıcı ve sunucu FTP’lerine sahiptir, ancak sunucu soket 3’ü dinlemez (normal oturum açma ve
ftp_serverkomutu ile başlatılabilir). UCSB yakında kullanıcı ve sunucu FTP’lerine sahip olacaktır.
Tüm TENEX sistemlerindeki sunucular aşağı yukarı aynıdır (BBN’de Bob Clements tarafından geliştirilmiştir). MIT-AI ve MIT-ML’deki sunucular da aynıdır (MAC’ten Pitts Jarvis tarafından geliştirilmiştir). Şu anda FTP ile ilgilenen diğer kişiler arasında Arvola Chan (AC@MIT-DMCG), Ken Pogran (Multics), Greg Hicks (HICKS@UTAH), Wayne Hathaway (AMES-67), Ralph Gorin (SU-AI), Rick Werme (CMU) ve Ron Stoughton (UCSB) bulunmaktadır.
Kullanıcı-FTP, yani FTP’nin kullanıcı arayüzü, istenen ve ilginç özelliklerin eklenebileceği yerdir. Böyle bir özelliğe örnek olarak, BBN (ve diğer TENEX’ler) SNDMSG USER@HOST özelliği verilebilir; bu özellik yerel bir kullanıcının diğer ağ kullanıcılarına mesaj (veya posta) göndermesine olanak tanır. Uzak host çalışır durumda değilse, mesaj kullanıcının dizininde --UNSENT-MAIL--USERHOST olarak saklanır ve arka plan görevi bu tür dosyaları periyodik olarak kontrol ederek postayı göndermeye çalışır. MIT-AI ve MIT-ML’de dosyaların kolay aktarımına olanak tanıyan bir TRANS komutu vardır. MIT-DMCG’de ise CALICO alt sistemi altında, yerel kullanıcıların ağ üzerinden posta göndermesine, dosyaları verimli biçimde kopyalamasına ve kullanıcıları ile dizinleri yerel kullanım benzeri bir şekilde listelemesine olanak tanıyan genelleştirilmiş komutlar geliştirdik (yani, açıkça bağlanma, oturum açma ve uzak bir HOST’a komut gönderme gereği olmadan). Ayrıca TELNET, FTP ve RJS kullanıcılarının bir “başlangıç” dosyasından otomatik olarak “oturum açmasına” ve diğer komut dizilerini gerçekleştirmesine izin veriyoruz.
“Image 36” modunda PDP-10’lar arasındaki dosya aktarımının, “ASCII 8” moduna kıyasla bir büyüklük mertebesi daha hızlı (ve daha verimli) olduğu belirtilmelidir. Ayrıca, kullanıcı-FTP’de bir “Quote” veya “talk” modu sağlanmasının, kullanıcının FTP sunucusuna doğrudan komut girmesini (yani kullanıcı-FTP’de uygulanmamış komutları) mümkün kılması açısından yararlı olduğu da not edilmelidir. Kullanıcı ve sunucu FTP özelliklerinin ve arzu edilen kullanım biçimlerinin belgelenmesi ve RFC mekanizması aracılığıyla raporlanması istenmektedir.
Aşağıdaki öneriler ve eklemeler, NWG/RFC 354 ve NWG/RFC 385’te belirtilen Dosya Aktarım Protokolü ile ilgilidir. Bu RFC’ye gelen yorumlar alındıktan sonra, üç RFC’yi tek bir belgede birleştirip çok yakında ARPANET Resmî Dosya Aktarım Protokolü olarak yayımlayacağım. Bununla birlikte, FTP’nin denemelere açık, uçları belirlenmemiş bir protokol olduğu unutulmamalıdır. Gelecekte yeni komutlar, yanıt kodları, veri gösterim türleri ve dosya yapıları tanımlanabilir. İki site anlaşırsa, kendi deneysel komut, veri türü, dosya yapısı ve/veya aktarım modu kümelerini tanımlayabilirler. Protokole yapılan bu tür eklemeler iyi belgelenmeli ve açıkça belirtilmelidir ki diğer siteler de aynı olanaklardan yararlanabilsin.
1. Satır Yönelimli Etkileşim
FTP, yerel yankı ile satır satır etkileşim varsayar. Sunucunun uzak yankı sağlaması zorunlu değildir ve TELNET denetim karakterlerini yok sayabilir. Ancak bir sunucu, TELNET denetim karakterlerini aldığında hata ya da kötü bir yanıt vermemelidir.
Sunucu, karakter silme veya satır temizleme karakterleri gibi herhangi bir düzenleme yeteneğini açıkça sağlamaz. Tüm düzenlemenin yerel olduğu varsayılır. TIP kullanıcıları FTP’yi satır modunda kullanmalı ve hem <CR> hem de <LF> göndermelidir (TIP komutları @T O L ve @I L ile). Bu modda, TIP kullanıcısı geçerli giriş satırını temizleme komutu (@F) ile temizleyebilir.
Sunucu, TELNET SYNCH aldığında geçerli komut satırını temizleyerek ABOR komutu gibi kullanıcı girdisini beklemelidir. BYE veya STAT gibi diğer komutlar da kabul edilebilir bir girdi oluşturabilir.
2. Durum Bilgisinin Sonu
TELNET bağlantısı üzerinden birden fazla satır çıktı üretecek STAT gibi komutlar, durum bilgisinin sonunu açıkça belirtecek bir yönteme ihtiyaç duyar. Durum bilgisinin sonu için 200 status complete yanıtının açık bir gösterge sağlaması önerilmektedir. STAT yanıtı 1xx (burada x = rakam) ile başlayan bir satırla başlamalı, sonraki satırların ilk karakteri rakam olmamalı ve durum 200 yanıtı ile sona ermelidir. (Üç boşluk gereksiniminin, ilk karakterin rakam olmaması gibi daha az kısıtlayıcı bir gereklilik lehine kaldırıldığına dikkat ediniz.) Bu değişiklik, hem kullanıcı hem de sunucu FTP’leri için işlemleri çok daha kolay hale getirecektir.
3. BYE Komut Sözdizimi
BYE<CR><LF> biçiminin geçerli olduğuna dair bir hatırlatma. Boş bir argüman varsa, komut adından sonra bir boşluk gerekli değildir.
4. STAT ve LIST Yanıtları
STAT ve LIST komutları için aşağıdaki yanıtlar önerilmektedir (özellikle boş argüman durumu için bu konu açıkça belirtilmemişti). STAT ve LIST yanıtları sırasıyla her zaman TELNET ve Veri bağlantıları üzerinden gönderilecektir.
- Boş argümanlı
LISTkomutu, kullanıcının geçerli çalışma dizinindeki veya varsayılan dizinindeki dosyaların bir listesini üretmelidir. - Boş argümanlı
STATkomutu, dosya aktarımları arasında kullanıldığında (yani devam eden bir aktarım yokken), tüm dosya aktarım parametrelerinin (kullanıcı, bayt boyutu, veri türü, aktarım modu ve dosya yapısı) durumunu üretmelidir (Wayne Hathaway’in önerdiği gibi). - Bir dosya aktarım işlemi sırasında
STATgönderilirse (TELNET synch ile birlikte), sunucu devam eden işlemin durumuyla yanıt vermelidir. LISTveyaSTATkomutlarının argümanı bir yol adı ise, bu yol adıyla ilişkili bir liste gönderilmelidir.
5. Yeni Komutlar: HELP ve NLST
Burada iki yeni komut önerilmektedir.
Birincisi, kullanıcıya sunucunun kullanımı ve uygulama durumu (haberler) hakkında yararlı ipuçları göndermesi gereken HELP komutudur. Bilgiler TELNET bağlantısı üzerinden 100 türünde bir yanıtla başlayacak ve 200 türünde bir yanıtla (tamamlama) sona erecektir. Bu komutun ve ayrıca MAIL ve BYE komutlarının, kullanıcının oturum açmasına gerek kalmadan (yani geçerli kullanıcı, parola ve hesap sağlamadan) kullanılmasına izin verilmesi önerilmektedir.
Diğer komut (Bob Clements tarafından önerilmiştir), yalnızca dosya adlarını (CRLF ile ayrılmış geçerli yol adı dizgeleri olarak) ve başka yararlı fakat kafa karıştırıcı bilgi içermeden gönderen, NLST adlı yeni bir dizin listeleme komutudur. Bu, bu komut ile saklama ve geri alma komutlarını kullanarak tüm bir dizinin otomatik olarak kopyalanmasını mümkün kılar. Bu komutun sözdizimi ve biçimi LIST komutu ile aynıdır (bazı HOST’lar için bunlar aynı komut olabilir).
6. Varsayılan Komutların Kabulü
Asgari uygulama TYPE, BYTE, MODE ve STRU komutlarını gerektirmese de, bu komutların varsayılan değerlerle, asgari uygulamaya sahip olanlar tarafından bile kabul edilmesi önerilmektedir. Bu, TYPE A ve STRU F gibi girdilere verilen ve sunucu için tamamen kabul edilebilir olan bazı “çirkin” hata yanıtlarını önleyecektir.
7. MLFL ve LIST için TYPE Gereksinimleri
MLFL ve LIST komutları kullanılırken, TYPE’ın ASCII (8 bit baytlar) olmasını sağlamak kullanıcının (veya kullanıcı-FTP’nin) sorumluluğundadır. TYPE ASCII dışında ise, sunucu bir hata yanıtı gönderebilir ve komutu reddedebilir. Bu nedenle kullanıcı (veya kullanıcı-FTP), TYPE ASCII dışında ise MLFL veya LIST komutlarını göndermeden önce sunucuya TYPE A komutunu göndermelidir.
8. MAIL ve MLFL’de Birden Fazla Kullanıcı Adı
Yararlı bir öneri, MAIL ve MLFL komutlarında birden fazla kullanıcı adına izin verilmesidir. Çoğu zaman bir kullanıcı, aynı postayı belirli bir sitedeki birden çok kullanıcıya göndermek ister. Bunu tek bir aktarım ve komutla yapabilmesi çok kullanışlı olacaktır. Sunucu sitelerinin bu seçeneği uygulaması kuvvetle tavsiye edilmektedir.
9. Standart Yol Adı Sözdizimi
Yapılan bir diğer öneri, FTP’de yol adı sözdiziminin standartlaştırılmasıdır. TENEX sisteminde alt dizinlerin yakında devreye alınacağı görülmektedir. Bunun standart yol adı sözdizimi üzerinde bir etkisi olabilir. Herhangi bir standart yol adı düzeninin gereksinimleri, yerel yol adı kurallarının rahat kullanımına olanak tanıması ve bunlarla çakışmamasıdır.
Makul bir öneri, standart yol adının > gibi özel bir karakterle (Multics’te olduğu gibi) başlaması ve bu özel karakterin yol adının öğelerini ayırmak için kullanılmasıdır. Özel karakter, bir yol adı öğesinin geçerli bir parçasıysa, '> (özel karakterden önce tek tırnak) biçimindeki birebir alıntı kuralı kullanılmalıdır.
Bu kurala göre yol adı örnekleri şunlardır:
>udd>CNet>Doe>foo_bar(Multics için)>DSK>JFD>foo bar(ITS için)>DOE>foo.bar1(TENEX için)
10. Hesap Yanıt Kodları
TENEX’lerin hesap numarası gereksinimi, mevcut yanıt kodu dizileri altında FTP kullanan otomatlar için bazı sorunlara yol açmıştır. Bu nedenle, hesap gereksinimini ele almak üzere iki yeni yanıt kodu tanımlanmaktadır:
- Kullanıcı oturum açma dizisinin bir parçası olarak bir hesap gerekiyorsa
331 Enter Accountyanıt kodu kullanılacaktır. - Saklama gibi belirli bir işlem için hesap gerekiyorsa
433 Cannot store files without valid account. Enter account.yanıt kodu kullanılacaktır.
11. Ek Öneriler
Wayne Hathaway tarafından yapılan (RFC yakında yayımlanacak) aşağıdaki öneriler makul görünmektedir ve protokole dahil edilmelidir:
- Aşağıdaki Kayıt Sonu koşulu, Dosya Sonu içinde ima edilmek yerine son kayıtta açıkça belirtilmelidir. Bu değişiklik, sunucu uygulamasını basitleştirecek ve güvenilirliği artıracaktır (daha iyi hata denetimi).
- Kullanıcı-FTP uygulayıcıları, ASCII türü ve Akış modunda (kayıt sonu için varsayılan CRLF kuralı) kayıt yapılarının uygulanmasının kendileri için son derece kolay olduğunu dikkate almalıdır. Tüm kullanıcı-FTP’ler, ASCII türü ve akış modu ile kayıt yapılı dosyaların saklanmasına veya geri alınmasına izin vermelidir.
- Kayıt yapılı “print-file” türlerinin (ASCII türüne ek olarak) hem akış hem de metin modlarında gönderilmesi mümkündür (RFC 354 bu konuda açık değildi).
- TELNET synch mekanizması,
ABOR’a ek olarakBYEveSTATgibi diğer komutlara da genişletilmelidir. NOOP,CLSEveSRVRkomutlarının arzu edilirliği konusunda yorumlar davet edilmektedir. Benim görüşüme göre, boş argümanlı birSTATkomutuNOOP’un amacına (sunucunun hâlâ çalışır durumda olup olmadığını görmek) hizmet eder veBYEkomutuCLSE’nin amacına hizmet eder (USERkomutu kullanıcı adını değiştirmek için kullanılmalıdır).SRVRyararlı bir komuttur.
12. Blok Modunda Hata Saptama
Bob Clements, hata saptama ve denetim konusundaki eski meseleyi yeniden gündeme getirmiştir. Bunu ele almak için, Blok modunda iki yeni tanımlayıcı kod tanımlayabiliriz: biri blok denetiminin başlangıcını, diğeri ise blok denetiminin sonunu (ve blok denetim baytlarını içererek) gösterir. Bu kodlar, hata saptama düzenini uygulamak istemeyen herhangi bir site tarafından yok sayılabilir. Hata denetimi düzeni ve bunun FTP’ye dahil edilmesinin arzu edilirliği konusundaki görüşleriniz talep edilmektedir.
Bu RFC, çevrimiçi RFC arşivlerine girilmek üzere makine tarafından okunabilir biçime Helene Morin tarafından, Via Genie aracılığıyla, 12/99 tarihinde dönüştürülmüştür.