Ana sayfa » FTP Protokolü Nedir ve Nasıl Çalışır?
Protokoller

FTP Protokolü Nedir ve Nasıl Çalışır?

ftp protokolü

FTP Protokolü

Daha önceki yazılarımda sizlere internet uygulamalarının olmazsa olmazı HTTP protokolünden bahsetmiştim. Daha sonrasında SSL protokolü ile internet trafiğinin nasıl şifrelendiğine değinmiştik. Şimdi ise bu yazımda sizlere türkçesi ile dosya aktarım protokolü olan FTP protokolünden bahsedeceğim. Bu protokolümüzün açılımı File Transfer Protocol şeklindedir. Adından da anlaşılacağı üzere FTP, bir client ile server arasındaki dosya aktarım işlemlerini belirli bir kurala bağlayan ve bu kurallar çerçevesinde işleten bir internet protokolüdür.

FTP Protokolü Nasıl Çalışır?

FTP protokolü, uygulama katmanında çalışan bir protokoldür. Ayrıca taşıma katmanı protokolü olarakta TCP protokolünü kullanır. Diğer protokollerden farklı olarak iki ayrı TCP portu üzerinden iletişim sağlar. Bu iki ayrı port üzerinden iletişim kurma kısmı da kendi içinde aktif ve pasif mod olmak üzere 2’ye ayrılır. Bu aktif ve pasif moda yazının ilerleyen kısımlarında detaylı bir şekilde değineceğiz. Konumuza devam edecek olursak, FTP protokolünün iki ayrı TCP portu üzerinden iletişim sağladığını belirtmiştik. Bu portlardan bir tanesi kimlik doğrulama ve komut gönderip alma gibi işlemlerde kullanılırken diğeri ise sadece veri transferi için kullanılır. Kimlik doğrulama ve komut gönderip almak için kullanılan port literatürde command port olarak adlandırılırken, veri transferi için kullanılan port ise data port olarak adlandırılır. Ayrıca bu portlar arasında kolay bir şekilde iletişim kurmak için kullanıcı arayüzlü bir program kullanmanız sizin yararınıza olacaktır. Bunlardan en popüleri FileZilla adlı programdır.

ftp protokolu

Konumuza devam edecek olursak, FTP protokolünde 21 numaralı port sabittir ve her zaman command port olarak görev yapar. Data port olarak adlandırdığımız veri transferinin gerçekleştiği port ise daha önceden bahsetmiş olduğumuz aktif ve pasif moda göre değişiklik gösterir. Aktif modda, data port client tarafından belirlenirken, pasif modda server tarafından belirlenir. Bu cümlenin daha açık bir şekilde anlaşılabilmesı için gelin hep birlikte bu aktif ve pasif modu inceleyelim.

Aktif Mode

Hatırlarsanız HTTP protokolünde client ile server arasında veri aktarımı başlamadan önce 80 numaraları portlar üzerinden bir TCP connection sağlanıyordu. Aynı HTTP’de olduğu gibi bizimde FTP protokolünde veri aktarımını başlatmadan önce bir TCP connection sağlamamız gerekmekte, fakat bu connection sağlama işlemi HTTP protokolünden biraz farklı olacak. Lafı daha fazla uzatmadan FTP protokolünde aktif modun nasıl çalıştığını maddeler halinde inceleyelim.

  • Öncelikle client, random olarak seçtiği unprivileged bir port üzerinden (N>1023) ftp serverının 21 numaralı command portu ile TCP bağlantısı kurar.
  • Client, ftp serverının command portu ile başarılı bir şekilde bağlantı kurduktan sonra, kendi üzerinde N+1 numaralı bir listening port(dinleyici port) açar.
  • Bu açtığı N+1 numaralı portun bilgilerini, bağlantı kurduğu N numaralı portu üzerinden serverın 21 numaralı command portuna gönderir. Kısacası bu işlem ile client, ftp serverına “Bak ben N+1 numaralı portu açtım, göndereceğin verileri bu porta gönder” demiş oluyor.
  • FTP sunucusu, client tarafından gelen N+1 numaralı portun bilgilerini alır ve kendi default data portu olan 20 numaralı portu açar.
  • 20 numaralı data portunu açan server, bu port numarası üzerinden clientin N+1 numaralı portu ile bir TCP connection başlatır.
  • Tüm bu işlemler başarılı bir şekilde tamamlandıktan sonra, client N numaralı portu üzerinden kimlik bilgilerini, almak veya göndermek istediği dosyaları FTP protokolü kapsamında tanımlanmış komutlar vasıtası ile 21 numaralı porta gönderir. Bu bilgileri okuyan server, bu komutların ihtiva ettiği bilgilere göre verilerini 20 numaralı port üzerinden, clientin N+1 numaralı portuna gönderir. Bu işlemin tam terside gerçekleşebilir.

Kısacası FTP protokolünde aktif mod bu şekilde çalışmaktadır.

ftp protokolü aktif mode

Pasif Mode

FTP protokolü adlı konumuzun aktif modunu öğrendiğimize göre şimdi sıra pasif modu öğrenmeye geldi. İsterseniz aynı aktif modda yaptığımız gibi adım adım pasif modun nasıl çalıştığını inceleyelim.

  • Öncelikle client, random olarak N ve N+1 olmak üzere 2 tane unprivileged port (N>1023) açar. Hatta bu örneğimizde bu portların numaraları, 1024 ile 1025 olsun.
  • Client açtığı bu portlardan 1024 ile, serverın 21 numaralı command portu ile TCP bağlantısı kurar.
  • Bu bağlantı başarı ile sağlandıktan sonra client 1024 numaralı portu üzerinden serverın 21 numaralı portuna PASV komutunu gönderir.
  • FTP sunucusu 21 numaralı portuna gelen PASV komutunu okur ve rastgele bir unprivileged port açar. Bu örneğimizde bu port numarası 1048 olsun.
  • FTP sunucusu açtığı bu 1048 numaralı port bilgilerini, 21 numaralı command portu üzerinden clientin 1024 numaralı portuna P komutu ile gönderir.
  • Client 1024 numaralı portuna gelen P komutunu okur ve 1025 numaralı portu üzerinden FTP sunucusunun 1048 numaralı portu ile TCP connection başlatır.
  • Bu TCP connection da başarılı bir şekilde gerçekleştikten sonra, artık veri transferi için hiç bir engel kalmamış demektir. Command port üzerinden komutlar, data port üzerinden veriler gönderilir.

Kısacası FTP protokolünde pasif mod bu şekilde çalışmaktadır.

ftp protokolü pasif mode

FTP Komutları Nelerdir?

FTP protokolünde hem client server hemde server client arasındaki komutlar 7 bitli ASCII formatında gönderilir. İsterseniz direk örnekler üzerinden komutlarımızı inceleyelim.

Client Taraflı Komutlar

USER <username>: Bu komut ile serverın command portuna kullanıcı adınızı gönderirsiniz.

PASS <password>: Bu komut ile serverın command portuna parolanızı gönderirsiniz.

LIST: Bu komut ile serverın tüm dosyalarının listesini isterseniz. (Linux’ta ls ve Windows’taki dir komutuna benzer bir komuttur)

RETR <filename>: Bu komut ile serverdan, ismini belirttiğiniz dosyayı almayı talep edersiniz.

STOR <filename>: Bu komut ile bilgisayarınızdan, servara ismini belirttiğiniz dosyayı gönderebilirsiniz.

Server Taraflı Komutlar

Genelde bu komutlar bilgilendirme amacı gütmektedir. En bilinenleri şu şekildedir;

331 Username OK, password required: Bu komut bizim kullanıcı adımızın geçerli olduğunu ve parola girmemiz gerektiğini belirtiyor.

125 Data connection already open; transfer starting: Bu komut bizim veri trasnferi için gönderdiğimiz bir komutun başarılı bir şekilde yerine getirildiğini belirtiyor.

425 Can’t open data connection: Data bağlantısının sağlanamadığını belirtiyor.

452 Error writing file: Dosya yazarken bir sıkıntı olduğunu belirtiyor.

FTP protokolü ile ilgili son değineceğim kısım bunlardı. Bir sonraki yazımda görüşmek üzere.

Yazar Hakkında

Hakan İlbiz

Siber güvenlik, linux, programlama ve network gibi bilgisayar bilimlerini kapsayan alanlarda yaptığı çalışmalardan edindiği tecrübeleri, kurucusu olduğu kodputer.com adlı web sitesinde okurlarına sunan ve bundan büyük bir haz duyan Sakarya Üniversitesi Bilgisayar Mühendisliği öğrencisi.

Yorum Ekle

Yorum Yazmak İçin Tıkla