SEMINAR TUGAS AKHIR PERIODE JULI 2011 saling berkomunikasi, misalnya antara komputer
IMPLEMENTASI KOMPRESI PADA SERVER FTPkomputer DAN KLIEN dengan komputer atau dengan mobile deviceGPRS dapat DAN saling 3G bertukar data dengan ANDROID DI JARINGAN
memanfaatkan jaringan internet atau intranet. Di Hikmah, Wahyu Suadi S.Kom., MM., M.Kom., Hudan Studiawan S.Kom., M.Kom. dalam sebuah jaringan komputer dikenal istilah Jurusan Teknik Informatika, Fakultas Teknologi Informasi, Institut Teknologi Sepuluh Nopember server dan klien. Server merupakan sistem Email :
[email protected]
Abstrak - Perkembangan teknologi jaringan komputer yang menggunakan server FTP saat ini sudah semakin pesat, begitu juga dengan perkembangan aplikasi klien FTP terutama pada perangkat seluler salah satu contohnya adalah Android. Saat ini banyak dikembangkan aplikasi klien FTP untuk Android. Masalah timbul ketika semakin banyaknya data yang disimpan dan ditransmisikan dari server FTP kepada klien Android. Hal tersebut dikarenakan keterbatasan transmisi dan bandwidth yang dimiliki oleh sebuah perangkat seluler. Oleh karena itu, untuk mengatasi masalah ini dibutuhkan sebuah metode kompresi yang digunakan untuk memperkecil ukuran file yang akan ditransmisikan. Dalam tugas akhir ini diimplementasikan server FTP dan klien Android dengan menambahkan metode kompresi pada protokol FTP. Lalu Metode kompresi tersebut diimplementasikan dengan menambahkan protokol baru didalamnya. Protokol tersebut berupa protokol kompresi dengan menggunakan metode kompresi Gzip, Zlib, dan Bzip2. Dari hasil uji coba yang dilakukan pada server FTP dan klien Android, dapat dibuktikan bahwa dengan menambahkan protokol kompresi pada server FTP dapat mempercepat waktu transmisi karena ukuran file menjadi lebih kecil saat ditransmisikan kepada klien. Selain itu dari tiga metode kompresi yang digunakan, metode Bzip2 merupakan metode yang paling baik karena menghasilkan ukuran file yang lebih kecil daripada metode Gzip atau Zlib. Kata kunci: Android, Kompresi, FTP, KlienServer, Python 1.
Pendahuluan Komputer dapat berhubungan dengan berbagai macam perangkat lain, seperti printer, scanner, mobile device ataupun dengan komputer yang lain. Hubungan ini membentuk suatu jaringan dan dinamakan dengan jaringan komputer. Sistem aplikasi yang berada di dalam suatu jaringan komputer harus sesuai dengan kebutuhan dari jaringan tersebut agar antar perangkat dapat saling berkomunikasi atau berhubungan seperti pertukaran data. Kelebihan suatu jaringan komputer adalah perangkat keras yang terhubung di dalamnya dapat
Hikmah - 5107100085
komputer yang menyediakan layanan tertentu di dalam sebuah jaringan komputer. Server dapat berupa server data, server aplikasi, dan atau server proxy. Sedangkan klien merupakan sistem yang mengakses server, yang dapat berupa aplikasi atau device, seperti workstation atau mobile device. Salah satu contoh dari server data adalah server FTP, dimana server FTP menyimpan dan meneransmisikan data di dalam jaringan komputer. Perkembangan teknologi jaringan komputer yang menggunakan server FTP saat ini sudah semakin pesat dan ini berakibat pada data yang semakin banyak untuk disimpan dan ditransmisikan. Masalah yang timbul adalah keterbatasan bandwidth ketika mentransmisikan data sehingga membutuhkan waktu yang lama karena ukuran data yang besar. Masalah kecepatan transmisi tidak hanya dialami oleh komputer tetapi juga mobile device. Pada mobile device masalah yang timbul pada umumnya karena koneksi internet yang dimiliki berkualitas rendah. Dengan melakukan kompresi maka data yang ditransmisikan akan lebih cepat sampai pada tujuan karena ukurannya lebih kecil serta menghemat penggunaan bandwidth terutama dalam jaringan GPRS dan 3G. Kompresi merupakan suatu teknik memperkecil ukuran data sehingga diperoleh data dengan ukuran yang lebih kecil daripada ukuran aslinya. Kompresi sangat berguna apabila ada suatu data dengan ukuran yang sangat besar dan di dalamnya mengandung banyak pengulangan karakter. Dengan kompresi, maka pengulangan karakter tersebut dapat diubah menjadi sebuah pola tertentu untuk memperkecil ukurannya Beberapa contoh metode kompresi yang sering digunakan diantaranya adalah Gzip, ZLib, dan Bzip2. Ketiganya merupakan metode kompresi yang menggunakan dasar algoritma LZ77, Huffman Coding, dan Deflate. Ketiga metode kompresi tersebut baik digunakan untuk mengompresi data dengan tipe teks dan gambar. Penulis akan menggunakan Gzip, Zlib, Bzip2 sebagai metode kompresi yang nantinya akan diterapkan pada jaringan klien-server, dimana klien berupa mobile device dengan platform Android dan FTP sebagai server yang berbasis Python. Sistem aplikasi yang akan dibuat nantinya dapat mengompres data sehingga meminimalisasi penggunaan bandwidth ketika ditransmisikan dalam jaringan.
1
SEMINAR TUGAS AKHIR PERIODE JULI 2011 2.
Dasar Teori 2.1. Kompresi Data Kompresi data merupakan suatu teknik untuk memperkecil jumlah ukuran data dari data aslinya. Kompresi data sangat menguntungkan apabila terdapat suatu data yang berukuran sangat besar dan di dalamnya banyak mengandung pengulangan karakter. Kompresi data umumnya diterapkan pada komputer, karena setiap simbol yang muncul pada komputer memiliki nilai bit-bit yang berbeda. Misal pada ASCII setiap simbol yang dimunculkan memiliki panjang 8 bit, misal kode A pada ASCII mempunyai nilai desimal = 65, jika diubah dalam bilangan biner menjadi 010000001. Kompresi data digunakan untuk mengurangkan jumlah bit- bit yang dihasilkan dari setiap simbol yang muncul [4]. Jika data hasil kompresi tersebut akan ditransmisikan maka pihak pengirim dan pihak penerima harus memiliki teknik algoritma kompresi yang sama. Sehingga data tersebut dapat dibaca oleh pihak penerima. Kompresi dalam hal ini sangat membantu, karena selain memperkecil ukuran data, dengan kompresi maka kebutuhan bandwidth akan lebih kecil dan data yang dikirimkan lebih cepat sampai pada penerima. Berdasarkan teknik pengkodean atau pengubahan simbol yang digunakan, metode kompresi dapat dibagi ke dalam tiga kategori, yaitu [12]: 1. Metode simbolwise Metode ini menghitung peluang kemunculan dari tiap simbol dalam data masukan, lalu mengkodekan satu simbol dalam satu waktu, dimana simbol yang lebih sering muncul diberi kode lebih pendek dibandingkan simbol yang lebih jarang muncul. Contoh penggunaan metode ini adalah pada algoritma Huffman coding dan algoritma Arithmatic coding 2. Metode dictionary Metode ini menggantikan karakter atau fragmen dalam data masukan dengan indeks lokasi dari karakter atau fragmen tersebut dalam sebuah kamus (dictionary). Contohnya pada algoritma Lempel-ZivWelch (LZW), LZ77, Deflate 3. Metode predictive Merupakan metode yang menggunakan model finite-context atau finite-state untuk memprediksi distribusi dari simbol–simbol selanjutnya. Contohnya pada algoritma Dynamic Matrix Control (DMC). Berdasarkan tipe algoritma, kompresi data dibagi menjadi dua, yaitu[2]: 1. Algoritma kompresi lossy
Hikmah - 5107100085
2.
Algoritma kompresi lossy adalah algoritma kompresi dengan data hasil kompresi yang berbeda dengan data kompresi yang dilakukan sebelumnya. Algoritma ini dapat menyebabkan data pada suatu berkas yang dikompresi hilang ketika didekompresi. Hal ini dikarenakan cara kerja algoritma lossy adalah dengan mengeliminasikan beberapa data dari data yang suatu file. Namun dieliminasikan biasanya adalah data yang kurang diperhatikan atau di luar jangkauan manusia, sehingga pengeliminasian data tersebut kemungkinan besar tidak akan mempengaruhi manusia yang berinteraksi dengan file tersebut. Keuntungan dari algoritma ini adalah bahwa rasio kompresi cukup tinggi. Rasio kompresi merupakan perbandingan antara ukuran data yang telah dikompresi dengan data sebelum dikompresi. Contohnya pada pengompresian file audio, kompresi lossy akan mengeliminasi data dari file audio yang memiliki frekuensi sangat tinggi atau rendah yang berada diluar jangkauan manusia. Beberapa jenis data yang biasanya masih dapat menoleransi algoritma lossy adalah citra, audio, dan video Algoritma kompresi lossless Algoritma ini menghasilkan data kompresi dan dapat didekompresi lagi dengan hasil yang sama seperti sebelum dilakukan proses kompresi. Algoritma lossless dibutuhkan jika data setelah dikompresi harus dapat diekstrak atau didekompresi lagi tepat sama, contohnya pada data teks, data biner, data citra dengan tipe file GIF dan PNG. Contoh algoritma kompresi yang termasuk kedalam algoritma lossless adalah algoritma Huffman Coding, varian LZ (LZ77, LZW, LZMA, LZO), Deflate.
Dibawah ini akan dijelaskan mengenai metode kompresi yang digunakan penulis, diantaranya adalah: 1. Gzip (GNU zip) Merupakan salah satu metode kompresi yang berdasar pada algoritma Deflate yang dikombinasikan dengan algoritma LZ77 dan Huffman coding. Metode ini diciptakan oleh Jean-Loup Gailly dan Mark Adler. Hasil dari proses kompresi yang dilakukan dengan menggunakan metode ini berupa file dengan ekstensi .gz. Metode Gzip saat ini sudah banyak digunakan dan diimplementasikan pada aplikasi dan
2
SEMINAR TUGAS AKHIR PERIODE JULI 2011
2.
3.
4.
beberapa library dari bahasa pemrograman [10] Zlib Metode kompresi Zlib merupakan turunan dari algoritma deflate. Metode ini diciptakan oleh Jean-Loup Gailly yang menciptakan proses kompresi data dan Mark Adler yang menciptakan proses dekompresi data, yang juga merupakan pencipta dari metode Gzip. Metode Zlib melakukan kompresi dengan mengkompresi serangkain blok data sesuai dengan inputan data tersebut. Setiap data pada blok dikompresi dengan menggunakan deflate sebagai kompresor yang merupakan variasi dari algoritma LZ77 yang dikombinasikan dengan Huffman coding. Metode Zlib juga mendukung pembacaan data kompresi yang dikompresi menggunakan metode Gzip [9] Bzip2 Metode bzip2 diciptakan oleh Julian Seward yang dirilis pada Juli 1996. Metode ini menggabungkan algoritma deflate dan LZW dalam implementasinya, tetapi jika dibandingkan dengan LZMA, efisiensi kompresi metode ini lebih rendah. Hasil kompresi data dari metode bzip2 ini berupa file berekstensi .bz [11]. Lempel Ziv Markov chain Algorithm (LZMA) LZMA merupakan algoritma yang telah dikembangkan sejak 1998. Pertama kali diperkenalkan dan digunakan oleh software kompresi terpopuler yaitu 7z atau 7-zip yang diciptakan oleh Igor Pavlov. Prinsip dasar dari algoritma LZMA sama dengan LZ77, hanya saja LZMA telah mengalami perkembangan pada beberapa fitur, diantaranya adalah ditingkatkannya rasio kompresi, semakin besarnya ukuran dari dictionary yang digunakan pada proses kompresi [1]. LZMA juga dikembangkan kedalam bentuk modul berbasis Python. Modul tersebut bernama pylzma. Pylzma dapat dijalankan pada OS Windows, Linux, dan OSX.
2.2. Jaringan Komputer Jaringan komputer adalah sebuah sistem yang terdiri dari sekumpulan komputer yang berjumlah banyak yang terpisah-pisah akan tetapi saling berhubungan dalam melaksanakan tugasnya untuk mencapai tujuan yang sama. Tujuan tersebut diantaranya adalah [3]: 1. Berbagi pakai atau disebut juga dengan resource sharing. Tujuannya agar seluruh program, peralatan (misalnya: CPU, Hikmah - 5107100085
2.
printer, memory, harddisk), dan khususnya data dapat digunakan oleh setiap komputer yang berada pada jaringan tersebut tanpa terpengaruh oleh lokasi resource dan pemakai Mendapatkan keandalan tinggi atau high reliability dengan memiliki sumbersumber alternatif yang tersedia. Misalnya, semua file dapat disalin ke dua atau tiga buah mesin, sehingga bila salah satu mesin tersebut tidak dapat dipakai, maka salinan yang ada pada mesin lainnya dapat digunakan
Berdasarkan tipe jaringannya, jaringan komputer dibedakan menjadi dua,yaitu [3]: 1. Jaringan klien-server Server adalah komputer yang menyediakan fasilitas bagi komputerkomputer lain di dalam jaringan. Klien adalah komputer-komputer yang menerima atau menggunakan fasilitas yang disediakan oleh server. Server pada jaringan tipe klien-server disebut dengan dedicated server karena murni berperan sebagai server yang menyediakan fasilitas kepada workstation dan server tersebut tidak dapat berperan sebagai workstation. Gambar 2.2.1 berikut ini merupakan bentuk dari arsitektur jaringan klien-server
Gambar 2.2.1 Jaringan Klien-Server
2.
Jaringan Peer to Peer Bila ditinjau dari peran server di kedua tipe jaringan, maka server di jaringan tipe peer to peer diistilahkan non-dedicated server, karena server tidak berperan sebagai server murni melainkan sekaligus dapat berperan sebagai workstation. Gambar 2.2.2 berikut ini merupakan bentuk dari arsitektur jaringan peer to peer.
3
SEMINAR TUGAS AKHIR PERIODE JULI 2011 Linux/Unix, Windows, Mac OS X, Symbian, dan Android. Gambar 2.11 merupakan logo dari bahasa pemrograman Python [6].
Gambar 2.2.2 Jaringan Peer to Peer
Penulis menggunakan tipe jaringan klienserver karena mudah dalam implementasinya dan server yang dibutuhkan pada aplikasi adalah server yang bersifat dedicate server atau hanya bertugas sebagai server tidak sebagai workstation. 2.3. Android Android merupakan subset perangkat lunak untuk perangkat seluler yang meliputi sistem operasi, middleware dan aplikasi inti yang di rilis oleh Google. Sedangkan Android SDK (Software Develeopment Kit) menyediakan Tools dan API yang diperlukan untuk mengembangkan aplikasi pada platform Android dengan menggunakan bahasa pemrograman Java. Sejak Android platform dirilis telah dilakukan berbagai pembaruan berupa perbaikan bug dan penambahan fitur baru. Beberapa versi platform yang sudah dirilis dan dikembangkan saat ini oleh Android, diantaranya adalah [5]: 1. Android versi 1.1 2. Android versi 1.5 (Cupcake) 3. Android versi 1.6 (Donut) 4. Android versi 2.0/2.1 (Éclair) 5. Android versi 2.2 (Froyo) 6. Android versi 2.3 (Gingerbread) 7. Android versi 3.0 (Honeycomb) Penulis menggunakan Android versi 2.2 atau Android froyo karena telah mendukung penggunaan aplikasi tambahan yang dibutuhkan untuk menjalankan script Python pada perangkat seluler Android. 2.4. Python Python adalah bahasa pemrograman dinamis yang mendukung pemrograman berorientasi obyek. Python dapat digunakan untuk berbagai keperluan pengembangan perangkat lunak dan dapat berjalan di berbagai platform sistem operasi. Seperti halnya bahasa pemrograman dinamis, Python seringkali digunakan sebagai bahasa script dengan interpreter yang teintergrasi dalam sistem operasi. Berbagai macam basis system dapat menjalankan python, diantaranya adalah Hikmah - 5107100085
Python juga digunakan pada mobile device dengan Operating system (OS) Android. Untuk menjalankan file script python pada android, dibutuhkan aplikasi third party, diantaranya adalah: 1.
Scripting Layer for Android (SL4A) SL4A merupakan sebuah aplikasi yang dapat digunakan untuk menjalankan script seperti Python, Ruby, Perl, dan Javascript pada mobile device Android. Aplikasi ini dikembangkan oleh Damon Kohler dan dirilis oleh Google. Sebelumnya aplikasi ini bernama Android Scripting Edition (ASE) dan sekarang berubah menjadi Scripting Layer for Android. Dengan menggunakan SL4A, user dapat dengan mudah merubah dan atau menjalan script yang telah di simpan sebelumnya pada device Android. Seperti Android, SL4A juga bersifat open source, dimana aplikasi yang telah dirilis masih dalam tahap pengembangan dan perbaikan. Saat ini SL4A telah dirilis dalam beberapa version, dan yang paling akhir adalah versi 4. Berikut ini merupakan gambar icon SL4A pada device Android yang terinstall dengan baik yang ditunjukkan pada Gambar 2.4.1 [7].
Gambar 2.4.1 SL4A Application Launcher Icon
2.
Python for Android (Py4A) SL4A dapat dijalankan dengan baik jika didalamnya juga ter-install Py4A karena kedua aplikasi tersebut harus berjalan bersama. Py4A merupakan interpreter yang berisi seluruh library standar yang digunakan oleh IDE Python pada umumnya. Seperti halnya Android dan SL4A, Py4A juga bersifat open source dan sampai saat ini Py4A terus dikembangkan di dalam berbagai versi. Python for android yang telah dirilis terakhir merupakan versi ke 6 [8]. Pada Gambar 2.4.2 ditunjukkan tampilan dari aplikasi Py4A di dalam mobile device Android.
4
SEMINAR TUGAS AKHIR PERIODE JULI 2011
Gambar 2.4.2 Tampilan Aplikasi Py4A
Penulis menggunakan Py4A versi 6, karena telah mendukung penambahan module baru pada interpreter Python. 3.
Perancangan Perangkat Lunak 3.1. Deskripsi umum Pada tugas akhir ini telah dikembangkan sebuah sistem klien-server berupa FTP klien yang memiliki fungsi dekompresi yang berada pada mobile device Android sebagai aplikasi klien. Sedangkan aplikasi server berupa FTP yang memiliki tambahan protokol kompresi yang dapat digunakan untuk mengirimkan data hasil request dari klien. Tujuan dikembangkannya aplikasi adalah untuk memanfaatkan teknologi aplikasi mobile untuk memudahkan pertukaran data serta meminimalisasi penggunaan bandwidth pada jaringan saat data di transmisikan. Aplikasi nantinya berjalan pada jaringan GPRS dan 3G. Oleh karena itu, dibutuhkan ukuran data transmisi yang kecil karena keterbatasan bandwidth yang dimiliki oleh sebuah mobile device. Pada Gambar 3.1.1 dijelaskan mengenai arsitektur jaringan dari sistem yang telah dikembangkan:
Gambar 3.2.1 Flow chart pada Server
Pada server terdapat tambahan modul yang digunakan untuk FTP server yaitu pyftpdlib. Modul ini berisi beberapa fungsi yang digunakan untuk membangun koneksi dan mengirimkan data antara server dan klien. Pada Gambar 3.2.2 ditunjukkan bagan dari fungsi-fungsi yang berada pada modul pyftpdlib.
Gambar 3.2.2 Diagram Fungsi pada Modul Pyftpdlib
Gambar 3.1.1 Arsitektur Jaringan
3.2. Rancangan Perangkat Lunak pada Server Perangkat lunak ini berbentuk server FTP berbasis Python dan berfungsi menangani semua koneksi dan request yg berasal dari klien yang menggunakan mobile device Android. Server hanya membatasi layanan untuk klien berupa download data. Hasil request dari klien nantinya dikembalikan dalam bentuk data terkompresi oleh server. Pada Gambar 3.2.1 dijelaskan mengenai alur proses yang terjadi pada server ketika mendapatkan request dari klien. Hikmah - 5107100085
3.3. Rancangan Perangkat Lunak pada Klien Perangkat lunak ini berbentuk aplikasi mobile berbasis Python Android dan berupa klien FTP. Aplikasi ini dapat mengunduh data yang terdapat pada direktori server. Proses pengunduhan data dapat dilihat pada Gambar 3.3.1 dibawah ini.
5
SEMINAR TUGAS AKHIR PERIODE JULI 2011
14 15 16
bab1.pdf MMT.pdf Binder.pdf
3251 KB 3699 KB 5491 KB
Tabel 4.1.3 Data File Citra Uji Coba
No 1 2 3 4 5 6 7 8 9 10 11 12 13 14 17 18 19 20 21
Gambar 3.3.1 Flow chart Request Klien pada Server.
4.
Uji Coba 4.1. Data Uji Coba Data yang digunakan pada uji coba ini adalah file berupa data teks dengan ekstensi .txt, file dokumen dengan ekstensi .doc, .pdf, dan .docx. Selain data teks dan dokumen, pada uji coba digunakan data citra dengan ektensi .png, .bmp, dan .jpg dengan berbagai macam ukuran file.
Nama File
1 2 3 4 5 6 7
asyoulik.txt lcet10.txt UnicodeData.txt tes_file.txt buku.txt john_letton.txt merge.txt
Ukuran File 122 KB 416 KB 1092 KB 1342 KB 2456 KB 3294 KB 4072 KB
Tabel 4.1.2 Data File Dokumen Uji Coba
No
Nama File
1 2 3 4 5 6 7 8 9 10 11 12 13
Lapres.doc OOP_PBO.doc serba tahu.doc draft.doc LaporanKP.doc PKMGT.doc BUKUKP.doc LapresFP.docx Subnet.docx Multimedia.pdf Italianebook.pdf Modul.pdf Kuliah.pdf
Hikmah - 5107100085
Ukuran File 126 KB 518 KB 1081 KB 1348 KB 1957 KB 2415 KB 4485 KB 128 KB 317 KB 169 KB 627 KB 1181 KB 2032 KB
Ukuran File 181 KB 682 KB 1035 KB 2167 KB 3057 KB 4305 KB 5709 KB 1055 KB 2305 KB 2526 KB 3841 KB 5382 KB 128 KB 422 KB 1017 KB 2442 KB 3939 KB 4550 KB 5110 KB
4.2. Skenario Uji Coba Terdapat beberapa skenario, diantaranya yaitu: 1. Uji coba perbandingan ukuran dari file yang mengalami kompresi dan tidak, baik file data teks, dokumen maupun citra 2. Uji coba aplikasi ketika mengunduh file dengan dua ukuran file yang berbeda 3. Uji coba menampilkan list file yang berada pada direktori server 4. Uji coba perbandingan kecepatan ketika mengunduh file menggunakan jaringan GPRS dan 3G. 5. Uji coba reliabilitas 6. Uji coba perbandingan waktu untuk proses kompresi, transmisi, dan dekompresi
Tabel 4.1.1 Data File Teks Uji Coba
No
Nama File lena.png Hijriyah2011.png reunian.png tc2007.png IMG.png watermark.png DSC.png reunian.bmp Desert.bmp IMG02.bmp IMG05.bmp IMG.bmp autumn.jpg map.jpg peta_jawa.jpg Soal2.jpg DSCN.jpg DSC.jpg IMG09.jpg
Pada skenario uji coba yang pertama akan dibandingkan ukuran dari file yang diunduh ketika mengalami kompresi dan non-kompresi. Hasil uji coba dari skenario pertama dapat dilihat pada Tabel 4.2.1 dan Tabel 4.2.2 dibawah ini. Tabel 4.2.1 Hasil Perbandingan Ukuran dan Waktu File Kompresi
N o 1
Nama File Asyoulik.txt
Ukur an File 48 KB 48 KB 39 KB
Waktu Transm isi (second) 1.598 2.304 2.117
Keterang an Gzip Zlib Bzip2 6