FTP (File Transfer Protocol), iki bilgisayar sistemi arasında dosya aktarımını sağlamak üzere geliştirilmiş bir iletişim protokolüdür. TCP/IP protokol kümesinin uygulama katmanında yer alır ve istemci-sunucu mimarisine göre çalışır. Temel işlemi, bir bilgisayardan diğerine dosya gönderme (upload) ve alma (download) işlemlerini gerçekleştirmektir. FTP, 1970'li yıllarda ARPANET projesi kapsamında geliştirilen ilk internet protokollerindendir ve en temel sürümü IETF tarafından yayımlanan RFC 959 standardında tanımlanmıştır.
Bu protokol, ağ üzerinde farklı dosya sistemleri ve platformlar arasında karşılıklı dosya alışverişini sağlamak üzere tasarlanmıştır. Dosya aktarımı sırasında dosya adı, türü, aktarım yöntemi (ASCII veya ikili), yapısı (blok, akım, sıralı) gibi parametreler kullanılarak dosya kontrolü gerçekleştirilir. FTP protokolü ayrıca, uzaktaki dizinlerde gezinme, dosya silme, yeniden adlandırma ve yeni dizin oluşturma gibi komutlara da imkan tanır.
FTP Protokolü'nün Çalışma Yapısını Simgeleyen Görsel (Yapay Zeka İle Oluşturulmuştur)
Çalışma Yapısı
FTP iki farklı TCP bağlantısı üzerinden çalışır: kontrol bağlantısı ve veri bağlantısı. Kontrol bağlantısı, istemci ile sunucu arasında komutların ve yanıtların iletildiği sürekli açık bir kanaldır ve genellikle TCP 21 numaralı port üzerinden kurulur. Veri bağlantısı ise aktarılacak dosyanın içerik bilgisinin iletildiği geçici bir kanaldır ve bu bağlantı aktarım sırasında açılır. Aktif ve pasif olmak üzere iki temel bağlantı modu bulunur:
- Aktif mod: Sunucu, istemciye veri bağlantısı için erişim sağlar. Sunucu istemcinin belirttiği port'a bağlanarak veri kanalını kurar.
- Pasif mod: İstemci, veri bağlantısı için sunucuya bağlanır; bu yöntem NAT ve güvenlik duvarı arkasındaki istemciler için tercih edilir.
Her bir FTP oturumu, bu iki bağlantı aracılığıyla sürekli komut alıp cevap verme (control stream) ve dosya/klasör aktarımı (data stream) süreçlerini ayrı olarak yönetir.
Kullanım Türleri
FTP sunucuları, genellikle iki erişim yöntemini destekler:
- Lokal kullanıcı erişimi: Sistemde tanımlı kullanıcı adı ve parola ile kimlik doğrulaması yapılır. Kullanıcılara okuma ve yazma hakları tanımlanabilir. Bu yöntem ile FTP sunucusu üzerinde bireysel veya grup tabanlı erişim kontrolleri uygulanabilir.
- Anonim erişim: Kimlik doğrulama gerekmez. Genellikle yalnızca okuma izni verilir. Kullanıcı adı olarak “anonymous”, parola olarak e-posta adresi girilmesi yaygındır, ancak çoğu sunucu bu bilgiyi zorunlu tutmaz. Anonim erişimin sınırlandırılması, güvenlik açısından önemlidir.
Komut Seti ve İşlemler
FTP, istemci ile sunucu arasında birçok komut ile çalışır. Bu komutlar; kullanıcı oturum açma, dizin değiştirme, dosya gönderme, alma ve silme gibi işlemleri kapsar. Komutlar metin tabanlıdır ve standartlaştırılmıştır. Bazı yaygın komutlar şunlardır:
- USER / PASS: Kullanıcı giriş bilgileri
- LIST: Dizin içeriğini listeleme
- RETR: Dosya indirme
- STOR: Dosya yükleme
- DELE: Dosya silme
- CWD: Dizin değiştirme
- QUIT: Oturumu sonlandırma
Bu komutlar ve yanıt kodları, 【1】 RFC 959'da ayrıntılı olarak tanımlanmıştır ve istemci-sunucu arasındaki etkileşimin temelini oluşturur.
Uluslararasılaştırma (Internationalization)
FTP’nin klasik tanımı ASCII karakter kümesine dayanır. Bu durum, farklı dillerdeki karakter setlerinin aktarımında sorunlara neden olabilmektedir. Bu nedenle RFC 2640 ile FTP'nin çok dilli ortamlarda kullanılabilmesine olanak tanıyan uluslararasılaştırma genişletmeleri tanımlanmıştır. Bu standart UTF-8 desteği, dosya adı kodlaması ve uygun komut davranışı üzerine odaklanır.
Güvenlik Özellikleri
FTP protokolü, ilk sürümlerinde güvenlik önlemlerinden yoksundur. Kullanıcı adı, parola ve dosya içerikleri şifrelenmeden iletilir. Bu eksikliği gidermek amacıyla RFC 2228 ile FTP Güvenlik Uzantıları (FTP Security Extensions) tanımlanmıştır. Bu uzantılar, FTP oturumlarına kimlik doğrulama, veri bütünlüğü, gizlilik ve güvenli kanal sağlama yetenekleri kazandırmıştır. Başlıca güvenlik mekanizmaları şunlardır:
- AUTH: Güvenli bağlantının türünü başlatır (TLS, SSL vb.)
- ADAT: Güvenli bağlantılar üzerinden veri alışverişi yapar
- PROT: Veri kanalında bütünlük ve gizlilik seviyesi belirler
- PBSZ: Koruma tampon boyutunu ayarlar
Bu özellikler, özellikle özel verilerin ya da kimlik bilgilerinin aktarımında önemlidir ve modern FTP sunucularının bu uzantılara uyumlu çalışması tavsiye edilir.
Sunucu Yapılandırması ve İşletimi
FTP sunucuları farklı yazılımlar kullanılarak yapılandırılabilir. GNU/Linux sistemlerde yaygın olarak kullanılan “vsftpd” (Very Secure FTP Daemon) örnek bir uygulamadır. FTP sunucuları, kullanıcılar için farklı erişim hakları tanımlayabilir; erişim dizinleri belirlenebilir, kullanıcıların üst dizinlere çıkması sınırlandırılabilir. Ayrıca, anonim kullanıcılar için yalnızca indirme izni verilirken, yetkilendirilmiş kullanıcılar için hem yükleme hem de indirme mümkün hale getirilebilir. Log kaydı tutulması, FTP sunucusunun denetlenmesi ve olay tespiti açısından kritik bir unsurdur. Aktarılan dosya adı, boyutu, işlemin yönü (gönderme/indirme), kullanıcı adı ve IP adresi gibi bilgilerin kaydı tutulur.
Kullanım Alanları
FTP, ağ ortamındaki sunuculara yazılım güncellemeleri yüklemek, web sitelerine dosya aktarmak, yedekleme sistemleriyle dosya alışverişi yapmak gibi amaçlarla kullanılmaktadır. Ağ yöneticileri için hâlâ yaygın olarak tercih edilen bu protokol, basit yapısıyla eski sistemlerle uyumlu çalışabilmektedir. Bununla birlikte, daha güvenli alternatifleri (SFTP, FTPS gibi) yaygınlık kazanmıştır.
FTP, internet tarihinin en eski ve en yaygın kullanılan dosya aktarım protokollerinden biridir. Basit yapısı ve geniş uyumluluğu sayesinde uzun yıllar boyunca standart bir çözüm olarak hizmet vermiştir. Ancak temel güvenlik önlemlerinin eksikliği nedeniyle, günümüzde çoğu uygulamada güvenli uzantılarla birlikte ya da yerine geçen protokollerle kullanılması önerilmektedir.