Thursday, October 16, 2014

FTP Jurnal

Tutorial and How to - FTP (File Transfer Protocol - Internet)
Based on RFC-959

Contoh makalah ini berdasarkan FTP versi RFC-959 dalam bahasa Inggris yang diterjemahkan
dan dirangkum.


Tugas Jaringan Komputer
File Transfer Protocol



Kristian Adrianto (2012130052)
Sukianto (2012130031)





STMIK LIKMI
Jln. Ir Haji Juanda No. 96
Bandung


KATA PENGANTAR
Puji syukur atas kehadiran Tuhan yang Maha Esa atas rahmat dan petunjuk sehingga kami dapat menyelesaikan tugas Jaringan Komputer ini.
Kami menyadari bahwa sekiranya masih banyak kekurangan dan keterbatasan dalam penyajian data dalam membuat tugas Jaringan Komputer ini. Oleh karena itu kami mengharapkan kritik dan saran agar tugas ini dapat disempurnakan dikemudian hari.
Demikian kami sampaikan apabila ada kata-kata yang kurang berkenan kami meminta maaf yang sebesar-besarnya.



Bab I
PENDAHULUAN

 1.1      Latar Belakang
Dunia computer sering disebut sebagai dunia telekomunikasi yang sangat populer karena mampu mengakses data yang sekian banyak jumlahnya dan mampu diakses kemanapun. Perkembangan computer dalam mengakses sebuah data pun kini mulai berkembang dengan adanya internet yang dapat mengakses data keseluruh dunia Intenet merupakan program computer untuk mengakses sebuah data baik dalam jumlah kecil maupun dalam jumlah yang besar serta untuk mengambil sebuah data dari jarak yang jauh. Dalam internet terdapat banyak pemprograman yang dapat kita gunakan untuk untuk mengambil suatu informasi serta suatu data yang ingin kita peroleh.
            Internet dapat melakukan transaksi data diantaranya upload dan download, kedua hal tersebut dapat terjadi dengan menggunakan protokol yang bernama FTP singkatan dari "File Transfer Protocol". FTP adalah protokol yang sangat penting dan sering kita gunakan. FTP juga digunakan untuk berbagi musik MP3, kebanyakan lelang online dan mendownload game.
Tujuan dari FTP server adalah sebagai berikut :
·         Untuk tujuan sharing data
·         Untuk menyediakan indirect atau implicit remote computer
·         Untuk menyediakan tempat penyimpanan bagi user
·         Untuk menyediakan transfer data yang reliable dan efisien
Banyak command dan cara kerja yang dapat kita pelajari dan bahkan gunakan dan dalam kesempatan ini akan kami bahas di paper ini.

 1.2            Rumusan Masalah
·         Pihak apa saja yang terlibat dalam FTP ini?
·         Bagaimana proses pesan atau data dikirim?
·         Apa kegunaan FTP ini?
·         Bagaimana mekanisme atau cara kerja FTP ini?

 1.3            Tujuan Penulisan
Untuk mengetahui bagaimana proses kerja atau mekanisme FTP ini, bagaimana proses pesan atau data yang dikim oleh FTP ini dan kegunaan dari FTP ini.



Bab II
PEMBAHASAN

Dua hal yang dibutuhkan dalam FTP adalah FTP Server dan FTP Client. FTP server adalah suatu server yang menjalankan software yang berfungsi untuk memberikan layanan tukar menukar file dimana server tersebut selalu siap memberikan layanan FTP apabila mendapat permintaan (request) dari FTP client. FTP client adalah computer yang merequest koneksi ke FTP server untuk tujuan tukar menukar file. Setelah terhubung dengan FTP server, maka client dapat men-download, meng-upload, merename, men-delete, dll sesuai dengan permission yang diberikan oleh FTP server. Berikut ilustrasi proses server dan client FTP :


Keterangan :
·         Server-PI
Server-Protokol Interpreter "listen" di Port tertentu untuk koneksi dari user-PI dan menstabilkan komunikasi koneksi kontrol. Server-PI menerima perintah FTP standar dari user-PI, server-PI mengirim balasan dan mengatur server-DTP.

·         Server-DTP
Server-Data Transfer Process, dalam keadaan normal berstatus "active", server-DTP menstabilkan koneksi data dengan "listen" ke port data. Server-DTP ini mengatur parameter untuk mentransfer, menyimpan data dari perintah Protocol Interpreter. Status DTP dapat dikonfigurasi menjadi "passive" untuk men”listen”.

·         User-DTP
User-DTP "listen" pada port data untuk menghubungkan dari server-FTP.


·         User-PI
Protokol Interpreter menginisiasi koneksi kontrol dari port tertentu ke proses server-FTP, menginisiasikan perintah FTP dan mengendalikan User-DTP jika proses adalah bagian dari file transfer.

Koneksi Kontrol
User-PI memulai koneksi kontrol (port 21) dan perintah FTP dihasilkan oleh User-PI,  dikirim melalui koneksi kontrol ke Server-PI. Standard FTP command dihasilkan oleh User-PI dan ditransmisikan ke Server-PI menggunakan koneksi kontrol. Balasan dikirim dari Server-PI ke User-PI melalui koneksi kontrol dalam merespon perintah dari User-PI.
Perintah FTP menspesifikasikan parameter untuk koneksi data (data port, transfer mode, representasi type, dan struktur) dan operasi yang dilakukan untuk file system (store, retrieve, append,  delete, dll.) User-DTP (port 20) harus "listen" pada port tertentu yang ditunjuk, dan server menginisiasi koneksi data dan transfer data sesuai dengan yang ditentukan oleh parameter. Port tidak perlu di Host yang sama dengan port yang menginisiasikan perintah FTP melalui koneksi kontrol, namun proses dalam User-FTP   harus memastikan “listen” pada port data yang. Dan koneksi data mungkin digunakan untuk mengirim dan menerima secara simultan.
Koneksi Data
Setelah koneksi kontrol telah stabil, langkah berikutnya adalah untuk mengatur sambungan data dan mengkomunikasikan parameter. Koneksi Kontrol harus tetap stabil ketika koneksi data melakukan transaksi data.
User-DTP menggunakan port 21 secara default untuk “listen” data (sama dengan koneksi kontrol), sedangkan Server-DTP menggunakan port 20. User-PI kemudian mengirimkan FTP Transfer Request, Server-PI menerima dan memulai koneksi data ke port 21 dan mengirimkan konfirmasi reply ke User-PI melalui koneksi kontrol.
User-PI memiliki kemampuan untuk mengubah dari port data default pada sisi pengguna, dengan cara dari PORT command ( Active Mode ). User-PI juga dapat mengubah port default digunakan pada sisi Server untuk data dengan perintah PASV ( Mode pasif ). Server bertanggung jawab untuk membuka, memelihara dan menutup koneksi data. Untuk menutup koneksi data, server akan merespon EoF, ABORT, error condition, perubahan port pengguna atau koneksi ditutup secara normal.
Tipe representasi yang dapat digunakan dalam FTP bisa dalam berbagai tipe:
·         Tipe ASCII
o   Tipe ini menjadi tipe umum yang akan diterima oleh setiap implementasi FTP terutama untuk transfer teks.
·         Tipe Image
o   Data dikirim sebagai bit yang berlanjut. Untuk transfer data dalam representasi ini, data di atur berukuran 8-bit.
·         Tipe Local
o   Data dikirim dalam locigal bytes dari ukuran yang dispesifikasikan oleh parameter kedua, Byte size. Nilai dari Byte size harus Decimal Integer sehingga tidak ada nilai default.
Bila ada perbedaan Byte size, maka logical byte sebaiknya dikirim berlanjut.
Struktur data yang digunakan dalam FTP:
v  File Struktur
o   Dimana tidak ada struktur internal ataupun perintah untuk struktur tidak dipakai maka file dianggap sebuah urutan berlanjut dari byte data.
v  Record Struktur
o   Dimana file terbuat dari urutan pesan atau catatan biasanya dalam text file (file dengan tipe representasi ASCII).
v  Page Struktur
o   Dimana file terbuat dari halaman yang di index. Untuk mentransmisikan file tipe ini tidak berkelanjutan. Struktur file ini biasanya diketahui sebagai “Random Access Files”. Biasanya dalam file ini diasosiasikan informasi lain dengan file utama sebagai sebuah file, atau dengan sebuah section dalam file tersebut, bisa juga keduanya. Dalam FTP sebuah section / bagian dalam sebuah file dinamakan pages / halaman.
o   Untuk membedakan ukuran size yang beragam dan informasi yg diasosiasikan, setiap pages / halaman ini, terkirim dengan sebuah page header.
o   Isi dari Page Header tersebut adalah :
§  Header Length (Panjang Header) :
Minimumnya yaitu 4 byte.
§  Page Index (Index Halaman) :

Merupakan logical page number dari bagian ini dari suatu file.

Bagian ini bukan merupakan Transmission Sequence Number dari Page ini, tapi index ini digunakan untuk mengetahui / mengidentifikasi halaman dari sebuah file.
§  Data Length (Panjang Data) :
Yaitu nomor dari logical bytes dalam page data.
Minimumnya yaitu 0 byte.
§  Page Type :
Berikut adalah tipe nya :
·         0 = Last Page (Halaman Terakhir)
Ini biasanya dijadikan petunjuk bahwa ini merupakan akhir dari sebuah dari Transmisi Page Struktur. Panjang header nya harus 4, dan panjang data nya harus 0.
·         1 = Simple Page
Ini merupakan Normal Type untuk sebuah file Simple Paged tanpa informasi Page level associated control.. Panjang header nya harus 4.
·         2 = Descriptor Page
Tipe ini biasanya digunakan pada saat mengirimkan sebuah informasi Deskriptif untuk sebuah file secara keseluruhan.
·         3 = Access Controlled Page
Tipe ini sudah  termasuk sebuah header field tambahan untuk File berhalaman / page field dengan informasi page level association control. Panjang header nya harus 5.
§  Optional Fields
Header fields lebih lanjut biasanya digunakan untuk men supply control information per halaman, contohnya, akses kontrol per-page.
o   Semua field memiliki panjang satu logical byte. Ukuran logical byte ini dispesifikan oleh sebuah perintah TYPE command.
o   Sebuah catatan penting tentang parameter :
Sebuah file harus disimpan dan diambil menggunakan parameter yang sama jika versi yang diambil harus identik dengan versi yang di transmisikan. Sebaiknya, implementasi FTP harus mengembalikan sebuah file yang identik dengan file aslinya jika parameter yang digunakan untuk menyimpan dan mengambil file adalah sama.
Terdapat beberapa mode dalam koneksi data pada FTP :
v  Active Mode
Dalam mode aktif FTP klien terhubung dari port acak (N> 1023) ke port perintah server FTP, port 21. Kemudian, klien mulai mendengarkan port N +1 dan mengirim perintah FTP PORT N +1 ke server FTP. Server kemudian akan menghubungkan kembali ke port data klien tertentu dari port data lokal, yang adalah port 20.



•          Passive Mode
Dalam mode pasif FTP klien memulai koneksi ke server, memecahkan masalah firewall menyaring koneksi port data yang masuk ke klien dari server. Ketika membuka koneksi FTP, klien membuka dua port acak secara lokal (N> 1023 dan N +1). Kontak port pertama server pada port 21, tapi bukannya kemudian mengeluarkan perintah PORT dan memungkinkan server untuk menghubungkan kembali ke port data, klien akan mengeluarkan perintah PASV. Hasil ini adalah bahwa server kemudian membuka port acak (P> 1023) dan mengirim P kembali ke klien dalam menanggapi perintah PASV. Klien kemudian memulai koneksi dari port N +1 ke port P pada server untuk mentransfer data.


Mode Transmisi

Data ditransfer dalam tiga mode :

v  Mode Streaming

Dimana semua data ditransfer sebagai stream atau aliran dari ‘transfer bytes'. Untuk file terstruktur dalam Struktur Record, terdapat dua byte digunakan untuk menunjukkan End of Record (EOR) dan End of File (EOF) . Byte pertama adalah 11111111 (Escape Character), dan byte kedua adalah 00000001 untuk EOR, 00000010 untuk EOF dan 00000011 untuk keduanya EOR dan EOF. Untuk file yang terstruktur dalam Struktur File, EOF ditunjukkan dalam pengirim menutup koneksi bukan byte dalam aliran data.
v  Mode Blok
Dalam mode ini, data ditransfer dalam blok, setiap blok memiliki header seperti berikut :



Penjelasan kode yang digunakan:
·         128 - Akhir data blok EOR
·         64 - Akhir data blok EOF
·         32 - kesalahan Suspect di blok
·         16 - Blok adalah Restart Marker

Penomoran di atas digunakan jadi jika lebih dari satu keterangan berlaku untuk blok data tertentu maka bit yang sesuai dapat diatur (yaitu 10000000  = 128, 01000000  = 64 sehingga blok yang memiliki keduanya EOF dan EOR akan memiliki penjelasan atau decriptor 11000000  = 192). Bagian ukuran byte ditunjukkan dari byte didalam blok data.

v  Mode Compressed

Hal ini berguna untuk membuat transfer data lebih efisien dalam penggunaan bandwidth yang tersedia tanpa mempengaruhi terlalu banyak pada penggunaan CPU. Ada tiga macam informasi yang dikirim:
1. Data Utama dikirim dalam string byte:



Byte pertama dari string byte memiliki 0 sebagai bit pertama dengan 7 bit berikut digunakan untuk menentukan jumlah n . Nilai n merupakan jumlah byte data yang dikirim, jumlah maksimum adalah 127 .


2. Compressed data dapat terdiri dari replikasi :


di mana byte d berulang dan diulang n kali. Byte yang direplikasi ditandai dengan dua bit pertama menjadi 1 0 .
3. Escape Sequence :


Byte pertama semuanya adalah nol dan byte kedua adalah sama dengan byte descriptor digunakan dalam Blok Mode, menggunakan kode yang sama yang berlaku untuk data ini.


FTP Commands

Perintah-perintah FTP yang dikirimkan terdiri atas string teks sederhana (mengikuti protocol Telnet). Sebagai contoh, untuk mendapatkan kembali suatu file, client mengirimkan “RETR filename” di koneksi kendali ke FTP server. Untuk mentransfer suatu file, client akan mengirimkan “STOR filename”.
FTP server mengetahui setiap perintah pada setiap balasan FTP, dimana terdiri atas tiga digit. Digit pertama menandai adanya tanggapan yang baik, tidak baik, atau yang tidak sempurna. Jika satu kesalahan terjadi, maka digit kedua bisa digunakan untuk mendeteksi kesalahan yang terjadi. Dengan cara yang sama, digit ketiga dapat digunakan untuk lebih menspesifikasikan kesalahan yang terjadi Digit pertama merupakan digit yang paling utama, dan kemungkinan nilai yang muncul.
Berikut perintah FTP :
No
Perintah
 Deskripsi
 1
 ABOR
 abort / membatalkan operasi transfer yang sedang berlangsung
 2
 ACCT
 mendapatkan informasi akun (account)
 3
 ADAT
 autentikasi data
 4
 ALLO
 alokasi sebagian disk dengan ukuran yang cukup untuk menerima file
 5
 APPE
 append / menambah file di akhir
 6
 AUTH
 mekanisme autentikasi
 7
 CCC
 menghapus Channel Command
 8
 CDUP
 mengubah ke parent directory
 9
 CONF
 Confidentiality Protection Command
 10
 CWD
 mengubah direktori kerja saat ini
 11
 DELE
 menghapus file
 12
 ENC
 Privacy Protected Channel
 13
 EPRT
 memberikan extended address dan port yang harus dihubungi
 14
 EPSV
 memasuki extended passive mode
 15
 FEAT
 mendapatkan daftar fitur yang diimplementasi server
 16
 HELP
 meminta bantuan tentang daftar perintah
 17
 LANG
 Language Negotiation
 18
 LIST
 mengembalikan informasi file atau direktori, jika tidak dispesfikasi maka informasi tentang direktori saat ini akan dikembalikan
 19
 LPRT
 memberikan informasi long address dan port untuk dihubungi
 20
 LPSV
 memasuki mode pasif dengan jangka waktu lama
 21
 MDTM
 mengembalikan waktu terakhir file diperbaharui
 22
 MIC
 Integrity Protected Command
 23
 MKD
 membuat direktori
 24
 MLSD
 mendaftar isi direktori jika direktori dinamai
 25
 MLST
 menyediakan data tentang objek tertentu jika diberikan pada perintah, bukan yang lain
 26
 MODE
 mengatur mode transfer (stream, block, atau compressed)
 27
 NLST
 mengembalikan daftar nama file di direktori tertentu
 28
 NOOP
 No Operation (dummy packet, digunakan agar koneksi terjaga / tak terputus)
 29
 OPTS
 memilih opsi / pilihan untuk sebuah fitur
 30
 PASS
 autentikasi password
 31
 PASV
 menggunakan passive mode untuk berkomunikasi
 32
 PBSZ
 Protection Buffer Size
 33
 PORT
 memberikan informasi spesifik tentang nomor port yang harus dihubungi
 34
 PROT
 Data Channel Protection Level
 35
 PWD
 menampilkan direktori saat ini
 36
 QUIT
 disconnect / putuskan sambungan ke server
 37
 REIN
 inisialisasi (reinitialize) koneksi
 38
 REST
 mengirimkan salinan dari file
 39
 RMD
 menghapus direktori
 40
 RNFR
 mengubah nama file dari (rename from)
 41
 RNTO
 mengubah nama file ke (rename to)
 42
 SITE
 mengirim perintah spesifik ke server
 43
 SIZE
 mengembalikan informasi ukuran file
 44
 SMNT
 mount file structure
 45
 STAT
 mengembalikan status terkini
 46
 STOR
 menerima data dan menyimpan data sebagai file dalam server
 47
 STOU
 menyimpan file secara unik (tak boleh ada file bernama sama)
 48
 STRU
 mengatur file transfer structure
 49
 SYST
 mengembalikan informasi jenis sistem
 50
 TYPE
 mengatur mode pengiriman (transfer mode) yaitu: ASCIIatau binary
 51
 USER
 autentikasi username
 52
 XCUP
 mengganti parent dari direktori saat ini
 53
 XMKD
 membuat direktori
 54
 XPWD
 menampilkan direktori saat ini
 55
 XRMD
 menghapus direktori
 56
 XSEM
 mengiri, jika tidak bisa akan dialihkan ke mail
 57
 XSEN
 mengirim (send) ke terminal

Berikut Reply dari perintah FTP :
v  1yz
Positive Preliminary reply. Permintaan telah diketahui, namun balasan yang lain dari client tetap diharapkan.
v  2yz
Positive Completion reply. Permintaan telah berhasil dilakukan, sehingga client dapat mengirimkan permintaan yang lain.
v  3yz
Positive Intermediate reply. Perintah telah diterima, namun masih membutuhkan informasi yang lain. Client diharuskan untuk mengirimkan balasan perintah lainnya.
v  4yz
Transient Negative reply. Perintah gagal, namun masih ada kesempatan untuk mencobanya lagi.
v  5yz
Permanent Negative Completion reply. Perintah gagal, namun tidak harus diulangi lagi.

v  Berikut daftar Replies Command :
               110 Restart marker reply.
               120 Service ready in nnn minutes.
               125 Data connection already open; transfer starting.
               150 File status okay; about to open data connection.
               200 Command okay.
               202 Command not implemented, superfluous at this site.
               211 System status, or system help reply.
               212 Directory status.
               213 File status.
               214 Help message.
               215 NAME system type.
               220 Service ready for new user.
               221 Service closing control connection.
               225 Data connection open; no transfer in progress.
               226 Closing data connection.
               227 Entering Passive Mode (h1,h2,h3,h4,p1,p2).
               230 User logged in, proceed.
               250 Requested file action okay, completed.
               257 "PATHNAME" created.
               331 User name okay, need password.
               332 Need account for login.
               350 Requested file action pending further information.
               421 Service not available, closing control connection.
               425 Can't open data connection.
               426 Connection closed; transfer aborted.
               450 Requested file action not taken.
               451 Requested action aborted: local error in processing.
               452 Requested action not taken.
               500 Syntax error, command unrecognized.
               501 Syntax error in parameters or arguments.
               502 Command not implemented.
               503 Bad sequence of commands.
               504 Command not implemented for that parameter.
               530 Not logged in.
               532 Need account for storing files.
               550 Requested action not taken.
               551 Requested action aborted: page type unknown.
               552 Requested file action aborted.
               553 Requested action not taken.


Bab III
Kesimpulan

FTP bisa bekerja pada mode active atau passive, mode ini menentukan bagaimana koneksi data diberlakukan. Dalam kedua hal tersebut, komputer client membuat sebuah TCP koneksi kontrol dari sebuah port ke-N >1024 acak yg tidak sedang dipakai ke sebuah FTP server command di port 21. Dalam mode Active, komputer client memulai mode listening / menunggu untuk masuknya koneksi data ke port N+1 > 1024 dari server tersebut (komputer client mengirim FTP command port N+1 > 1024 untuk memberitahukan ke server bahwa port tersebut adalah port yg digunakan untuk mode listening data tersebut).
Dalam situasi dimana komputer kita berada dibelakang firewall dan tidak dapat menerima koneksi TCP yang akan masuk, mode passive mungkin dapat digunakan. Di mode ini, komputer client menggunakan koneksi kontrol untuk mengurim sebuah perintah PASV (PASV command) ke servernya dan lalu menerima sebuah IP address server dan nomor port server yang bisa digunakan, lalu client dapat membuka koneksi data dari client port mana saja menuju IP server dan port server yang telah diterima tadi. Kedua mode ini telah diperbaharui dalam september 1998 untuk kompatibel dengan Ipv6.
Selanjutnya Server merespon melalui koneksi kontrol dengan 3 digit status codes dalam format ASCII dengan text message opsional. Contohnya “200” atau “200 OK” yang berarti perintah terakhir yang kita lakukan sudah berhasil di eksekusi. Nomor itu merepresentasikan kode untuk respon dan text messagenya merupakan kode yang bisa kita baca.
Sebuah proses transfer yang sedang berjalan melalui koneksi data dapat di berhentikan menggunakan Interupt Message dikirim melalui koneksi kontrol.