pengembangan library yahoo! messenger pada platform · pdf filelibrary grafis 2d yang kaya dan...

21
2 BAB II DASAR TEORI Pada bab ini akan diuraikan beberapa hal penting berkenaan dengan dasar perancangan dan pengembangan library Yahoo! Messenger pada platform Android. Dasar teori yang diuraikan meliputi penjelasan mengenai platform Android, pengembangan aplikasi dan library pada platform tersebut dan protokol Yahoo! Messenger yang digunakan. Semua dasar teori tentang Android diambil dari dokumentasi Android pada web Google [DOC08], sedangkan dokumentasi tentang protokol Yahoo! Messenger diambil dari [YCB07]. 2.1 Android Android merupakan suatu software stack untuk mobile device. Di dalamnya terdapat sistem operasi, middleware, dan key application. Aplikasi pada platform ini dikembangkan dalam bahasa pemrograman java. Android sendiri memiliki banyak fitur diantaranya adalah: Merupakan sebuah Application Framework sehingga programmer dapat menggunakan beberapa fungsi yang telah disediakan. Dalvik virtual machine. Tiap aplikasi dalam Android memiliki instance virtual machine yang dapat bekerja secara efisien dalam lingkungan memori yang terbatas. Integrated browser. Web browser berbasis WebKit engine terdapat pada browser default Android atau pun dapat diintegrasikan dengan aplikasi lain. Optimized graphics. Library grafis 2D yang kaya dan 3D berbasis OpenGL 1

Upload: hoangliem

Post on 06-Feb-2018

221 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Pengembangan Library Yahoo! Messenger pada Platform · PDF fileLibrary grafis 2D yang kaya dan 3D berbasis OpenGL ... lengkap platform ini dapat dilihat pada Gambar 2.1. ... kita membuat

2 BAB II DASAR TEORI

Pada bab ini akan diuraikan beberapa hal penting berkenaan dengan dasar

perancangan dan pengembangan library Yahoo! Messenger pada platform Android.

Dasar teori yang diuraikan meliputi penjelasan mengenai platform Android,

pengembangan aplikasi dan library pada platform tersebut dan protokol Yahoo!

Messenger yang digunakan.

Semua dasar teori tentang Android diambil dari dokumentasi Android pada web

Google [DOC08], sedangkan dokumentasi tentang protokol Yahoo! Messenger

diambil dari [YCB07].

2.1 AndroidAndroid merupakan suatu software stack untuk mobile device. Di dalamnya terdapat

sistem operasi, middleware, dan key application. Aplikasi pada platform ini

dikembangkan dalam bahasa pemrograman java. Android sendiri memiliki banyak

fitur diantaranya adalah:

� Merupakan sebuah Application Framework sehingga programmer dapat

menggunakan beberapa fungsi yang telah disediakan.

� Dalvik virtual machine. Tiap aplikasi dalam Android memiliki instance

virtual machine yang dapat bekerja secara efisien dalam lingkungan memori

yang terbatas.

� Integrated browser. Web browser berbasis WebKit engine terdapat pada

browser default Android atau pun dapat diintegrasikan dengan aplikasi lain.

� Optimized graphics. Library grafis 2D yang kaya dan 3D berbasis OpenGL

II-1

Page 2: Pengembangan Library Yahoo! Messenger pada Platform · PDF fileLibrary grafis 2D yang kaya dan 3D berbasis OpenGL ... lengkap platform ini dapat dilihat pada Gambar 2.1. ... kita membuat

II-2

ES 1.0 yang mendukung akselerasi hardware.

� SQLite. Basis data relasional yang ringan namun sangat powerful.

� Media Support. Mendukung berbagai format audio, video, dan gambar

(MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF)

� GSM Telephony. Mendukung fungsi komunikasi GSM.

� Bluetooth, EDGE, 3G dan WiFi. Mendukung komunikasi pada jaringan

(tergantung hardware).

� Kamera, GPS, kompas dan accelerometer. Mendukung berbagai fitur yang

disediakan oleh hardware.

� Kakas pengembangan yang lengkap. Termasuk device emulator, tools untuk

debugging, profiling memori dan performa, plugin untuk Eclipse IDE.

2.1.1 Arsitektur AndroidAndroid terdiri dari beberapa stack software yang terdiri dari: Applications,

Application Framework, Libraries, Android Runtime dan Kernel Linux. Arsitektur

lengkap platform ini dapat dilihat pada Gambar 2.1.

Gambar 2.1: Arsitektur platfor m Android [DOC08]

Page 3: Pengembangan Library Yahoo! Messenger pada Platform · PDF fileLibrary grafis 2D yang kaya dan 3D berbasis OpenGL ... lengkap platform ini dapat dilihat pada Gambar 2.1. ... kita membuat

II-3

2.1.1.1 Application

Application merupakan program yang langsung berhubungan dengan user. Baik

program yang merupakan bawaan dari Android sendiri maupun program yang dibuat

oleh developer menggunakan bahasa pemrograman java. Contoh program bawaan dari

platform Android sendiri adalah email client, program SMS, calendar, maps, web

browser, contact dan sebagainya.

2.1.1.2 Application Framework

Lapisan ini berisi sekumpulan API yang dapat digunakan oleh programmer maupun

core application dari Android. Lapisan ini dirancang untuk memudahkan penggunaan

komponen dari Android sendiri. Aplikasi manapun dalam Android dapat berbagi

fungsi sehingga aplikasi lain dapat memanfaatkannya.

Aplikasi pada Android disusun atas beberapa komponen:

� Sekumpulan Views. Digunakan untuk mengatur tampilan pada aplikasi.

Contohnya adalah lists, grids, text box, button, bahkan embeddable web

browser.

� Content providers. Komponen yang mengatur agar aplikasi dapat mengakses

resources dari aplikasi lain (seperti Contacts), atau berbagi data dengan

aplikasi lain.

� Resource Manager. Menyediakan akses ke pada resource non-code seperti

localized string, grafik dan file layout.

� Notification Manager. Memungkinkan agar suatu aplikasi dapat menampilkan

peringatan yang dapat di kostumasi pada status bar.

� Activity Manager. Mengatur siklus aplikasi dan navigasi antar aplikasi yang

Page 4: Pengembangan Library Yahoo! Messenger pada Platform · PDF fileLibrary grafis 2D yang kaya dan 3D berbasis OpenGL ... lengkap platform ini dapat dilihat pada Gambar 2.1. ... kita membuat

II-4

sedang berjalan.

2.1.1.3 Libraries

Android mendukung beberapa library C/C++ yang digunakan pada berbagai

komponen Android. Kemampuan ini dapat diakses oleh developer melalui Android

application framework. Beberapa library diantaranya adalah:

� System C library. Implementasi library C standar (libc).

� Media Libraries. Mendukung berbagai format multimedia (termasuk MPEG4,

H.264, MP3, AAC, AMR, JPG, PNG).

� Surface Manager. Mengatur akses ke subsistem display.

� LibWebCore. Engine web browser modern.

� SGL. Engine grafis 2D.

� 3D Library. Implementasi OpenGL ES 1.0 yang mendukung akselerasi

hardware.

� FreeType. Rendering untuk bitmap dan vector font.

� SQLite. Basis data relasional yang kecil namun sangat ampuh.

2.1.1.4 Android Runtime

Tiap aplikasi pada Android memiliki proses-nya masing-masing. Tiap aplikasi

tersebut memiliki instans dari Dalvik virtual machine (VM). Dalvik virtual machine

dirancang agar suatu device dapat menjalankan beberapa VM secara efisien. Dalvik

VM mengeksekusi file dengan format Dalvik Executable format (.dex) yang dirancang

untuk meminimalkan memory footprint .

Page 5: Pengembangan Library Yahoo! Messenger pada Platform · PDF fileLibrary grafis 2D yang kaya dan 3D berbasis OpenGL ... lengkap platform ini dapat dilihat pada Gambar 2.1. ... kita membuat

II-5

Dalvik VM berbasis register, dan dapat menjalankan kelas-kelas yang dikompilasi

dengan bahasa pemrograman java dan ditransformasikan menjadi format .dex. Dalvik

VM sendiri bergantung pada Kernel Linux untuk fungsi dasarnya, seperti threading

dan manajemen memori secara low-level.

2.1.1.5 Linux Kernel

Android menggunakan Kernel Linux versi 2.6 sebagai sistem utama. Fungsi kernel

yang digunakan antara lain untuk keamanan, manajemen memori, manajemen proses,

manajemen jaringan dan driver model. Kernel juga berfungsi sebagai layer abstrak

antara hardware dan lapisan lainnya pada software stack.

2.1.2 Anatomi Aplikasi Android

Terdapat empat building blocks pada aplikasi Android yaitu:

� Activity

� Intent Receiver

� Service

� Content Provider

Tidak semua aplikasi membutuhkan keempat blok ini, tetapi suatu aplikasi dibuat

menggunakan kombinasi beberapa blok ini. Setelah memutuskan blok komponen yang

akan digunakan, blok tersebut didaftarkan pada suatu file yang disebut dengan

AndroidManifest.xml. File XML ini digunakan untuk menyatakan komponen apa saja

yang dibutuhkan oleh sebuah aplikasi dan kemampuan serta kebutuhan aplikasi

tersebut.

Page 6: Pengembangan Library Yahoo! Messenger pada Platform · PDF fileLibrary grafis 2D yang kaya dan 3D berbasis OpenGL ... lengkap platform ini dapat dilihat pada Gambar 2.1. ... kita membuat

II-6

2.1.2.1 Activity

Activity paling umum diantara keempat building block. Activity biasanya suatu

tampilan (screen) dalam suatu aplikasi. Tiap activity diimplementasikan sebagai satu

kelas yang meng-extend base class Activity. Kelas yang dibuat akan menampilkan

user interface yang terdiri dari beberapa views dan akan merespon suatu event.

Kebanyakan, aplikasi terdiri dari beberapa screen. Contohnya aplikasi pengiriman

pesan akan memiliki screen untuk mendaftarkan pesan yang masuk, menulis pesan

dan screen lainnya untuk melakukan pengaturan. Tiap screen pada contoh ini akan

diimplementasi sebagai suatu activity. Aplikasi dapat berpindah ke screen lain dengan

cara memulai suatu activity baru. Pada suatu kasus tertentu, activity akan

mengembalikan nilai kepada activity sebelumnya. Contohnya activity untuk memilih

foto akan mengembalikan foto yang dipilih pada activity yang memanggilnya.

Pada saat screen baru terbuka, screen sebelumnya akan dihentikan dan state nya akan

disimpan pada history stack. User dapat melakukan navigasi ke activity sebelumnya

melalui history tersebut. Screen akan di hapus dari history stack apabila sistem

memutuskan bahwa screen tersebut tidak layak untuk berada pada memori. Android

menyimpan history stack untuk setiap aplikasi yang dijalankan dari tampilan awal

(home screen).

2.1.2.2 Intent dan Intent Filter

Android menggunakan kelas khusus bernama intent untuk berpindah dari screen ke

screen lainnya. Sebuah intent mendeskripsikan apa yang ingin aplikasi penuhi. Bagian

struktur data dari intent yang paling penting adalah action dan data dari aksi yang

dilakukan. Nilai action yang biasanya adalah MAIN, VIEW, PICK, EDIT dan

Page 7: Pengembangan Library Yahoo! Messenger pada Platform · PDF fileLibrary grafis 2D yang kaya dan 3D berbasis OpenGL ... lengkap platform ini dapat dilihat pada Gambar 2.1. ... kita membuat

II-7

sebagainya. Data diekspresikan sebagai URI. Sebagai contoh, untuk melihat informasi

suatu contact seseorang, kita membuat intent dengan action VIEW dan data sebagai

URI yang merepresentasikan orang tersebut.

Terdapat suatu kelas yang dinamakan IntentFilter. Apabila intent adalah suatu

permintaan untuk melakukan sesuatu, IntentFilter adalah deskripsi yang dapat

dilakukan oleh intent activity. Activity yang dapat menampilkan informasi contact dari

seseorang akan mempublikasikan IntentFilter yang menyatakan bahwa ia dapat

menangani action VIEW apabila dipakai pada data yang merepresentasikan

seseorang. Suatu aplikasi mempublikasikan IntentFilter pada file

AndroidManifest.xml.

Navigasi dari suatu screen ke screen lainnya dipenuhi dengan cara me-resolve intent.

Untuk melakukan navigasi ke depan, activity memanggil startActivity(myIntent).

Sistem akan mencari IntentFilter untuk semua aplikasi dan memilih activity yang

IntentFilter-nya yang paling mendekati dengan myIntent. activity baru akan mendapat

informasi tentang intent yang menyebabkan activity tersebut dijalankan. Proses

pencarian intent terjadi sewaktu runtime pada saat startActivity dipanggil. Hal

tersebut membawa keuntungan sebagai berikut:

� Activity dapat melakukan reuse functionality dari komponen lain dengan cara

melakukan permintaan dalam bentuk intent.

� Activity dapat di replace kapan pun dengan activity yang ekuivalen.

2.1.2.3 Intent Receiver

IntentReceiver dapat digunakan pada saat kita menginginkan kode kita dijalankan

akibat reaksi dari external event tertentu. Contohnya, pada saat telepon berbunyi, atau

Page 8: Pengembangan Library Yahoo! Messenger pada Platform · PDF fileLibrary grafis 2D yang kaya dan 3D berbasis OpenGL ... lengkap platform ini dapat dilihat pada Gambar 2.1. ... kita membuat

II-8

pada saat ada data pada jaringan, atau pada suatu waktu tertentu. IntentReceiver tidak

menampilkan user interface, meskipun ia dapat menggunakan NotificationManager

untuk memperingatkan user apabila sesuatu terjadi. IntentReceiver didaftarkan pada

file AndroidManifest.xml, tetapi secara manual juga bisa ditambahkan dengan fungsi

Context.registerReceiver(). Suatu aplikasi tidak harus berjalan pada IntentReceiver-

nya agar bisa dipanggil, tetapi sistem yang akan menjalankan aplikasi tersebut.

Apabila diperlukan, pada saat IntentReceiver mendapat trigger, aplikasi juga dapat

mengirimkan intent broadcast kepada aplikasi lainnya dengan fungsi

Context.broadcastIntent().

2.1.2.4 Service

Service adalah sebuah kode yang hidup terus-menerus dan berjalan tanpa memiliki

tampilan. Contoh yang sederhana adalah suatu aplikasi media player yang sedang

memainkan lagu dari play list. Pada aplikasi media player, kemungkinan terdapat satu

atau lebih activity yang memperbolehkan user memilih lagu dan memainkannya.

Tetapi musik yang sedang diputar tidak boleh ditangani oleh activity karena user akan

menginginkan musik tetap diputar meskipun ia berpindah ke screen baru. Pada kasus

ini activity media player dapat menjalankan service menggunakan fungsi

Context.startService() untuk menjalankan service di background yang memutar

musik. Sistem akan tetap memutar musik sampai selesai. Selain itu activity dapat

terhubung dengan service menggunakan fungsi Context.bindService(). Pada saat

terhubung, aplikasi dapat berkomunikasi melalui interface yang diberikan oleh

service yang bersangkutan. Pada contoh media player, interface service akan

memberikan fungsi pause, rewind dan sebagainya.

Page 9: Pengembangan Library Yahoo! Messenger pada Platform · PDF fileLibrary grafis 2D yang kaya dan 3D berbasis OpenGL ... lengkap platform ini dapat dilihat pada Gambar 2.1. ... kita membuat

II-9

2.1.2.5 Content Provider

Content provider digunakan untuk pertukaran data antara aplikasi. Data yang

dipertukarkan bersifat shared. Content provider adalah sebuah kelas yang berisi

method standar yang memungkinkan aplikasi lain dapat menyimpan dan mengambil

suatu data yang ditangani oleh content provider.

2.1.3 Life Cycle Aplikasi Android

Pada banyak kasus, tiap aplikasi pada Android masing-masing memiliki Linux proses.

Proses ini diciptakan untuk aplikasi tersebut pada saat kode program tersebut akan

dieksekusi, akan terus berjalan sampai tidak dibutuhkan lagi dan sistem memerlukan

memori untuk aplikasi lain.

Konsep dasar program Android adalah suatu proses pada aplikasi tidak langsung di

atur oleh aplikasi tersebut. Proses tersebut ditentukan oleh sistem melalui kombinasi:

informasi aplikasi bagi sistem, seberapa pentingnya aplikasi tersebut bagi user dan

ketersediaan memori.

Contoh kasus life-cycle bug adalah IntentReceiver yang menciptakan thread pada saat

menerima intent pada method onReceiveIntent() dan selesai dari fungsi tersebut.

Setelah fungsi tersebut selesai, sistem menganggap bahwa IntentReceiver tersebut

menjadi tidak aktif sehingga ia memiliki proses yang tidak dibutuhkan (kecuali

terdapat komponen aplikasi lain di dalamnya). Oleh karena itu, sistem dapat

menghapus proses tersebut kapanpun apabila dibutuhkan. Hal tersebut akan

menghapus semua thread yang berjalan pada proses tersebut. Solusi masalah ini

adalah memakai Service dari IntentReceiver, sehingga sistem mengetahui bahwa ada

suatu yang aktif dalam proses tersebut.

Page 10: Pengembangan Library Yahoo! Messenger pada Platform · PDF fileLibrary grafis 2D yang kaya dan 3D berbasis OpenGL ... lengkap platform ini dapat dilihat pada Gambar 2.1. ... kita membuat

II-10

Sebagai programmer, kita harus mengetahui bagaimana cara yang tepat untuk

merancang aplikasi. Kesalahan pada perancangan akan membuat suatu aplikasi akan

dihentikan oleh sistem pada saat yang tidak diinginkan. Untuk menentukan proses

mana yang akan dihapus pada situasi low memory, Android memiliki “importance

hierarchy” berdasarkan komponen dan state yang sedang berjalan. Urutan berdasarkan

kepentingan tersebut adalah:

1. Foreground process. Adalah suatu proses yang dibutuhkan untuk berinteraksi

dengan user saat ini. Berbagai komponen suatu aplikasi dapat mengakibatkan

proses di dalamnya menjadi foreground proses. Suatu proses dikatakan

foreground apabila memenuhi kondisi sebagai berikut:

� Menjalankan Activity pada top screen yang sedang berinteraksi dengan

user (setelah method onResume() dipanggil).

� Mempunyai IntentReceiver yang sedang berjalan (method

IntentReceiver.onReceiveIntent() sedang dieksekusi).

� Memiliki Service yang fungsi callback-nya (Service.onCreate(),

Service.onStart() atau Service.onDestroy()) sedang dieksekusi.

Hanya akan terdapat beberapa proses seperti itu dalam sistem, proses ini hanya

akan dihapus apabila sistem tidak memiliki pilihan lain. Contohnya apabila

memori tinggal sedikit sehingga proses foreground tidak bisa lagi berjalan. Hal

ini diperlukan untuk menjaga user interface tetap interaktif dengan user.

2. Visible process. Adalah proses yang memegang Activity yang dapat dilihat

user pada layar tetapi tidak foreground (pada saat method onPause()

dipanggil). Hal ini dapat terjadi, sebagai contoh activity foreground muncul

Page 11: Pengembangan Library Yahoo! Messenger pada Platform · PDF fileLibrary grafis 2D yang kaya dan 3D berbasis OpenGL ... lengkap platform ini dapat dilihat pada Gambar 2.1. ... kita membuat

II-11

dengan dialog sehingga activity sebelumnya terlihat di belakangnya. Proses ini

sangat penting dan tidak akan di hapus kecuali untuk menjaga aplikasi

foreground tetap berjalan.

3. Service process. Adalah proses yang memegang Service yang dimulai dengan

method startService(). Meskipun proses ini secara langsung tidak dapat

dilihat oleh user, biasanya proses ini menjalankan perintah dari user (seperti

memutar lagu, men-download data dari jaringan dan lain-lain). Sistem akan

tetap membiarkan proses ini berjalan selama proses foreground dan visible

masih bisa berjalan.

4. Background process. Adalah proses yang memegang Activity yang saat ini

tidak dapat dilihat oleh user (method onStop() sedang dipanggil). Proses ini

tidak secara langsung mempengaruhi user. Apabila activity life cycle telah

dipenuhi dengan benar, sistem dapat menghapus proses ini sewaktu-waktu

untuk memberikan memori tambahan. Biasanya banyak ditemukan proses

semacam ini, sehingga proses tersebut disimpan dalam LRU (Least Recently

Used) untuk menjaga agar proses yang baru saja dilihat oleh user akan dihapus

paling akhir pada kondisi low memory.

5. Empty Process. Adalah proses yang tidak memegang suatu komponen yang

sedang aktif. Alasan mengapa membiarkan proses semacam ini adalah untuk

melakukan cache sehingga proses startup menjadi lebih cepat apabila aplikasi

tersebut akan dijalankan kembali. Sistem seringkali menghapus proses

semacam ini untuk mencapai keseimbangan dari system resource antara

cached processes dan kernel caches.

Page 12: Pengembangan Library Yahoo! Messenger pada Platform · PDF fileLibrary grafis 2D yang kaya dan 3D berbasis OpenGL ... lengkap platform ini dapat dilihat pada Gambar 2.1. ... kita membuat

II-12

2.2 Yahoo! Messenger

Yahoo! Messenger adalah produk gratis yang memberikan kesenangan dalam

berkomunikasi kepada teman dan keluarga di seluruh dunia [YAH08]. Dengan Yahoo!

Messenger kita dapat melakukan text chating secara real-time, menelepon PC ke PC,

mengirimkan SMS, berbagai file dan foto. Selain itu dengan Yahoo! Messenger kita

dapat memulai instant conversation dengan menggunakan emoticons,

mengekspresikan virtualisasi diri dengan avatar dan bermain game dengan teman,

mendengarkan musik dan banyak lagi.

Yahoo! Messenger memiliki arsitektur yang sama dengan kebanyakan instant

messenger lainnya, yaitu arsitektur central server [YCB07]. Untuk mengatur

komunikasi antara client dan server terdapat suatu protokol messaging proprietary

yang dikembangkan oleh Yahoo! Sendiri. Bagian ini akan membahas protokol Yahoo!

Messenger yang meliputi struktur paket data yang digunakan, daftar layanan, status

dan mekanisme protokol tersebut.

2.2.1 Protokol Yahoo! Messenger

Protokol merupakan kesepakatan antara pihak yang sedang melakukan komunikasi

tentang bagaimana cara mereka melakukan komunikasi tersebut [TAN03]. Bagian ini

akan menjelaskan bagaimana protokol, struktur data dan mekanisme komunikasi yang

digunakan dalam komunikasi Yahoo! Messenger.

Seperti yang telah dijelaskan sebelumnya bahwa arsitektur Yahoo! Messenger adalah

client-server. Pertama client Yahoo! Messenger masuk ke dalam server Yahoo!

dengan mengirimkan username dan password. Server lalu melakukan otentikasi user

Page 13: Pengembangan Library Yahoo! Messenger pada Platform · PDF fileLibrary grafis 2D yang kaya dan 3D berbasis OpenGL ... lengkap platform ini dapat dilihat pada Gambar 2.1. ... kita membuat

II-13

tersebut dan menentukan apakah ia dapat menggunakan layanan ini. Dari sini, setiap

pesan yang dikirimkan kepada user lain akan di buffer terlebih dahulu. Pada saat

berhasil login ke server, client didaftarkan dengan status aktif. Server akan

mengirimkan daftar teman yang dimiliki client tersebut dan mengirimkan informasi

siapa saja yang aktif atau terhubung ke server. Metode ini memberikan tingkat

keamanan yang lebih tinggi karena pesan tidak dikirimkan point-to-point sehingga

user yang saling berkomunikasi masing-masing tidak perlu mengetahui IP

pasangannya.

Yahoo! Messenger telah berkembang menjadi beberapa versi. Versi 7 dikeluarkan

pada bulan November 2005 dan versi yang digunakan pada saat ini adalah versi 15.

Karena persaingan dengan perusahaan software lain, Yahoo! mengembangkan

protokol ini dalam bentuk proprietary. Oleh karena itu terdapat sedikit sekali

dokumentasi yang menjelaskan tentang protokol ini. Apabila ada, dokumentasi

tersebut tidak dikeluarkan oleh Yahoo! sendiri, melainkan programmer lain yang

melakukan reverse engineering terhadap protokol tersebut. Dokumentasi yang

tersedia saat ini adalah dokumentasi untuk versi 12 (YMSG12) [YCB07].

2.2.1.1 Struktur Paket Yahoo! Messenger

Semua komunikasi Yahoo! menggunakan komunikasi TCP/IP. Data yang

dipertukarkan terdapat dalam field data pada paket TCP. Yahoo! mengembangkan cara

pemakaian header yang umumnya digunakan pada TCP/IP dengan membuat

application level header format. Yahoo! Header memiliki panjang sebesar 20 byte.

Gambar 2.2 menunjukkan representasi grafik dari Yahoo! Header dan data.

Berdasarkan hasil penelitian yang dilakukan dalam Tugas Akhir ini, didapatkan

struktur paket yang berbeda dari Gambar 2.2. Perubahan yang ditemukan akan

Page 14: Pengembangan Library Yahoo! Messenger pada Platform · PDF fileLibrary grafis 2D yang kaya dan 3D berbasis OpenGL ... lengkap platform ini dapat dilihat pada Gambar 2.1. ... kita membuat

II-14

dibahas pada sub bab 3.3.1. Struktur paket yang baru dapat dilihat pada Gambar 3.4.

Setiap paket dimulai oleh 4 byte pertama yang merupakan karakter ASCII YMSG.

Diikuti oleh versi protokol, panjang pesan, jenis service, status dan session ID. Bagian

data dari paket Yahoo! Messenger juga memiliki struktur sendiri. Setelah session ID,

data menyusul dengan format sebagai berikut: FIELD ID, FIELD SEPARATOR,

FIELD DATA dan FIELD SEPARATOR. FIELD ID merepresentasikan integer dalam

bentuk ASCII yang dapat disusun oleh beberapa karakter. FIELD SEPARATOR

merupakan karakter heksadesimal 0xc080. Gambar 2.3 menunjukkan bagaimana

struktur bagian data dalam paket Yahoo! Messenger.

pada umumnya paket-paket dalam melakukan komunikasi pada Yahoo! Messenger

memiliki struktur yang sama. Perbedaan hanya pada nilai beberapa field. Untuk

memudahkan penulisan, struktur paket akan disusun seperti Gambar 2.4. Referensi

nilai dari FIELD ID dapat ditemukan pada LAMPIRAN A.

Bagian Version dari header menunjukkan versi protokol yang digunakan.

Contohnya untuk versi 12 maka nilainya adalah 0x0c 0x00. Bagian Length

Gambar 2.2: Struktu r hea der generik Yahoo! Messenger [YCB07]

Gambar 2.3: Field da ta Yahoo! Messenger [YCB07]

Page 15: Pengembangan Library Yahoo! Messenger pada Platform · PDF fileLibrary grafis 2D yang kaya dan 3D berbasis OpenGL ... lengkap platform ini dapat dilihat pada Gambar 2.1. ... kita membuat

II-15

menunjukkan panjang pesan dalam satuan byte pada bagian data.

Service Type merupakan jenis service yang merupakan kode yang menentukan

layanan apa yang di minta client pada server dan juga nilai balasan oleh server

sebagai respons-nya. Beberapa contoh layanan yang digunakan sekalian pengiriman

dan penerimaan pesan antara lain adalah layanan: buddies dan address book,

perubahan status, conference, file transfer, webcam dan sebagainya. Bagian Status

mengindikasikan status dari user yang dapat dilihat oleh user lain. Contoh status user

adalah YAHOO_STATUS_AVAILABLE (0x00000000) dan

YAHOO_STATUS_OFFLINE (0x5a55aa56). Bagian Session ID digunakan untuk

mengidentifikasi session yang didapat oleh user setelah mekanisme otentikasi terjadi.

2.2.1.2 Mekanisme Otentikasi ke Yahoo! Server

Gambar 2.5: Event pa da saa t login [YCB07]

Gambar 2.4: Referensi paket Yahoo! Messenger [YCB07]

Page 16: Pengembangan Library Yahoo! Messenger pada Platform · PDF fileLibrary grafis 2D yang kaya dan 3D berbasis OpenGL ... lengkap platform ini dapat dilihat pada Gambar 2.1. ... kita membuat

II-16

Sebelum program apapun dapat menggunakan servis dari Yahoo!, client tersebut

harus melakukan otentikasi ke server Yahoo!. Mekanisme tersebut dinamakan sign-in.

Untuk melakukan sign-in terlebih dahulu user harus memiliki username dan

password yang didapat melalui proses registrasi pada website Yahoo!. Gambar 2.5

menampilkan bagaimana event yang terjadi pada saat terjadi proses sign-in. Tidak

semua event dalam gambar tersebut perlu dilakukan. Event yang opsional ditandai

dengan tanda “*”.

Langkah pertama pada proses sign-in adalah pengiriman paket Yahoo_Verify. Paket

ini digunakan untuk memeriksa apakah network path menuju server Yahoo! ada dan

bisa digunakan. Struktur paket Yahoo_Verify dapat dilihat pada Gambar 2.6 dan paket

balasan dari server Yahoo! dapat dilihat pada Gambar 2.7. Untuk paket Yahoo_Verify

dari client ke server, kode service yang digunakan adalah 0x76 dan field status

bernilai YAHOO_STATUS_AVAILABLE (0x00). Sedangkan dari server ke client,

status-nya bernilai YAHOO_STATUS_BRB (0x01).

Gambar 2.6: Paket Yahoo_Verify dari client ke server [YCB07]

Gambar 2.7: Balasan paket Yahoo_Verify dari server ke client [YCB07]

Page 17: Pengembangan Library Yahoo! Messenger pada Platform · PDF fileLibrary grafis 2D yang kaya dan 3D berbasis OpenGL ... lengkap platform ini dapat dilihat pada Gambar 2.1. ... kita membuat

II-17

Setelah komunikasi telah diverifikasi, paket otorisasi Yahoo_Auth dikirimkan dari

client ke server. Paket ini berisi username dari user yang ingin login ke server

Yahoo!. Struktur paket tersebut dapat dilihat pada Gambar 2.8. Yahoo! Server akan

membalas paket tersebut dengan paket yang sama berisi: username, challenge string

dan Session ID. Session ID ini yang akan dipakai seterusnya selama

komunikasi sampai cilent dan server selesai berkomunikasi. Struktur paket

Yahoo_Auth dari server ke client dapat dilihat pada Gambar 2.9.

Setelah client menerima paket yang berisi challenge string, client akan melakukan

konkatenasi challenge string tersebut dengan password. Hasil konkatenasi string

tersebut lalu dihitung nilai hash nya dengan fungsi MD5. Kemudian nilai hash

tersebut akan dipecah menjadi dua filed data dengan FIELD ID 6 dan 96 lalu

dikirimkan ke server melalui paket Yahoo_AuthResp. Selain berisi nilai hash tersebut,

Gambar 2.8: Yahoo! A uthorization dari client ke server [YCB07]

Gambar 2.9: Yahoo! A uthorization dari server ke client [YCB07]

Page 18: Pengembangan Library Yahoo! Messenger pada Platform · PDF fileLibrary grafis 2D yang kaya dan 3D berbasis OpenGL ... lengkap platform ini dapat dilihat pada Gambar 2.1. ... kita membuat

II-18

paket ini juga berisi data lain seperti username dan client version. Struktur paket dari

Yahoo_AuthResp dapat dilihat pada Gambar 2.9.

Dengan informasi ini, server akan melakukan otentikasi user tersebut.

2.2.1.3 Mekanisme Pengiriman Buddy List

Gambar 2.10: Respons Yahoo! A uthorization dari server [YCB07]

Gambar 2.11: Struktu r paket Yahoo_List [YCB07]

Page 19: Pengembangan Library Yahoo! Messenger pada Platform · PDF fileLibrary grafis 2D yang kaya dan 3D berbasis OpenGL ... lengkap platform ini dapat dilihat pada Gambar 2.1. ... kita membuat

II-19

Setelah server melakukan otentikasi username dan password dari client, selanjutnya

server akan mulai mengirimkan daftar contact atau yang dikenal dengan nama buddy

list. Informasi buddy list tersebut dikirimkan melalui suatu paket bernama

Yahoo_List. Paket Yahoo_List merupakan paket pertama yang dapat berisi beberapa

YMSG header dan mungkin dikirimkan dalam beberapa paket. Hal tersebut

bergantung pada jumlah buddy dan jumlah ignored user yang dimiliki oleh suatu user.

Apabila dalam suatu paket terdapat beberapa YMSG header (multi header), maka

status dalam header tersebut diset sebagai YAHOO_STATUS_NOTINOFFICE

(0x00000004) sampai paket terakhir diterima. Beberapa kemungkinan bentuk struktur

paket Yahoo_List dapat dilihat pada Gambar 2.11. FIELD ID 87 digunakan untuk

mengirimkan buddy list dan FIELD ID 88 digunakan untuk mengirimkan ignored

user. Setelah buddy list selesai diterima, suatu paket lain menyusul diterima oleh

client. Paket ini adalah paket Yahoo_Ping yang berisi informasi buddy yang sedang

online dalam buddy list suatu user. Sebagaimana halnya paket Yahoo_List, paket

Yahoo_Ping juga dapat berisi multiple header, dalam beberapa paket atau mungkin

keduanya, tergantung dari jumlah user pada suatu buddy list.

2.2.1.4 Mekanisme Instant Messaging

Mekanisme instant messaging adalah service paling sederhana yang ditawarkan oleh

Yahoo!. Misalkan terdapat komunikasi antara user dengan username YUser1 dan

YUser2. Dilihat dari sudut pandang YUser1, ia mengirimkan paket seperti pada

Gambar 2.12. Paket ini berisi pengirim (sender), penerima (recipient), pesan

(message) dan informasi sistem yang lain. Karena sifat dari protokol Yahoo!

Messenger yang melakukan buffer pesan di server, YUser2 akan menerima paket

berbeda dari yang dikirimkan oleh YUser1. Paket tersebut disusun kembali dan

FIELD ID 5 akan berubah menjadi username yang mengirimkan pesan.

Page 20: Pengembangan Library Yahoo! Messenger pada Platform · PDF fileLibrary grafis 2D yang kaya dan 3D berbasis OpenGL ... lengkap platform ini dapat dilihat pada Gambar 2.1. ... kita membuat

II-20

Paket ini dapat dilihat pada Gambar 2.13.

2.3 Protokol TCP/IPTCP/IP merupakan protokol komunikasi yang membuat komputer berbeda ukuran,

berbeda vendor dan menjalankan sistem operasi yang berbeda-beda untuk dapat saling

berkomunikasi [STE03]. TCP/IP merupakan open system yang berarti segala definisi

protokol dan implementasi dapat digunakan tanpa biaya. Protokol ini membentuk

basis dari apa yang kita kenal dengan worldwide Internet, Wide Area Network (WAN).

Protokol network biasanya dikembangkan dalam bentuk lapisan-lapisan (Layers).

Dimana tiap layer memiliki tanggung jawab khusus dalam komunikasi. Layer TCP/IP

memiliki 4 layer seperti yang ditunjukkan oleh Gambar 2.14.

Gambar 2.13: Paket IM di terima oleh YUser2[YCB07]

Gambar 2.12: Paket IM dikirimkan oleh YUser1 [YCB07]

Page 21: Pengembangan Library Yahoo! Messenger pada Platform · PDF fileLibrary grafis 2D yang kaya dan 3D berbasis OpenGL ... lengkap platform ini dapat dilihat pada Gambar 2.1. ... kita membuat

II-21

Layer-layer pada TCP/IP tersebut adalah

1. Link layer, atau disebut juga dengan data-link layer. Biasanya terdapat dalam

driver dalam sistem operasi dan berkorespondensi dengan network interface

pada komputer tersebut. Layer ini bertanggung jawab untuk menangani

masalah hadrware dan layer fisik dari jaringan (kabel, radio dsb).

2. Network Layer, atau disebut dengan Internet Layer. Layer ini bertanggung

jawab untuk menangani masalah routing dari paket.

3. Transport Layer, Layer ini bertanggung jawab menangani aliran data diantara

dua host yang saling berkomunikasi.

4. Application layer. Menangani masalah detail dari aplikasi.

Protokol TCP/IP ini digunakan untuk mengirimkan paket-paket Yahoo! Messenger.

Gambar 2.14: Layer Protokol TCP /IP [STE03]