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
|
|
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.