# Dosya aktarım iletişim kuralı
Dosya aktarım iletişim kuralı, (İngilizce: File Transfer Protocol; FTP), bir veri yığınının - ASCII, EBCDIC ve binary- bir uç aygıttan diğerine iletimi için kullanılmaktadır.
Bir dosyayı FTP kullanarak başka bir TCP/IP ağı üzerindeki kullanıcıya yollamak için o ağdaki bilgisayarda geçerli bir kullanıcı ismi ve şifresi gerekmektedir. Birçok FTP sunucusu, kullanıcı ismi ve parola olmadan erişim için "anonim FTP" (anonymous FTP) desteği verir, bu kullanım için kullanıcı adı olarak "anonymous" parola olarak ise bir e-mail adresi girilmesi gerekmektedir (Internet Explorer, e-mail olarak "IEuser@" girer).
FTP, dosya transferi ve komut transferi için değişik portlar kullanır. Varsayılan konfigürasyonda, komut transferi (yani sisteme giriş, klasör değiştirme, dosya adı değiştirme veya "dosya yolluyorum" komutları) için kullanılan port numarası 21'dir. Dosyalar indirilir veya gönderilirken ise o an boş olan bir port numarası kullanılır.


## Tarih.
Dosya aktarım iletişim kuralı için orijinal tanımlama Abhay Bushan tarafından yazılmış ve 16 Nisan 1971'de RFC 114 olarak yayınlanmıştır. Daha sonra Haziran 1980'de RFC 765'e ve Ekim 1985'te RFC 959 olan bugünkü haline getirilmiştir. Teklif edilen son standartlar RFC 959'u geliştirmiştir, örneğin RFC 2228 (Haziran 1997) güvenlik geliştirmelerini önerir ve RFC 2428 (Eylül 1998) IPv6 için destek sağlar, yeni bir çeşit pasif mod tanımlar.


## Çeşitleri.
Ağ açısından bakıldığı zaman FTP' ni iki türü vardır. Bu FTP çeşitlerinden hangisinin kullanılacağını istemci tarafı belirler.


### Aktif FTP.
İstemci, sunucunun 21 numaralı portundan kontrol bağlantısı kurarak FTP sunucusuna bağlanır. Bu durumda istemci komut satırına düşer ve ls ve get komutlarını buradan gönderir. Tüm veri aktarım bağlantısı sunucu üzerinden 20 numaralı porttan gerçekleştirilir.
İstemci ls komutunu çalıştırdığında geri dönen cevap sunucunun 20 numaralı portundan değil, 21 numaralı portundan gerçekleşir. Daha sonra sunucu kaynak portunu 20 yapacak şekilde değiştirir ve dosya aktarımına devam eder.


### Pasif FTP.
Pasif FTP, değişik sebeplerden dolayı sistemde meydana gelen ftp problemlerine sunucu tarafında çözüm bulmak amacıyla çıkarılmış ftp çeşididir.
İstemci, 21 numaralı porttan önce kontrol bağlantısı kurarak FTP sunucusuna bağlanır. Aktif bağlantıdaki gibi istemci ne zaman veri aktarımı gerçekleştirmeye başlarsa istemciden yeni bir port açılır. İstemci, sunucuya PASV komutu gönderir. Bu komut sonucunda sunucuda da yeni bir port açılır.
Böylece veri aktarımı istemcinin en son açtığı port ile sunucunun en son açtığı port arasında gerçekleşir.
Bu yöntem genelde bağlantı filtreleme ve güvenlik duvarı gibi problemleri ortadan kaldırmaya yönelik geliştirilmiştir.


## Güvenlik.
FTP, güvenli bir protokol olarak dizayn edilmemişti -özellikle günümüz standartlarında- ve güvenlik açısından birçok zayıflığı vardı. Mayıs 1999'da RFC 2577'nin yazarları güvenlik zaaflarını listeledi. Bunlar;
Bounce saldırısı, Spoof saldırısı, Kaba kuvvet saldırı, Kullanıcı adı korunumu, Port hırsızlığı


## FTP Alternatifleri.
  - SFTP (Secure File Transfer Protocol): SFTP, FTP'nin aksine verilerinizi şifreleyen bir dosya aktarma protokolüdür. Bu nedenle, veri transferi sırasında üçüncü şahıslar tarafından ele geçirilmesi veya okunması daha zordur. SFTP, SSH (Secure Shell) protokolü kullanarak çalışır ve birçok FTP istemcisinde desteklenir.
  - SCP (Secure Copy): SCP, SSH protokolü kullanarak dosya kopyalamak için kullanılan bir protokoldür. SCP, SFTP gibi, verilerinizi şifreler ve güvenli bir şekilde aktarmanıza olanak tanır.
  - WebDAV (Web Distributed Authoring and Versioning): WebDAV, web sunucuları üzerinden dosya aktarımı yapmak için kullanılan bir protokoldür. WebDAV, SFTP ve SCP gibi şifreleme ve güvenlik özellikleri sağlar.
  - HTTPS (Hypertext Transfer Protocol Secure): HTTPS, web sitelerindeki veri aktarımlarını güvence altına almak için kullanılan bir protokoldür. HTTPS, SSL (Secure Socket Layer) protokolü kullanarak verilerinizi şifreler ve güvenli bir şekilde aktarır.
  - AS2 (Applicability Statement 2): AS2, işletmeler arasında güvenli bir şekilde dosya aktarımı yapmak için kullanılan bir protokoldür. AS2, EDI (Electronic Data Interchange) belgeleri gibi işlem verilerinin güvenli bir şekilde aktarımı için tasarlanmıştır ve S/MIME (Secure/Multipurpose Internet Mail Extensions) protokolünü kullanarak verileri şifreler.