Protokol Transfer Berkas
Protokol Transfer Berkas () adalah protokol komunikasi standar yang digunakan untuk mentransfer berkas komputer dari sebuah peladen ke sebuah klien pada jaringan komputer. FTP dibangun pada arsitektur model klien-server menggunakan kontrol terpisah dan koneksi data antara klien dan peladen. FTP pengguna dapat mengotentikasi diri mereka sendiri dengan protokol masuk teks yang jelas, normalnya dalam sebuah bentuk nama panggilan dan kata sandi, tetapi dapat terhubung secara anonim jika peladen dikonfigurasi untuk mengizinkannya. Untuk transmisi aman yang melindungi nama panggilan dan kata sandi, dan mengenkripsi konten, FTP sering kali diamankan dengan SSL/TLS (FTPS) atau diganti dengan SSH File Transfer Protocol (SFTP).

Aplikasi klien FTP pertama adalah program baris perintah yang dikembangkan sebelum sistem operasi memiliki antarmuka pengguna grafis, dan masih dikirim dengan sebagian besar sistem operasi Windows, Unix, dan Linux. Banyak klien FTP khusus dan utilitas otomasi telah dikembangkan untuk desktop, peladen, perangkat seluler, dan perangkat keras, dan FTP telah dimasukkan ke dalam aplikasi produktivitas seperti editor HTML dan pengelola berkas.

Sebuah klien FTP biasanya terintegrasi di peramban web, di mana berkas peladen dijelajahi dengan prefix URI "ftp://". Sepanjang tahun 2021, dua vendor browser web utama menghapus kemampuan ini. Dukungan untuk protokol FTP pertama kali dinonaktifkan di Google Chrome 88 pada Januari 2021, diikuti oleh Firefox 88.0 pada April 2021. Pada Juli 2021, Firefox 90 menonaktifkan FTP sepenuhnya, dan Google mengikutinya di bulan Oktober 2021, menghapus FTP sepenuhnya di Google Chrome 95.

Sejarah 

Spesifikasi asli dari Protokol Transfer Berkas ditulis oleh Abhay Bhushan di publikasikan sebagai  pada 16 April 1971. Sampai 1980, FTP berjalan pada NCP, pendahulu dari TCP/IP. Protokolnya digantikan oleh sebuah versi TCP/IP,  (Juni1980) dan  (Oktober 1985), spesifikasi saat ini. Beberapa standar yang diusulkan diubah , sebagai contoh  (Februari 1994) mengaktifkan FTP Ramah-Dinding api (mode pasif),  (Juni 1997) mengusulkan ekstensi keamanan,  (September 1998) menambahkan dukungan untuk IPv6 dan mendefinisikan jenis mode pasif baru.

Ikhtisar protokol 

FTP merupakan salah satu protokol Internet yang paling awal dikembangkan, dan masih digunakan hingga saat ini untuk melakukan pengunduhan (download) dan penggugahan (upload) berkas-berkas komputer antara klien FTP dan server FTP. Sebuah Klien FTP merupakan aplikasi yang dapat mengeluarkan perintah-perintah FTP ke sebuah server FTP, sementara server FTP adalah sebuah Windows Service atau daemon yang berjalan di atas sebuah komputer yang merespons perintah-perintah dari sebuah klien FTP. Perintah-perintah FTP dapat digunakan untuk mengubah direktori, mengubah modus pengiriman antara biner dan ASCII, menggugah berkas komputer ke server FTP, serta mengunduh berkas dari server FTP.

Sebuah server FTP diakses dengan menggunakan Universal Resource Identifier (URI) dengan menggunakan format ftp://namaserver. Klien FTP dapat menghubungi server FTP dengan membuka URI tersebut.

FTP menggunakan protokol Transmission Control Protocol (TCP) untuk komunikasi data antara klien dan server, sehingga di antara kedua komponen tersebut akan dibuatlah sebuah sesi komunikasi sebelum pengiriman data dimulai. Sebelum membuat koneksi, port TCP nomor 21 di sisi server akan "mendengarkan" percobaan koneksi dari sebuah klien FTP dan kemudian akan digunakan sebagai port pengatur (control port) untuk (1) membuat sebuah koneksi antara klien dan server, (2) untuk mengizinkan klien untuk mengirimkan sebuah perintah FTP kepada server dan juga (3) mengembalikan respons server ke perintah tersebut. Sekali koneksi kontrol telah dibuat, maka server akan mulai membuka port TCP nomor 20 untuk membentuk sebuah koneksi baru dengan klien untuk mengirim data aktual yang sedang dipertukarkan saat melakukan pengunduhan dan penggugahan.

FTP hanya menggunakan metode autentikasi standar, yakni menggunakan username dan password yang dikirim dalam bentuk tidak terenkripsi. Pengguna terdaftar dapat menggunakan username dan password-nya untuk mengakses, men-download, dan meng-upload berkas-berkas yang ia kehendaki. Umumnya, para pengguna terdaftar memiliki akses penuh terhadap beberapa direktori, sehingga mereka dapat membuat berkas, membuat direktori, dan bahkan menghapus berkas. Pengguna yang belum terdaftar dapat juga menggunakan metode anonymous login, yakni dengan menggunakan nama pengguna anonymous dan password yang diisi dengan menggunakan alamat e-mail.

Mode transfer data 
Transfer data dapat dilakukan dalam salah satu dari tiga mode:

 Mode Stream (MODE S): Data dikirim sebagai aliran berkelanjutan, membebaskan FTP dari melakukan pemrosesan apa pun. Sebaliknya, semua pemrosesan diserahkan kepada TCP. Tidak diperlukan indikator End-of-file, kecuali data dibagi menjadi rekord.
 Mode Block (MODE B): Dirancang terutama untuk mentransfer berkas berorientasi rekaman (STRU R), meskipun juga dapat digunakan untuk mentransfer file teks berorientasi aliran (STRU F). FTP menempatkan setiap catatan (atau baris) data ke dalam beberapa blok (header blok, jumlah bita, dan bidang data) dan kemudian meneruskannya ke TCP.
 Mode terkompresi  (MODE C): Memperluas MODE B dengan kompresi data menggunakan run-length encoding.

Sebagian besar klien dan peladen FTP kontemporer tidak mengimplementasikan MODE B atau MODE C; Klien dan peladen FTP untuk sistem operasi mainframe dan komputer mini adalah pengecualian untuk itu.

Kelebihan dan kekurangan FTP

Kelebihan dari FTP 
1. FTP dapat Mempermudah dalam mengunggah data.

2. FTP dapat mentransfer data.

3. Pada FTP online terdapat fasilitas untuk mengupload data ke server dalam jumlah banyak sekaligus jadi tidak satu persatu.

4. Pada FTP dapat melayani tukar-menukar file.

5. FTP merupakan versi paling gres juga dilengkapi dengan seperangkat program audit dan penanganan account.

Kekurangan dari FTP 
1. FTP merupakan cara yang tidak aman dalam mentransfer suatu file karena file dikirimkan tanpa di enskripsi terlebih dahulu tetapi melalui clear teks. Mode text yang dipakai untuk transfer data adalah format ASCII atau format binary.

2. Keamanan dan kemudahan penggunaan sering kali berbentrokan dan menjadi dilema para administrator sistem.

3. Desain FTP masih lemah sehingga mengakibatkan tidak terinformasinya para administrator sistem mengenai risiko yang mereka hadapi.

Dukungan perangkat lunak

Peramban web 
Peramban web paling umum dapat mengambil berkas yang dihosting di server FTP, walaupun mereka tidak dapat mendukung ekstensi protokol seperti FTPS. Saat FTP—bukan HTTP—URL disediakan, konten yang dapat diakses di peladen jarak jauh disajikan dengan cara yang mirip dengan yang digunakan untuk konten web lainnya. FireFTP adalah sebuah ekstensi peramban yang dirancang sebagai klien FTP berfitur lengkap, itu dapat dijalankan dengan Firefox pada masa lalu, tapi sekarang direkomendasikan bekerja dengan Waterfox.

Google Chrome menghapus dukungan FTP seluruhnya di Chrome 88. Pada 2019, Mozilla sedang mendiskusikan proposal, termasuk hanya menghapus dukungan untuk implementasi FTP lama yang tidak lagi digunakan untuk menyederhanakan kodenya. Pada April 2021, Mozilla merilis Firefox 88.0 yang menonaktifkan dukungan FTP secara default. Pada Juli 2021, Firefox 90 menghentikan dukungan FTP sepenuhnya.

Sintaks 
Sintaks URL FTP dijelaskan di , mengambil formulir: ftp://[user[:password]@]host[:port]/[url-path] (bagian yang diberi tanda kurung adalah opsional).

Sebagai contoh, URL ftp://public.ftp-servers.example.com/mydirectory/myfile.txt mewakili berkas myfile.txt dari direktori mydirectory pada peladen public.ftp-servers.example.com sebagai sumber daya FTP. URL ftp://user001:secretpassword@private.ftp-servers.example.com/mydirectory/myfile.txt menambahkan spesifikasi nama pengguna dan kata sandi yang harus digunakan untuk mengakses sumber daya ini.

Rincian lebih lanjut tentang menentukan nama pengguna dan kata sandi dapat ditemukan di dokumentasi peramban (mis., Firefox dan Internet Explorer). Secara default, sebagian besar browser web menggunakan mode pasif (PASV), yang lebih mudah melintasi tembok api pengguna akhir.

Beberapa variasi telah ada dalam cara peramban yang berbeda menangani resolusi jalur jika terdapat direktori home non-root untuk pengguna.

Pengelola unduhan 
Pengelola unduhan yang paling umum dapat menerima berkas yang dihosting di peladen FTP, sementara beberapa dari mereka juga memberikan antarmuka untuk mengambil berkas yang dihosting di peladen FTP. DownloadStudio memungkinkan tidak hanya mengunduh berkas dari peladen FTP tetapi juga melihat daftar berkas di peladen FTP.

Lainnya 
LibreOffice mendukung pembukaan file dari server FTP, tapi dari perilisan 7.4, fitur ini dilabeli usang, dan pengembang bermaksud untuk menghapusnya di versi mendatang.

Mengakses 
Mengakses FTP menggunakan skema nama pengguna dan kata sandi normal untuk memberikan akses. Nama pengguna dikirim ke peladen menggunakan perintah USER, dan kata sandi dikirim menggunakan perintah PASS. Urutan ini tidak terenkripsi "on the wire", jadi mungkin rentan terhadap serangan Sniffing jaringan. Jika informasi yang diberikan oleh klien diterima oleh peladen, peladen akan mengirim sambutan ke klien dan sesi akan dimulai. Jika peladen mendukungnya, pengguna dapat masuk tanpa memberikan kredensial masuk, tetapi peladen yang sama hanya dapat mengotorisasi akses terbatas untuk sesi tersebut.

FTP anonim 
Hos yang menyediakan layanan FTP dapat menyediakan akses FTP anonim. Pengguna biasanya masuk ke layanan dengan akun 'anonim' (huruf kecil dan huruf besar-kecil sensitif di beberapa peladen FTP) saat diminta nama pengguna. Meskipun pengguna umumnya diminta untuk mengirimkan alamat email mereka alih-alih kata sandi, tidak ada verifikasi yang benar-benar dilakukan pada data yang diberikan. Banyak hos FTP yang tujuannya menyediakan pembaruan perangkat lunak akan mengizinkan akses anonim.

Derivatif

FTPS 

FTPS eksplisit adalah sebuah ekstensi untuk standar FTP yang memungkinkan klien untuk meminta sesi FTP dienkripsi. Ini dilakukan dengan mengirimkan perintah "AUTH TLS". Peladen mempunyai pilihan membolehkan atau menolak koneksi yang tidak meminta TLS. Ekstensi protokol ini didefinisikan dalam . FTPS implisit adalah standar usang untuk FTP yang memerlukan penggunaan koneksi SSL atau TLS. Itu ditentukan untuk menggunakan port yang berbeda dari FTP biasa.

Protokol transfer berkas SSH 

Protokol transfer berkas SSH (secara kronologis yang kedua dari dua protokol disingkat SFTP) mentransfer berkas dan mempunyai set perintah serupa untuk pengguna, tetapi menggunakan protokol  Secure Shell (SSH) untuk mentransfer berkas. Tidak seperti FTP, ini mengenkripsi perintah dan data, mencegah kata sandi dan informasi sensitif dikirimkan secara terbuka melalui jaringan. Itu tidak dapat beroperasi dengan perangkat lunak FTP, walaupun beberapa perangkat lunak klien FTP menawarkan dukungan untuk protokol transfer berkas SSH juga.

Protokol transfer berkas Trivial 

Protokol transfer berkas Trivial (TFTP) adalah FTP langkah kunci sederhana yang memungkinkan klien untuk mendapatkan berkas dari atau menempatkan berkas ke hos jarak jauh. Satu dari kegunaan utamanya adalah adalah pada tahap awal booting dari jaringan area lokal, karena TFTP sangat mudah untuk diimplementasikan. TFTP tidak memiliki keamanan dan sebagian besar fitur lanjutan ditawarkan oleh protokol transfer berkas yang lebih kuat seperti Protokol Transfer Berkas. TFTP pertama kali distandarisasi pada tahun 1981 dan spesifikasi protokol saat ini dapat ditemukan di .

Protokol transfer berkas Simple 
Protokol transfer berkas Simple (protokol pertama disingkat SFTP), seperti yang didefinisikan oleh , diusulkan sebagai protokol transfer berkas (tidak aman) dengan tingkat kerumitan menengah antara TFTP dan FTP. Ini tidak pernah diterima dengan luas di Internet, dan sekarang diberi status Bersejarah oleh IETF. Ini berjalan melalui port 115, dan sering menerima inisialisasi dari SFTP. Ini mempunyai set perintah dari 11 perintah dan mendukung tiga jenis transmisi data: ASCII, binari dan kontinu. Untuk sistem dengan ukuran kata yang merupakan kelipatan 8 bit, implementasi dari binari dan berkelanjutan dan kontinu adalah sama. Protokol ini juga mendukung masuk dengan ID pengguna dan kata sandi, folder hierarkis dan manajemen berkas (termasuk rename, delete, upload, download, download with overwrite, dan download with append).

Jenis FTP 
Berdasarkan Hak Akses:
 FTP User FTP user artinya FTP yang dapat di akses dan memiliki permisi hanya di batasi hanya untuk user tertentu. Karena FTP user disertakan suatu autentifikasi bila kita akan mengakses ke dalam nya. Format dari FTP user: ftp://user@host.domain

 FTP Anonymous FTP anonymous artinya FTP yang disediakan secara anonymous/ tanpa nama, dengan kata lain FTP tersebut dapat di akses oleh siapapun dan biasanya tanpa password ataupun bila diminta password. Biasanya server meminta alamat email kita sebagai password nya untuk verifikasi. Format dari FTP anonymous: ftp://ftp5.freebsd.org
Secara Global:

1. FTP Server

FTP server adalah komputer server yang memberikan akses FTP ke jaringan local maupun Internet (global). Macam – macam software pembangun FTP server antara lain adalah FTPd, Pro-FTPd, Wu-FTPd, FTPX, Troll-FTPd .

2. FTP Client

FTP client adalah komputer yang meminta koneksi ke FTP server untuk tujuan tukar menukar file. Ada beberapa macam jenis FTP client,

Perbedaan dari HTTP 
HTTP pada dasarnya memperbaiki bug di FTP yang membuatnya tidak nyaman digunakan untuk banyak transfer singkat seperti biasanya di halaman peramban.

FTP memiliki koneksi kontrol tetap yang memelihara direktori kerja saat ini dan flag lainnya, dan setiap transfer membutuhkan koneksi sekunder melalui data yang ditransfer. Dalam mode "pasif", koneksi sekunder ini dari klien ke server, dimana mode sedangkan pada mode "aktif" default koneksi ini adalah dari peladen ke klien. Pembalikan peran yang nyata ini saat dalam mode aktif, dan nomor port acak untuk semua transfer, itulah mengapa tembok api dan gateway NAT mengalami kesulitan dengan FTP. HTTP adalah kontrol tidak tetap dan multipleks data melalui koneksi tunggal dari klien ke peladen pada nomor port yang dikenal, yang dengan mudah melewati gateway NAT dan mudah dikelola oleh tembok api.

Mengatur sebuah koneksi kontrol FTP  cukup lambat karena keterlambatan bolak-balik pengiriman semua perintah yang diperlukan dan menunggu tanggapan, jadi sudah biasa untuk memunculkan koneksi kontrol dan menahannya terbuka untuk beberapa transfer berkas daripada mematikan dan membuat kembali sesi lagi setiap kali. Sebaliknya, HTTP awalnya memutuskan sambungan setelah setiap transfer karena melakukan hal itu sangat murah. Sementara HTTP kemudian memperoleh kemampuan untuk menggunakan kembali koneksi TCP untuk banyak transfer, model konseptual masih permintaan independen daripada sebuah sesi.

Saat FTP mentransfer melalui koneksi data, koneksi kontrol diam. Jika transfer terlalu lama, tembok api atau NAT dapat memutuskan bahwa koneksi kontrol mati dan berhenti melacaknya, memutuskan koneksi secara efektif dan membingungkan unduhan. Koneksi HTTP tunggal hanya diam di antara permintaan dan merupakan hal yang normal dan koneksi semacam itu diperkirakan akan terputus setelah waktu habis.

Keamanan 
FTP tidak dirancang untuk menjadi protokol yang aman, dan memiliki banyak kelemahan keamanan. Pada Mei 1999, penulis dari  menjabarkan kerentanan terhadap masalah berikut:

 Serangan brutal
 Serangan memantul FTP
 Penganalisa paket
 Pencurian port (menebak port terbuka berikutnya dan merebut koneksi yang sah)
 Penyaruan
 Pencacahan nama pengguna
 DoS atau DDoS

Kode balasan FTP 
Di bawah ini adalah ringkasan dari balasan kode FTP yang dapat dikembalikan oleh peladen FTP. Kode-kode ini telah di standarisasi dalam  oleh IETF. Kode balasannya berupa nilai tiga -digit. Digit pertama digunakan untuk menunjukkan salah satu dari tiga hasil yang mungkin — berhasil, kesalahan, atau untuk menunjukkan kesalahan atau balasan yang tidak lengkap:

 2yz – Balasan berhasil
 4yz atau 5yz – Balasan kesalahan
 1yz atau 3yz – Kesalahan atau Balasan tidak lengkap

Digit kedua menentukan jenis kesalahan:

 x0z – Sintaks. Balasan ini mengacu pada kesalahan sintaksis.
 x1z – Informasi. Balasan untuk permintaan informasi.
 x2z – Koneksi. Balasan mengacu pada kontrol dan koneksi data.
 x3z – Autentikasi dan akutansi. Balasan untuk proses masuk dan prosedur akuntansi.
 x4z – Tidak terdefinisikan.
 x5z – Berkas sistem. Balasan ini menyampaikan kode status dari berkas sistem peladen.

Digit ketiga dari kode balasan digunakan untuk menyediakan detail tambahan untuk setiap dari katerogi ditentukan oleh digit kedua.

Referensi

Bacaan lanjutan 
  – Perintah CWD FTP Juli 1975.
  – (Standar) File Transfer Protocol (FTP). J. Postel, J. Reynolds. Oktober 1985.
  – (informasional) FTP Ramah-Tembok api. Februari 1994.
  – (informasional) Cara Menggunakan FTP Anonim. Mei 1994.
  – FTP Operation Over Big Address Records (FOOBAR). Juni 1994.
  – Uniform Resource Locators (URL). Desember 1994.
  – (Standar yang Diusulkan) Ekstensi Keamanan FTP. Oktober 1997.
  – (Standar yang Diusulkan) Mekanisme negosiasi fitur untuk Protokol Transfer Berkas. Agustus 1998.
  – (Standar yang Diusulkan) Ekstensi untuk mode pasif IPv6, NAT, dan Extended. September 1998.
  – (informasional) Pertimbangan Keamanan FTP. Mei 1999.
  – (Standar yang Diusulkan) Internasionalisasi Protokol Transfer Berkas. Juli 1999.
  – (Standar yang Diusulkan) Ekstensi ke FTP. P. Hetmon. Maret 2007.
  – (Standar yang Diusulkan) Perintah FTP dan Registri Ekstensi. Maret 2010.
  – (Standar yang Diusulkan) Perintah HOST Protokol Transfer Berkas untuk Host Virtual. Maret 2014.
 Registri Perintah dan Ekstensi FTP IANA – Registri resmi Perintah dan Ekstensi FTP

Pranala luar 
 
 FTP Server Online Tester Otentikasi, enkripsi, mode, dan konektivitas.
 Peladen FTP Anonim berdasarkan Kode Negara TLD (2012): 

 
Protokol Internet
Protokol perpindahan berkas
Peladen
Protokol lapisan aplikasi
Standar internet
Perangkat lunak Unix
Sejarah internet
Perintah OS/2