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.
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
Command | RFC | Description |
---|---|---|
ABOR | Abort an active file transfer. | |
ACCT | Account information. | |
ADAT | RFC 2228 | Authentication/Security Data |
ALLO | Allocate sufficient disk space to receive a file. | |
APPE | Append. | |
AUTH | RFC 2228 | Authentication/Security Mechanism |
CCC | RFC 2228 | Clear Command Channel. |
CDUP | Change to Parent Directory. | |
CONF | RFC 2228 | Confidentiality Protection Command |
CWD | Change working directory. | |
DELE | Delete file. | |
ENC | RFC 2228 | Privacy Protected Channel |
EPRT | RFC 2428 | Specifies an extended address and port to which the server should connect. |
EPSV | RFC 2428 | Enter extended passive mode. |
FEAT | RFC 2389 | Get the feature list implemented by the server. |
HELP | Returns usage documentation on a command if specified, else a general help document is returned. | |
LANG | RFC 2640 | Language Negotiation |
LIST | Returns 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. | |
LPRT | RFC 1639 | Specifies a long address and port to which the server should connect. |
LPSV | RFC 1639 | Enter long passive mode. |
MDTM | RFC 3689 | Return the last-modified time of a specified file. |
MIC | RFC 2228 | Integrity Protected Command |
MKD | Make directory. | |
MLSD | RFC 3659 | Lists the contents of a directory if a directory is named. |
MLST | RFC 3659 | Provides data about exactly the object named on its command line and no others. |
MODE | Sets the transfer mode (Stream, Block, or Compressed). | |
NLST | Returns a list of file names in a specified directory. | |
NOOP | No operation (dummy packet; used mostly as keepalives). | |
OPTS | RFC 2389 | Select options for a feature. |
PASS | Authentication password. | |
PASV | Enter passive mode. | |
PBSZ | RFC 2228 | Protection Buffer Size |
PORT | Specifies an address and port to which the server should connect. | |
PROT | RFC 2228 | Data Channel Protection Level |
PWD | Print working directory. Returns the current directory of the host. | |
QUIT | Disconnect. | |
REIN | Re-initialize the connection. | |
REST | Restart transfer from the specified point. | |
RETR | Retrieve a copy of the file. | |
RMD | Remove a directory. | |
RNFR | Rename from. | |
RNTO | Rename to. | |
SITE | Sends site specific commands to remote server. | |
SIZE | RFC 3659 | Return the size of a file. |
SMNT | Mount file structure. | |
STAT | Returns the current status. | |
STOR | Accept data and store data as a file at the server site. | |
STOU | Store file uniquely. | |
STRU | Set file transfer structure. | |
SYST | Return system type. | |
TYPE | Sets the transfer mode (ASCII/binary). | |
USER | Authentication username. | |
XCUP | RFC 775 | Change to the parent of the current working directory. |
XMKD | RFC 775 | Make directory. |
XPWD | RFC 775 | Print current working directory. |
XRCP | RFC 743 | |
XRMD | RFC 775 | Remove directory. |
XRSQ | RFC 743 | |
XSEM | RFC 737 | Send, mail if cannot. |
XSEN | RFC 737 | Send 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