- 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
- 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
- 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.
- 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
- 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>
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 pesan adalah error message.
Error ditunjukkan didalam sub elemen <error></error> di dalam
elemen message
|
<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.
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.
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
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
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.
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.
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@example.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.
- 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
Mantap penjelasanya.....๐๐๐๐๐
ReplyDeleteGood...
ReplyDeletemba bisa buatkan saya di app builder ngga jabber kalau bisa kontak 085797505029
ReplyDelete