Post on 25-Oct-2015
description
JABBER PROTOCOL FITRIA INTAN PURWANTI NIM 1102642 ANNISA RIANDA GUSRIAL NIM 1102635 HEPPY AESTI VANI NIM 1102667
JURUSAN PENDIDIKAN TEKNIK INFORMATIKA Fakultas Teknik Universitas Negeri Padang
2013
UNIVERSITAS NEGERI PADANG
A. Pengertian Jabber
Jabber adalah protokol eXtended Markup Language (XML) yang terbuka yang
berfungsi sebagai pertukaran pesan dan kehadiran antara dua host dalam internet.
Implementasi pertama dari Jabber adalah Instant Messenger yang mempunyai fungsi
yang sama seperti IM yang sudah ada seperti ICQ, AOL, MSN dan Yahoo messenger
B. Sekilas Tentang Jabber
Proyek Jabber dimulai pada awal 1998 sebagai gagasan dari Jeremie Miller.
Proyek tersebut cepat berkembang pesat dan mulai mendapat perhatian publik ketika
menjadi topik diskusi pada slashdot (www.slashdot.org) yaitu sebuah website diskusi
popular antar developer pada bulan januari 1999. Protokol inti Jabber versi 1.0 dari
referensi server jabber yang bersifat open source dirilis pada bulan mei 2000.
Dari awal pengembangan, komunitas developer Jabber mencoba untuk
membuat standart IM dan menyarankan interoperability antar sistem IM. Usaha
kooperatif ini sangat kontras dengan perilaku dari provider IM lainnya yang menjaga
agar sistem mereka tertutup dan terisolasi dari jaringan IM lain.
Sebagai usaha menjadikan Jabber sebagai protokol standart, pada bulan juni
2000, komunitas Jabber mempublikasikan protokol tersebut sebagai Request for
Comments (RFC) kepada Internet Engeneering Task Force (IETF) sebagai bagian dari
standart IMPP (Instant Messaging and Presence). tetapi IMPP ini tidak berjalan
sukses. Pada bulan Mei 2001, Jabber Community dan Jabber Inc. membuat Jabber
Software Foundation. Jabber Software Foundation adalah organisasi serupa dengan
Apache Foundation yang keberadaannya adalah untuk menunjukkan dedikasinya
terhadap dunia open source dan interoperability antar sistem IM.
Pada tahun 2002, Internet Engineering Steering Group (IESG) menyetujui
formasi Extensible Messaging and Presence Protocol Working Group (XMPP)
dengan Internet Engineering Task Force (IETF). Ruang lingkup working group adalah
untuk mengeksplorasi dan dimana protokol tersebut digunakan, memodifikasi
protokol yang sudah ada agar dapat memenuhi RFC 2799 seperti persyaratan yang
ditentukan dalam spesifikasi Common Presence and Instant Messaging (CPIM).
Fokus utama working group adalah membuat XML stream termasuk stream pada
level security dan autentikasi, elemen data dan namespace yang dibutuhkan untuk
mencapai dasar IM dan Presence. XMPP working group menerbitkan XMPP Core
Internet-Draft sebagai dokumen yang menggambarkan fitur-fitur utama Extensible
Messaging dan protokol Presence
C. Tinjauan Teknologi Protokol Jabber
Dalam banyak hal, tujuan dari Jabber adalah untuk membangun sistem IM
yang lebih baik yang mendukung informasi kehadiran secara real time(presence) dan
pesan(messaging). Yang dimaksud sistem IM yang lebih baik adalah :
1. Open, protokol Jabber bersifat free, terbuka, publik dan mudah dimengerti. Ini
mempermudah untuk siapapun yang membuat implementasi Jabber tanpa harus
mengeluarkan biaya untuk lisensinya.
2. Standart, Internet Engeneering Task Force (IETF) telah menformulasikan
protokol XML sebagai instant messaging and presence technology yang
disetujui dengan nama Extensible Messaging dan Presence Protocol atau
XMPP.
3. Proven, Jabber pertama kali dikembangkan oleh Jaremie Miller pada tahun
1998 dan sekarang sudah cukup stabil, ratusan developer berkerja
menggunakan teknologi jabber. Ada sepuluh dari seribu Jabber server yang
aktif di internet sekarang dan jutaan orang menggunakan Jabber untuk IM.
4. Decentralized, Arsitektur dari Jabber menyerupai email, sehingga setiap orang
dapat membuat jabber server sendiri.
5. Secure, Jabber server dapat dibuat terisolasi dari jaringan lain. Selain itu sistem
keamanan menggunakan SASL dan TLS sudah dibangun di dalam core XMPP
specification
6. Extensible, menggunakan kelebihan dari XML namesapces, setiap orang dapat
membangun fungsionalitas tambahan diatas protokol jabber. Untuk menjaga
interoperability, extension umum diatur oleh XMPP Standart Foundation.
7. Diverse, banyak perusahaan dan project open source menggunakan protokol
jabber untuk membangun real-time application. Developer tidak akan merasa
“terkunci” menggunakan teknologi jabber.
D. Arsitektur Jabber
Jabber menggunakan arsitektur client server. client Jabber dapat
berkomunikasi dengan server Jabber pada domain Jabber mereka. Domain Jabber
memiliki keuntungan yaitu kemampuannya dalam memisahkan zona komunikasi,
yang ditangani oleh server Jabber yang berbeda, tidak seperti kebanyakan sistem IM
lainnya yang menggunakan satu server terpusat untuk seluruh zona komunikasi. Pada
Jabber pesan dikirim oleh client ke server pengirim kemudian diteruskan ke server
penerima baru kemudian disampaikan ke client penerima
Format data yang digunakan untuk komunikasi pada jabber adalah format data
XML. XML adalah standart World Wide Web Consortium untuk format data yg
standart, generic untuk sebuah dokumen. Semua komunikasi yang berlangsung pada
Jabber melibatkan pertukaran paket jabber dimana setiap paket dapat berupa
fragmentasi XML. Fragmentasi XML ini dapat dikatakan sebagai sub dokumen dalam
komunikasi stream pada Jabber.
1. Modular server
Server Jabber memiliki tiga peranan utama yaitu :
Menangani koneksi client dan berkomunikasi secara langsung dengan client
Jabber
Berkomunikasi dengan server Jabber yang lain
Mengkoordinasikan beragam komponen server yang diasosiasikan dengan
server
Server Jabber di desain modular, dengan paket kode internal yang khusus
sehingga dapat menangani fungsionalitasnya seperti registrasi, auntentikasi,
present, contact list, penyimpanan pesan yang berstatus off-line dan sebagainya.
Selain itu server Jabber dapat dikembangkan dengan komponen eksternal yang
memungkinkan administrator server untuk mensuplemen server pusat dengan
layanan tambahan semacam gerbang untuk sistem messaging lainnya.
2. Simple client
Satu kriteria desain sistem Jabber bahwa ia harus memiliki kemampuan
untuk mendukung client yang sederhana misalnya koneksi telnet pada port yang
benar. Dalam hal ini tentu saja arsitektur Jabber memberikan sedikit batasan pada
client. Task-task pada client Jabber harus dapat mengenal dan melengkapi :
Komunikasi dengan server Jabber melalui soket TCP
Melakukan parsing dan interpretasi XML dengan format yang baik melalui
XML stream
Memahami tipe data utama Jabber (message, presence dan iq)
Keuntungan di dalam Jabber adalah dapat memindahkan kompleksitas dari
client ke server. Secara praktis, banyak fungsi yang low-level pada client seperti
proses parsing XML dan memahami tipe data core Jabber yang ditangani oleh
library-library client Jabber, memungkinkan client developer untuk fokus pada
user interface
E. Komponen Utama Jabber
Tiga komponen utama jabber adalah :
1. Message
Jabber menggunakan protokol message untuk mengirim pesan dalam
bentuk XML stream. Pesan dapat dikirm antara jabber client dengan jabber server
atau antara dua jabber server yang berbeda.
Protokol message sangat sederhana, paket pesan dikirim dari sender ke
recepient. Secara default tidak ada acknowledge ketika recepient menerima pesan.
Jika pesan dikirim dan recepient dalam keadaan offline maka server berkewajiban
menyimpan pesan tersebut dan mengirimkannya ketika recepient sudah dalam
keadaan online. Proses seperti ini mengacu pada proses store and foward.
Pada dasarnya format untuk protokol message adalah sebagai berikut :
<message></message>
Tabel 2.1 Atribut pada elemen <message>
Atribut Fungsi Contoh to=”” from=”” Mengidentifikasikan sender
dan recepient. Format alamat
jabber diatur dalam
spesifikasi jabber. Atribut ini
diperlukan untuk semua
pesan.
<message
to=”smith@example.com”>
<body> Do you have a
new report </body>
</message>
Id=”” Digunakan identifier yang
unik pada pesan. Client dapat
menggunakan id untuk
mengidentifikasikan pesan
jika pesan mengalami error.
Atribut ini bersifat opsional.
<message
to=”smith@example.com”
id=”1001”>
<body> Do you have a
new report </body>
</message>
[default] Menunjukkan bahwa pesan
berupa normal message.
Secara default, client
memberikan atribut tipe ini
jika tidak ada atribut type
yang diberikan.
<message
to=”smith@example.com”>
<body> Do you have a
new report </body>
</message>
type=”error” Mengindikasikan bahwa <message
pesan adalah error message.
Error ditunjukkan didalam
sub elemen <error></error>
di dalam elemen message
to=”smith@example.com”
type=”error”>
<error type=”404”> Not
found </error>
</message>
type=”chat” Mengindikasikan bahwa
pesan ditampilkan dalam
sebuat line-by-line chat
interface (1-to-1 chat)
<message
to=”smith@example.com”
type=”chat”>
<body> Do you have a
new report </body>
</message>
type=”groupchat” Mengindikasikan bahwa
pesan ditampilkan dalam
room chat interface.
<message
to=”smith@example.com”
type=”groupchat”>
<body> Do you have a
new report </body>
</message>
Protokol message mempunyai beberapa set sub-elemen didalamnya. Sub-
elemen yang pertama menunjukkan content dari pesan dan yang kedua adalah
sub-elemen yang merupakan informasi metadata.
Content
<body><body>
Sub-elemen ini membungkus isi pesan yang akan dikirimkan. Elemen
<body/> hanya diperbolehkan ada satu kali pada setiap pesan dan berupa plain
text.
<x xlmns=”jabber:x:”></x>
Sub-elemen ini digunakan untuk mengirim perintah antar client atau
sebagai mekanisme tambahan. Setiap kali elemen ini digunakan, namespaces
(xmlns) harus didefinisikan. Sebuah pesan dapat memiliki banyak elemen
</x> ini.
Sebagai contoh namespaces untuk out-of-bond extension dapat
digunakan untuk mengirim file antar aplikasi.
<x xmlns=”jabber:x:oob”></x>
<error type=”nnn”></error>
Sub-elemen ini disertakan ketika atribut type dari pesan di set “error”.
Error yang sebenarnya didefinisikan oleh atribut type=”nnn” yang
menunjukkan jenis dari error.
302 – redirect
400 – Bad Request
401 – Unauthorized
402 – Payment Reuired
407 – Registration Required
408 – Request Timeout
409 – Conflict
500 – Internal Sevrer Error
Isi dari sub-elemen error adalah penjelasan teks dari spesifik error.
Sebagai contoh, bad request mempunyai format sebagai berikut :
<error type=”400”>Bad Request</error>
Metadata
<subject></subject>
Sub-elemen ini menjelaskan topik dari pesan.
<thread></thread>
client penerima pesan selalu mengembalikan id dari elemen ini ketika
terdapat membalas pesan yang diterima. Hal ini membuat pengirim dan
penerima untuk mengidentifikasikan dan membuat conversation thread.
Thread biasanya bernilai id string yang unik dan random.
Ketika client mengirim pesan ke server. Pengirim secara implisit
menjadi jabber id dari client dan penerima adalah server jika tidak ada alamat
jabber id penerima. Beberapa server Jabber tidak mengijinkan kita untuk
mengirim pesan dengan alamat jabber pengirim yang tidak sesuai dengan
session pengirim. Contoh pesan valid yang dikirim ke server adalah sebagai
berikut :
<message to='smirk@jabber.org'>
<body>howdy</body>
</message>
Pada sisi server, pemrosesan akhir pengiriman pesan akan tampak
sebagai berikut :
<message from='iain@shigeoka.com/work'
to='smirk@jabber.org'>
<body>Howdy</body>
</message>
2. Presence
Protokol ini bertanggung jawab terhadap dua hal dibawah ini, yaitu :
a. Presence Update, menginformasikan pengguna lain status presence yang
sedang kita digunakan.
b. Presence Subscription Management, mengijinkan pengguna untuk
mendaftarkan update presence dari pengguna lain dan mengatur siapa saja
yang berhak mengetahui status presence-nya.
Dalam kedua peran tersebut server jabber bertindak sebagai penengah
antara presence information generator dan presence recepients. Server tidak
memiliki kewenangan untuk secara pasif mengatur rute dari presence packet
namun secara aktif server berpartisipasi di dalam protokol presence untuk
memastikan operasi dilakukan dengan benar. Gambar 2.3 menunjukkan alur dari
informasi pada Jabber server.
Gambar Error! No text of specified style in document..1 Server Jabber sebagai abitrator dalam pertukaran
informasi presence
Presence update protocol menggunakan model pesan satu arah atau one-
way message. Client mengirim update presence packet kepada server, kemudian
server meneruskan salinan dari paket tersebut kepada semua pihak yang terdaftar
pada presence subscription list dari client pengirim. Subscription list tersebut
dinamakan roster di dalam jabber, namun lebih umum dikenal dengan sebutan
buddy list.
Client jabber dapat dapat mendaftar presence dari jabber client lainnya.
Proses pendaftaran tersebut adalah sebuah kesepakatan untuk mengetahui status
presence dari client jabber yang daftarkan. Sebagai contoh, kita dapat mendaftar
presence temen kita sehingga ketika teman kita tersebut online, kita akan
mendapatkan notifikasi, begitu pula sebaliknya.
Tabel 2. 1 Atribut pada elemen <presence>
Atribut Fungsi Contoh
type= ”subscribe”
mendaftar informasi presence pengguna lain
<presence
to=”george@aim.jabber.com
from=jane@jabber.com
type=subscribe”
type= ”subscribed”
Menerima request pendaftaran informasi presence dari pengguna lain
<presence
to=”jane@jabber.com
from=george@aim.jabber.com
type=subscribed”
type= ”unsubscribe”
Menghentikan update informasi presence dari pengguna lain
<presence
to=”george@aim.jabber.com
from=jane@jabber.com
type=unsubscribe”
type= ”unsubscribed”
Menghapus presence pengguna lain
<presence
to=”jane@jabber.com
from=george@aim.jabber.com
type=unsubscribed”
Server menggunakan Probe presence packet untuk request spesifik entitas
dari presence packet. Dalam hal ini entitas yang dimaksud adalah menentukan
apakan entitas tersebut available atau unavailable. Entity Probe mengijinkan
informasi presence untuk dikirimkan
Elemen request probe presence dikirim dengan menggunakan format dibawah ini
<presence type=”probe”>
Elemen-elemen dibawah ini digunakan di dalam elemen <presence>.
<status></status>
Elemen ini digunakan untuk menampilkan deskripsi status dari user yang
dapat langsung dilihat oleh user lain. Misal, pengguna ingin menampilkan status
yang menunjukkan deskripsi dari apa yang sedang ia lakukan, “i’m at lunch”
atau”be back in 5 minutes”
<priority><priority>
Elemen ini memberi prioritas dari presence pada satu entitas pengguna.
Misal smith@example.com mungkin login dengan menggunakan multiple
resources (home computer, work dan work computer). Elemen ini memberikan
prioritas angka untuk setiap resources. Resources dengan angka yang tinggi
adalah default dari resources. Semua pesan dan komunikasi akan diarahkan
kepada resources yang mempunyai nilai prioritas paling tinggi.
Ketika prioritas resources paling tinggi tersebut menjadi unavailable, pesan
dan komunikasi akan dikirim ke resources lainnya yang mempunyai nilai prioritas
tertentingi kedua. Prioritas yang bernilai negatif menunjukkan bahwa resources
tidak dapat digunakan untuk direct atau immediate contact.
<show></show>
Elemen ini menunjukkan bagaimana status online seorang user kepada user
lain. Tabel 2.3 berikut ini menunjukkan opsi yang tersedia.
Tabel 2. 2 Nilai pada elemen <show>
Tag/Elemen Arti
<show>chat><show> Client availabel untuk immediate contact
<show>away><show> Client dalam keadaan online, namun tidak ada di
tempat (misal “at launch” atau “meeting”)
<show>xa><show> Client dalam keadaan online namun tidak aktif dalam
jangka waktu lama
<show>dnd><show> Client dalam keadaan tidak sedang ingin diganggu
atau mode don’t distrub
<x xmlns=”jabber:x”></x>
Elemen ini digunakan untuk mengirimkan perintah antar aplikasi atai
sebagai fungsi tambahan. Setiap kali elemen ini digunakan, namespaces xmlns
harus didefinisikan. Sebuah pesan tunggal dapat memiliki lebih dari elemen <x/>.
3. Info/Query
Meskipun secara garis besar trafik jabber terdiri dari message dan presence,
sebagian besar pekerjaan mengimplementasikan client dan server adalah mengatur
administrasi dan manajemen protokol yang mendukung message dan presence.
Jabber melakukan tugas tersebut menggunakan generic query protocol yang
disebut IQ. Gambar 2.4 menunjukkan gambaran cara kerja dari protokol IQ.
Gambar Error! No text of specified style in document..2 Atribut pada elemen <iq>
Tabel 2. 3 Tabel atribut pada elemen IQ
Atribut Fungsi Contoh
to="*"
from="*"
Mengidentifikasi sender dan
recepients
<iq
to="jsmith@example
.com"/>
id="*"
Id unik untuk message <iq
to="jsmith@example
.com"
id="1001"/>
type="get"
Menerima informasi yang
berhubungan dengan query
namespace. Atribut ini secara default
disertakan jika tipe atribut tidak di set
<iq type="get"
to="jsmith@example
.com"/>
type="set"
Menunjukkan bahwa message yg
dikirim adalah query yang di dalam
nya terdapat data yang akan di set
atau diganti nilainya
<iq type="set"
to="jsmith@example
.com"/>
type="result"
Mengindikasikan message adalah
response tanda bahwa query Get atau
Set berhasil dilakukan.
<iq type="result"
from="jsmith@examp
le.com"/>
type="error"
Menunjukkan kegagalan dalam
query. Deskripsi dari kesalahan di
jabarkan pada elemen error yang ada
di dalam elemen iq
<iq type="error"
to="jsmith@example
.com">
<error
type="404">Not
found</error>
</iq>
Di dalam setiap IQ, sebuah namaspaces mendefinisikan tipe dari query
yang akan dilakukan. Namespaces didefinisikan di dalam elemen query seperti
yang ditunjukkan dibawah ini.
<query xmlns="*"/>
Sebagai contoh, client mengirim query Set dengan client authentification
namespaces ke server untuk login.
<iq type="set" to="jsmith@example.com">
<query xmlns="jabber:iq:auth">
</query>
</iq>
format protokol IQ yang digunakan pada jabber dapat dirumuskan seperti
yang ditunjukkan dibawah ini.
<iq type='set|get|result|error'
to='handler_jid'
from='originator_jid'
id='unique'>
<query xmlns='iq extension namespace'>
<query_field1/>
<query_field2/>
</query>
</iq>
Protokol IQ ini sangat penting jika kita ingin membangun server
berdasarkan kebijakan keamanan sistem yang harus dipenuhi oleh client. Jika
sistem keamanan client telah terpenuhi maka harus mendukung pula terhadap
sistem keamanan pada sisi server.
F. Sistem Keeamanan Jabber Protokol
1. Stream Encryption
XMPP merupakan sebuah metode untuk mengamankan stream dari
kerusakan atau pembicaraan yang didengar oleh pihak lain (eavesdropping).
1. SSL/TLS
Sebelum menggunakan SSL/TLS, client dapat mulai dengan membahas
STARTTLS memantau respon server apakah mendukung TLS atau tidak
2. OpenPGP
XMPP working group outline menggunakan solusi OpenPGP yang
digunakan saat ini dengan tidak ada modifikasi aktual di dalam draft
internet mereka dengan judul End- To-End Object Encryption. XMPP
working group menggambarkan enkripsi objek sebagai mekanisme key
exchange yang dilakukan dengan mengunakan key server OpenPGP
2. Stream Authentication
XMPP menggunakan dua macam metode untuk memperkuat autentikasi
pada level XML stream
1. SASL Authentication
SASL menyediakan metode umum untuk menambahkan autentikasi
yang mendukung koneksi berbasis protokol. XMPP menggunakan sebuah
profil namespace XML yang umum dan namespace identifier untuk
protokol ini
2. Dialback Authentication
Di dalam XMPP termasuk sebuah metode level protokol untuk
membuktikan bahwa koneksi antara 2 server dapat dipercaya (minimal
seperti DNS yang dapat dipercaya). Metode ini disebut dialback dan hanya
dapat digunakan dengan XML stream yang dideklarasikan berdasarkan
namespace jabber:server.
3. Stream Authentication
XML digunakan sebagai teknologi dasar untuk mendesain dokumen
yang terstruktur berdasarkan pertimbangan bahwa XML merupakan standar yang
terbuka dan telah diterima secara luas untuk mendukung transaksi berbasis
Internet
Daftar Pustaka
Irawan, Dwi Ardi.2008.Tugas Akhir Rancang Bangun Perangkat Lunak Mobile Rss Push
Menggunakan Protokol Jabber Pada Platform Javame.ITS:Surabaya