Preview only show first 10 pages with watermark. For full document please download

Implementasi Kompresi Pada Server Ftp Dan Klien

saling berkomunikasi, misalnya antara komputer dengan komputer atau komputer dengan mobile ANDROID DI JARINGAN device GPRS dapat DAN saling 3G bertukar data dengan Hikmah, Wahyu Suadi S.Kom., MM., M.Kom.,

   EMBED


Share

Transcript

saling berkomunikasi, misalnya antara komputer dengan komputer atau komputer dengan mobile ANDROID DI JARINGAN device GPRS dapat DAN saling 3G bertukar data dengan Hikmah, Wahyu Suadi S.Kom., MM., M.Kom., memanfaatkan Hudan Studiawan jaringan S.Kom., internet M.Kom. atau intranet. Di Jurusan Teknik Informatika, Fakultas Teknologi Informasi, dalam Institut sebuah Teknologi jaringan Sepuluh komputer Nopember dikenal istilah server dan klien. Server merupakan sistem 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. IMPLEMENTASI KOMPRESI PADA SERVER FTP DAN KLIEN 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, Klien- Server, 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 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 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-Ziv- Welch (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 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 suatu file. Namun data yang 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 2. 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 Hikmah beberapa library dari bahasa pemrograman [10] 2. 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] 3. Bzip2 Metode bzip2 diciptakan oleh Julian Seward yang dirilis pada Juli 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]. 4. Lempel Ziv Markov chain Algorithm (LZMA) LZMA merupakan algoritma yang telah dikembangkan sejak 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 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, printer, memory, harddisk), dan khususnya data dapat digunakan oleh setiap komputer yang berada pada jaringan tersebut tanpa terpengaruh oleh lokasi resource dan pemakai 2. 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 berikut ini merupakan bentuk dari arsitektur jaringan klien-server Gambar 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 berikut ini merupakan bentuk dari arsitektur jaringan peer to peer. Hikmah Gambar 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 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 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 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 Linux/Unix, Windows, Mac OS X, Symbian, dan Android. Gambar 2.11 merupakan logo dari bahasa pemrograman Python [6]. 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 [7]. Gambar 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 ditunjukkan tampilan dari aplikasi Py4A di dalam mobile device Android. Hikmah Gambar 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 dijelaskan mengenai arsitektur jaringan dari sistem yang telah dikembangkan: Gambar 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 ditunjukkan bagan dari fungsi-fungsi yang berada pada modul pyftpdlib. Gambar Diagram Fungsi pada Modul Pyftpdlib Gambar 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 dijelaskan mengenai alur proses yang terjadi pada server ketika mendapatkan request dari klien 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 dibawah ini. Hikmah 14 bab1.pdf 3251 KB 15 MMT.pdf 3699 KB 16 Binder.pdf 5491 KB Gambar 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. Tabel Data Teks Uji Coba No Nama Ukuran 1 asyoulik.txt 122 KB 2 lcet10.txt 416 KB 3 UnicodeData.txt 1092 KB 4 tes_file.txt 1342 KB 5 buku.txt 2456 KB 6 john_letton.txt 3294 KB 7 merge.txt 4072 KB Tabel Data Dokumen Uji Coba No Nama Ukuran 1 Lapres.doc 126 KB 2 OOP_PBO.doc 518 KB 3 serba tahu.doc 1081 KB 4 draft.doc 1348 KB 5 LaporanKP.doc 1957 KB 6 PKMGT.doc 2415 KB 7 BUKUKP.doc 4485 KB 8 LapresFP.docx 128 KB 9 Subnet.docx 317 KB 10 Multimedia.pdf 169 KB 11 Italianebook.pdf 627 KB 12 Modul.pdf 1181 KB 13 Kuliah.pdf 2032 KB N o Tabel Data Citra Uji Coba No Nama Ukuran 1 lena.png 181 KB 2 Hijriyah2011.png 682 KB 3 reunian.png 1035 KB 4 tc2007.png 2167 KB 5 IMG.png 3057 KB 6 watermark.png 4305 KB 7 DSC.png 5709 KB 8 reunian.bmp 1055 KB 9 Desert.bmp 2305 KB 10 IMG02.bmp 2526 KB 11 IMG05.bmp 3841 KB 12 IMG.bmp 5382 KB 13 autumn.jpg 128 KB 14 map.jpg 422 KB 17 peta_jawa.jpg 1017 KB 18 Soal2.jpg 2442 KB 19 DSCN.jpg 3939 KB 20 DSC.jpg 4550 KB 21 IMG09.jpg 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 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 dan Tabel dibawah ini.