Saturday, January 24, 2015

File Transfer Protocol

File Transfer Protocol (FTP) adalah protokol jaringan standar yang digunakan untuk mentransfer file komputer dari satu host ke host lain melalui jaringan berbasis TCP, seperti Internet.
FTP dibangun pada arsitektur client-server dan menggunakan kontrol terpisah dan sambungan data antara klien dan server. Pengguna FTP dapat mengotentikasi sendiri menggunakan jelas-teks masuk protokol, biasanya dalam bentuk username dan password, tetapi dapat terhubung secara anonim jika server dikonfigurasi untuk memungkinkan itu. Untuk transmisi aman yang melindungi username dan password, dan mengenkripsi konten, FTP sering diamankan dengan SSL / TLS (FTPS). SSH File Transfer Protocol (SFTP) kadang-kadang juga digunakan sebagai pengganti, tetapi teknologi yang berbeda.

Pertama aplikasi klien FTP adalah aplikasi baris perintah yang dikembangkan sebelum sistem operasi memiliki antarmuka pengguna grafis, dan masih dikirimkan dengan sebagian besar sistem operasi Windows, Unix, dan Linux. Banyak klien FTP dan utilitas otomatisasi telah sejak dikembangkan untuk desktop, server, perangkat mobile, dan perangkat keras, dan FTP telah dimasukkan ke dalam aplikasi produktivitas, seperti editor halaman Web.

Sejarah server FTP

Spesifikasi asli untuk File Transfer Protocol ditulis oleh Abhay Bhushan dan diterbitkan sebagai RFC 114 pada tanggal 16 April 1971. Sampai tahun 1980, FTP berlari di NCP, pendahulu TCP / IP. Protokol ini kemudian diganti dengan TCP versi / IP, RFC 765 (Juni 1980) dan RFC 959 (Oktober 1985), spesifikasi saat ini. Beberapa standar yang diusulkan mengubah RFC 959, misalnya RFC 2228 (Juni 1997) mengusulkan ekstensi keamanan dan RFC 2428 (September 1998) menambahkan dukungan untuk IPv6 dan mendefinisikan tipe baru mode pasif.

Protocol overview



Komunikasi dan transfer data


Ilustrasi memulai koneksi pasif menggunakan port 21
FTP dapat dijalankan dalam mode aktif atau pasif, yang menentukan bagaimana koneksi data dibentuk. Dalam kedua kasus, klien membuat koneksi kontrol TCP dari random unprivileged pelabuhan N ke port perintah FTP server 21. Dalam mode aktif, klien mulai mendengarkan untuk koneksi data yang masuk pada port N + 1 dari server (client mengirimkan perintah FTP PORT N + 1 untuk menginformasikan server pada port yang mendengarkan). Dalam situasi di mana klien berada di belakang firewall dan tidak dapat menerima koneksi TCP yang masuk, mode pasif dapat digunakan. Dalam modus ini, klien menggunakan koneksi kontrol untuk mengirim perintah PASV ke server dan kemudian menerima alamat IP server dan port server nomor dari server, yang klien kemudian digunakan untuk membuka koneksi data dari port klien sewenang-wenang terhadap alamat IP server dan nomor port server diterima. Kedua mode yang diperbarui pada bulan September 1998 untuk mendukung IPv6. Perubahan lebih lanjut diperkenalkan ke mode pasif pada waktu itu, memperbarui ke modus pasif diperpanjang.

Server merespon melalui koneksi kontrol dengan kode status tiga digit di ASCII dengan pesan teks opsional. Misalnya "200" (atau "200 OK") berarti bahwa perintah terakhir berhasil. Angka-angka mewakili kode untuk respon dan teks opsional merupakan penjelasan atau permintaan terbaca-manusia (misalnya <Perlu akun untuk menyimpan berkas>). Transfer berkelanjutan file data melalui koneksi data dapat dibatalkan dengan menggunakan pesan interrupt yang dikirim melalui koneksi kontrol.

Sementara mentransfer data melalui jaringan, empat representasi data yang dapat digunakan:

  • Mode ASCII: Digunakan untuk teks. Data diubah, jika diperlukan, dari representasi karakter host pengirim untuk "8-bit ASCII" sebelum transmisi, dan (sekali lagi, jika perlu) untuk representasi karakter host penerima itu. Akibatnya, modus ini tidak pantas untuk file yang berisi data selain teks biasa.
  • Modus foto (biasa disebut modus Binary): Mesin pengirim mengirimkan setiap file byte untuk byte, dan penerima menyimpan bytestream karena menerimanya. (Gambar mendukung mode telah direkomendasikan untuk semua implementasi FTP)
  • Modus EBCDIC: Digunakan untuk teks biasa antara host menggunakan set karakter EBCDIC. Local mode: Memungkinkan dua komputer dengan setup identik dengan mengirim data dalam format proprietary tanpa perlu mengubahnya menjadi ASCII.
  • Untuk file teks, kontrol Format dan struktur record pilihan yang berbeda disediakan. Fitur-fitur ini dirancang untuk memfasilitasi file yang berisi Telnet atau ASA.

Transfer data dapat dilakukan dalam salah satu dari tiga mode:

  • Modus Stream: Data dikirim sebagai aliran berkelanjutan, menghilangkan FTP dari melakukan pengolahan apapun. Sebaliknya, semua proses diserahkan kepada TCP. Tidak ada Akhir-of-file indikator diperlukan, kecuali data dibagi menjadi catatan.
  • Mode blok: FTP istirahat data ke dalam beberapa blok (blok header, jumlah byte, dan data lapangan) dan kemudian dibagikan pada TCP.
  • Modus Compressed: Data dikompresi dengan menggunakan algoritma tunggal (biasanya run-length encoding).
Login
FTP login menggunakan username dan password skema normal untuk memberikan akses. Nama pengguna akan dikirim ke server menggunakan perintah USER, dan password akan dikirim menggunakan perintah LULUS. Jika informasi yang diberikan oleh klien diterima oleh server, server akan mengirimkan ucapan kepada klien dan sesi akan dimulai. Jika server mendukungnya, pengguna dapat login tanpa memberikan kredensial login, tapi server yang sama dapat mengizinkan akses hanya terbatas untuk sesi tersebut.

Anonymous FTP
Sebuah host yang menyediakan layanan FTP dapat memberikan akses FTP anonim. Pengguna biasanya login ke layanan dengan 'anonymous' (huruf kecil dan case-sensitive di beberapa server FTP) akun ketika diminta untuk nama pengguna. Meskipun pengguna umumnya diminta untuk mengirimkan alamat email mereka bukan password, tidak ada verifikasi sebenarnya dilakukan pada data yang diberikan. Banyak FTP host yang tujuannya adalah untuk menyediakan pembaruan perangkat lunak akan memungkinkan login anonymous.

NAT dan firewall traversal
FTP biasanya transfer data dengan memiliki server terhubung kembali ke klien, setelah perintah PORT dikirim oleh klien. Hal ini bermasalah untuk kedua Nat dan firewall, yang tidak memungkinkan koneksi dari Internet menuju host internal. Untuk Nat, komplikasi tambahan adalah bahwa representasi dari alamat IP dan nomor port dalam perintah PORT lihat alamat host internal IP dan port, bukan alamat IP publik dan pelabuhan NAT.

Ada dua pendekatan untuk masalah ini. Salah satunya adalah bahwa klien FTP dan server FTP menggunakan perintah PASV, yang menyebabkan koneksi data yang akan dibentuk dari FTP client ke server. Ini banyak digunakan oleh klien FTP modern. Pendekatan lain adalah untuk NAT untuk mengubah nilai-nilai dari perintah PORT, menggunakan gateway aplikasi-tingkat untuk tujuan ini.

Perbedaan dari HTTP 

HTTP dasarnya perbaikan bug di FTP yang membuatnya nyaman untuk digunakan bagi banyak transfer singkat kecil seperti khas dalam halaman web.

FTP memiliki koneksi kontrol stateful yang mempertahankan direktori kerja saat ini dan bendera lainnya, dan setiap transfer memerlukan sambungan sekunder melalui mana data ditransfer. Dalam "pasif" modus sambungan sekunder ini adalah dari client ke server, sedangkan di default "aktif" modus sambungan ini adalah dari server ke klien. Peran ini pembalikan jelas ketika dalam mode aktif, dan nomor port acak untuk semua transfer, mengapa firewall dan NAT gateway memiliki waktu yang sulit dengan FTP. HTTP adalah stateless dan multiplexes mengontrol dan data melalui koneksi tunggal dari client ke server pada nomor port terkenal, yang sepele melewati gateway NAT dan sederhana untuk firewall untuk mengelola.

Menyiapkan koneksi kontrol FTP cukup lambat karena penundaan round-trip mengirim semua perintah yang diperlukan dan menunggu tanggapan, sehingga adat untuk membawa koneksi kontrol dan terus terbuka untuk beberapa transfer file daripada drop dan re -establish sesi dari awal setiap kali. Sebaliknya, HTTP awalnya menjatuhkan koneksi setelah setiap transfer karena hal itu sangat murah. Sementara HTTP telah kemudian mendapatkan kemampuan untuk menggunakan kembali koneksi TCP untuk beberapa transfer, model konseptual masih permintaan independen daripada sesi.

Ketika FTP mentransfer melalui koneksi data, koneksi kontrol idle. Jika transfer dilakukan cukup lama, firewall atau NAT dapat memutuskan bahwa koneksi kontrol sudah mati dan berhenti pelacakan itu, efektif melanggar koneksi dan membingungkan download. Koneksi HTTP tunggal hanya menganggur antara permintaan dan itu adalah normal dan diharapkan untuk koneksi tersebut untuk dibuang setelah time-out.

Web browser support



Kebanyakan web browser umum dapat mengambil file host di server FTP, meskipun mereka mungkin tidak mendukung ekstensi protokol seperti FTPS. Ketika FTP - daripada HTTP - URL diberikan, isi dapat diakses pada remote server disajikan dengan cara yang mirip dengan yang digunakan untuk konten web lainnya. Seorang klien FTP fitur lengkap dapat dijalankan dalam Firefox dalam bentuk perpanjangan disebut FireFTP.


sintaksis

Sintaks URL FTP dijelaskan dalam RFC 1738, mengambil bentuk:ftp://[<user>[:<password>]@]<host>[:<port>]/<url-path> (bagian kurung adalah opsional ).

Sebagai contoh: URL ftp://public.ftp-servers.example.com/mydirectory/myfile.txt merupakan myfile.txt file dari mydirectory direktori di server public.ftp-servers.example.com sebagai sumber FTP . URL ftp: // user001: secretpassword@private.ftp-servers.example.com/mydirectory/myfile.txt menambahkan spesifikasi username dan password yang harus digunakan untuk mengakses sumber ini.

Rincian lebih lanjut tentang menentukan username dan password dapat ditemukan dalam dokumentasi browser '(misalnya, Firefox dan Internet Explorer). Secara default, kebanyakan browser web menggunakan pasif (PASV) mode, yang lebih mudah melintasi firewall pengguna akhir.

Security



FTP tidak dirancang untuk menjadi protokol aman, dan memiliki banyak kelemahan keamanan. Pada bulan Mei 1999, penulis RFC 2577 tercatat kerentanan terhadap masalah berikut:


  • Serangan brute force
  • serangan bouncing
  • Capture paket (packet sniffing)
  • pelabuhan mencuri
  • serangan spoof
  • perlindungan pengguna

FTP tidak mengenkripsi lalu lintas; semua transmisi dalam bentuk teks, dan username, password, perintah dan data dapat dibaca oleh siapa pun dapat melakukan capture paket (sniffing) pada jaringan.  Masalah ini umum untuk banyak spesifikasi Internet Protocol (seperti SMTP, Telnet, POP dan IMAP) yang dirancang sebelum penciptaan mekanisme enkripsi seperti TLS atau SSL. [4] Sebuah solusi umum untuk masalah ini adalah dengan menggunakan "aman", versi aman TLS dilindungi protokol (misalnya, FTPS untuk FTP, TelnetS untuk Telnet, dll) atau berbeda, protokol yang lebih aman yang dapat menangani pekerjaan, seperti SFTP / alat SCP disertakan dengan sebagian besar implementasi dari protokol Secure Shell.

aman FTP

Mengamankan transfer FTP dapat dilakukan dengan beberapa metode.

FTPS
Eksplisit FTPS adalah perluasan standar FTP yang memungkinkan klien untuk meminta sesi FTP dienkripsi. Hal ini dilakukan dengan mengirimkan "AUTH TLS" perintah. Server memiliki pilihan untuk mengizinkan atau menolak koneksi yang tidak meminta TLS. Ekstensi Protokol ini didefinisikan dalam standar yang diusulkan: RFC 4217. implisit FTPS adalah standar usang untuk FTP yang diperlukan penggunaan SSL atau koneksi TLS. Itu ditentukan untuk menggunakan port yang berbeda dari FTP biasa.

SFTP

Protokol SSH transfer file atau FTP aman (SFTP), juga transfer file dan memiliki seperangkat perintah yang serupa bagi pengguna, tapi dibangun pada teknologi perangkat lunak yang berbeda. SFTP menggunakan protokol Secure Shell (SSH) untuk mentransfer file. Tidak seperti FTP, mengenkripsi baik perintah dan data, password mencegah dan informasi sensitif dari sedang dikirim secara terbuka melalui jaringan. Hal ini tidak dapat beroperasi dengan software FTP.

FTP melalui SSH

FTP melalui SSH adalah praktek tunneling sesi FTP biasa melalui koneksi Secure Shell. Karena FTP menggunakan beberapa koneksi TCP (biasa untuk protokol TCP / IP yang masih digunakan), sangat sulit untuk terowongan melalui SSH. Dengan banyak klien SSH, mencoba untuk mendirikan sebuah terowongan untuk saluran kontrol (awal koneksi client-server pada port 21) akan melindungi hanya saluran itu; ketika data ditransfer, perangkat lunak FTP di kedua ujung set up koneksi baru TCP (saluran data) dan dengan demikian tidak memiliki kerahasiaan atau perlindungan integritas.

Jika tidak, maka perlu untuk perangkat lunak klien SSH untuk memiliki pengetahuan khusus dari protokol FTP, untuk memantau dan menulis ulang FTP pesan saluran kontrol dan mandiri membuka paket forwardings baru untuk saluran data yang FTP. Paket perangkat lunak yang mendukung mode ini meliputi:

Tectia ConnectSecure (Win / Linux / Unix) dari software suite SSH Communications Keamanan
Metode lain mentransfer file menggunakan SSH yang tidak berhubungan dengan FTP termasuk SFTP dan SCP; di masing-masing, percakapan seluruh (kredensial dan data) selalu dilindungi oleh protokol SSH.

FTP commands


CommandRFCDescription
ABORAbort an active file transfer.
ACCTAccount information.
ADATRFC
2228
Authentication/Security Data
ALLOAllocate sufficient disk space to receive a file.
APPEAppend.
AUTHRFC
2228
Authentication/Security Mechanism
CCCRFC
2228
Clear Command Channel.
CDUPChange to Parent Directory.
CONFRFC
2228
Confidentiality Protection Command
CWDChange working directory.
DELEDelete file.
ENCRFC
2228
Privacy Protected Channel
EPRTRFC
2428
Specifies an extended address and port to which the server should connect.
EPSVRFC
2428
Enter extended passive mode.
FEATRFC
2389
Get the feature list implemented by the server.
HELPReturns usage documentation on a command if specified, else a general help document is returned.
LANGRFC
2640
Language Negotiation
LISTReturns information of a file or directory if specified, else information of the current working directory is returned. If the server supports the '-R' command (e.g. 'LIST -R') then a recursive directory listing will be returned.
LPRTRFC
1639
Specifies a long address and port to which the server should connect.
LPSVRFC
1639
Enter long passive mode.
MDTMRFC
3689
Return the last-modified time of a specified file.
MICRFC
2228
Integrity Protected Command
MKDMake directory.
MLSDRFC
3659
Lists the contents of a directory if a directory is named.
MLSTRFC
3659
Provides data about exactly the object named on its command line and no others.
MODESets the transfer mode (Stream, Block, or Compressed).
NLSTReturns a list of file names in a specified directory.
NOOPNo operation (dummy packet; used mostly as keepalives).
OPTSRFC 2389Select options for a feature.
PASSAuthentication password.
PASVEnter passive mode.
PBSZRFC 2228Protection Buffer Size
PORTSpecifies an address and port to which the server should connect.
PROTRFC 2228Data Channel Protection Level
PWDPrint working directory. Returns the current directory of the host.
QUITDisconnect.
REINRe-initialize the connection.
RESTRestart transfer from the specified point.
RETRRetrieve a copy of the file.
RMDRemove a directory.
RNFRRename from.
RNTORename to.
SITESends site specific commands to remote server.
SIZERFC 3659Return the size of a file.
SMNTMount file structure.
STATReturns the current status.
STORAccept data and store data as a file at the server site.
STOUStore file uniquely.
STRUSet file transfer structure.
SYSTReturn system type.
TYPESets the transfer mode (ASCII/binary).
USERAuthentication username.
XCUPRFC 775Change to the parent of the current working directory.
XMKDRFC 775Make directory.
XPWDRFC 775Print current working directory.
XRCPRFC 743
XRMDRFC 775Remove directory.
XRSQRFC 743
XSEMRFC 737Send, mail if cannot.
XSENRFC 737Send to terminal.

FTP reply codes



Di bawah ini adalah ringkasan dari kode balasan FTP yang dapat dikembalikan oleh server FTP. Kode-kode ini telah dibakukan dalam RFC 959 oleh IETF. Kode balasan adalah nilai tiga digit. Digit pertama digunakan untuk menunjukkan salah satu dari tiga kemungkinan hasil - sukses, kegagalan, atau untuk menunjukkan kesalahan atau jawaban lengkap:

  • 2yz - balasan Sukses
  • 4yz atau 5yz - Kegagalan balasan
  • 1yz atau 3yz - Kesalahan atau jawaban lengkap
Angka kedua mendefinisikan jenis kesalahan:

  • x0z - Sintaks. Balasan ini mengacu pada sintaks kesalahan.
  • x1z - Informasi. Balasan permintaan informasi.
  • x2z - Koneksi. Balasan mengacu pada kontrol dan sambungan data.
  • x3z - Otentikasi dan akuntansi. Balasan untuk proses login dan prosedur akuntansi.
  • x4z - Tidak didefinisikan.
x5z - File system. Balasan ini menyampaikan kode status dari sistem file server.
Digit ketiga kode yg digunakan untuk menyediakan detail tambahan untuk setiap kategori didefinisikan oleh digit kedua.
semoga berguna untuk kita semua By Azure

Berkomentarlah dengan baik dan sopan yang sesuai dengan topik artikel di atas dan jangan lupa centang Notify Me jika menginginkan balasan dari admin. Terima Kasih :)