Protokol Transfer Berkas

**Protokol Transfer Berkas (PTB)** () adalah protokol komunikasi baku yang digunakan untuk mentransfer berkas komputer dari sebuah platform (**') ke sebuah klien pada [[jaringan komputer]]. FTP dibangun pada arsitektur [[Klien-server|model klien-server]] menggunakan kendali terpisah dan hubungan data antara klien dan peladen. Pengguna PTB dapat mengotentikasi diri merekae dengan protokol masuk [[Teks terang|teks yang jelas]], biasalnya dalam sebuah bentuk nama panggilan dan kata sandi, tetapi dapat terhubung secara anonim jika peladen mengizinkan hubungan anonim. Untuk transmisi aman yang melindungi nama panggilan dan kata sandi, dan mengenkripsi konten, PTB sering kali [[Protokol transfer berkas#Keamanan|diamankan]] dengan [[Transport Layer Security|SSL/TLS]] ([[FTPS]]) atau diganti dengan ''[[SSH File Transfer Protocol]]'' (SFTP).

Aplikasi klien FTP pertama adalah [[Antarmuka baris perintah|program baris perintah]] yang dikembangkan sebelum [[sistem operasi]] memiliki [[antarmuka pengguna grafis]]. Klien FTP ini masih dirilis kepada sebagian besar sistem operasi seperti [[Microsoft Windows|Windows]], [[Unix]], dan [[Linux]]. Banyak [[Klien (komputer)|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 [[Manajer berkas|pengelola berkas]].

Sebuah klien FTP biasanya terintegrasi di [[peramban web]], di mana berkas peladen dijelajahi dengan prefix [[Uniform Resource Identifier|URI]] "<code>ftp://</code>". Sepanjang tahun 2021, dua vendor peramban 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 [[Network Control Protocol (ARPANET)|NCP]], pendahulu dari [[Internet protocol suite|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 [[Alamat IP versi 6|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 [[download|pengunduhan (''download'')]] dan [[upload|penggugahan (''upload'')]] berkas-berkas komputer antara **klien** 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|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 <code></code>. Klien FTP dapat menghubungi server FTP dengan membuka URI tersebut.

FTP menggunakan [[protokol jaringan|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 sambungan, [[port TCP]] nomor 21 di sisi server akan "mendengarkan" percobaan sambungan dari sebuah klien FTP dan kemudian akan digunakan sebagai port pengatur (''control port'') untuk (1) membuat sebuah sambungan 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 sambungan kendali telah dibuat, maka server akan mulai membuka [[port TCP]] nomor 20 untuk membentuk sebuah sambungan baru dengan klien untuk mengirim data aktual yang sedang dipertukarkan saat melakukan pengunduhan dan penggugahan.

FTP hanya menggunakan metode autentikasi standar, yakni menggunakan nama pengguna dan [[kata sandi]] yang dikirim dalam bentuk tidak ter[[enkripsi]]. Pengguna terdaftar dapat menggunakan nama pengguna dan kata sandinya untuk mengakses, mengunduh, dan mengunggah berkas-berkas yang ia kehendaki. Umumnya, para pengguna terdaftar memiliki akses penuh terhadap beberapa direktori, sehingga mereka dapat membuat [[berkas komputer|berkas]], membuat [[direktori]], dan bahkan menghapus berkas. Pengguna yang belum terdaftar dapat juga menggunakan metode ''[[anonymous login]]'', yakni dengan menggunakan nama pengguna <code>[[anonymous]]</code> dan kata sandi 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 berkas 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 berkas.

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 berkas karena berkas 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: <code>ftp://[user[:password]@]host[:port]/[url-path]</code> (bagian yang diberi tanda kurung adalah opsional).

Sebagai contoh, URL  mewakili berkas ''myfile.txt'' dari direktori ''mydirectory'' pada peladen ''public.ftp-servers.example.com'' sebagai sumber daya FTP. URL  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 (komputasi)|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 berkas 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 [[Anonimitas|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|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 sambungan yang tidak meminta TLS. Ekstensi protokol ini didefinisikan dalam . FTPS implisit adalah standar usang untuk FTP yang memerlukan penggunaan sambungan 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 distandardisasi 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 [[Internet Engineering Task Force|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]], [[Berkas biner|binari]] dan kontinu. Untuk sistem dengan [[Kata (arsitektur komputer)|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 pengelolaan berkas (termasuk ganti nama, hapus, unggah, unduh, unduh dengan penimpaan, dan unduh dengan tambahan).

== 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: <code></code>

# **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 kata sandi ataupun bila diminta kata sandi. Biasanya server meminta alamat email kita sebagai kata sandinya untuk verifikasi. Format dari FTP anonymous: <code></code>
**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 sambungan ke FTP server untuk tujuan tukar menukar berkas. Ada beberapa macam jenis FTP client,

== Perbedaan dari HTTP ==
[[Hypertext Transfer Protocol|HTTP]] pada dasarnya memperbaiki bug di FTP yang membuatnya tidak nyaman digunakan untuk banyak transfer singkat seperti biasanya di halaman peramban.

FTP memiliki sambungan kendali tetap yang memelihara direktori kerja saat ini dan flag lainnya, dan setiap transfer membutuhkan sambungan sekunder melalui data yang ditransfer. Dalam mode "pasif", sambungan sekunder ini dari klien ke server, dimana mode sedangkan pada mode "aktif" default sambungan 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 kendali tidak tetap dan multipleks data melalui sambungan tunggal dari klien ke peladen pada nomor port yang dikenal, yang dengan mudah melewati gateway NAT dan mudah dikelola oleh tembok api.

Mengatur sebuah sambungan kendali FTP  cukup lambat karena keterlambatan bolak-balik pengiriman semua perintah yang diperlukan dan menunggu tanggapan, jadi sudah biasa untuk memunculkan sambungan kendali 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 sambungan TCP untuk banyak transfer, model konseptual masih permintaan independen daripada sebuah sesi.

Saat FTP mentransfer melalui sambungan data, sambungan kendali diam. Jika transfer terlalu lama, tembok api atau NAT dapat memutuskan bahwa sambungan kendali mati dan berhenti melacaknya, memutuskan sambungan secara efektif dan membingungkan unduhan. Sambungan HTTP tunggal hanya diam di antara permintaan dan merupakan hal yang normal dan sambungan 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 sambungan 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 standardisasi dalam  oleh IETF. Kode balasannya berupa nilai tiga -digit. Digit pertama digunakan untuk menunjukkan salah satu dari tiga hasil yang mungkin&nbsp;— berhasil, kesalahan, atau untuk menunjukkan kesalahan atau balasan yang tidak lengkap:

* 2yz&nbsp;&#x2013; Balasan berhasil
* 4yz atau 5yz &#x2013; Balasan kesalahan
* 1yz atau 3yz &#x2013; Kesalahan atau Balasan tidak lengkap

Digit kedua menentukan jenis kesalahan:

* x0z &#x2013; Sintaks. Balasan ini mengacu pada kesalahan sintaksis.
* x1z &#x2013; Informasi. Balasan untuk permintaan informasi.
* x2z &#x2013; Sambungan. Balasan mengacu pada kendali dan sambungan data.
* x3z &#x2013; Autentikasi dan akutansi. Balasan untuk proses masuk dan prosedur akuntansi.
* x4z &#x2013; Tidak terdefinisikan.
* x5z &#x2013; 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
* 
* [//servertest.online/ftp FTP Server Online Tester] Otentikasi, enkripsi, mode, dan ketersambungan.
* Peladen FTP Anonim berdasarkan Kode Negara TLD (2012):