Download pdf - Jabber Protocol

Transcript
Page 1: Jabber Protocol

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

Page 2: Jabber Protocol

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

Page 3: Jabber Protocol

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

Page 4: Jabber Protocol

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)

Page 5: Jabber Protocol

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=”[email protected]”>

<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=”[email protected]

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=”[email protected]”>

<body> Do you have a

new report </body>

</message>

type=”error” Mengindikasikan bahwa <message

Page 6: Jabber Protocol

pesan adalah error message.

Error ditunjukkan didalam

sub elemen <error></error>

di dalam elemen message

to=”[email protected]

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=”[email protected]

type=”chat”>

<body> Do you have a

new report </body>

</message>

type=”groupchat” Mengindikasikan bahwa

pesan ditampilkan dalam

room chat interface.

<message

to=”[email protected]

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

Page 7: Jabber Protocol

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='[email protected]'>

<body>howdy</body>

</message>

Pada sisi server, pemrosesan akhir pengiriman pesan akan tampak

sebagai berikut :

<message from='[email protected]/work'

to='[email protected]'>

<body>Howdy</body>

</message>

Page 8: Jabber Protocol

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.

Page 9: Jabber Protocol

Tabel 2. 1 Atribut pada elemen <presence>

Atribut Fungsi Contoh

type= ”subscribe”

mendaftar informasi presence pengguna lain

<presence

to=”[email protected]

[email protected]

type=subscribe”

type= ”subscribed”

Menerima request pendaftaran informasi presence dari pengguna lain

<presence

to=”[email protected]

[email protected]

type=subscribed”

type= ”unsubscribe”

Menghentikan update informasi presence dari pengguna lain

<presence

to=”[email protected]

[email protected]

type=unsubscribe”

type= ”unsubscribed”

Menghapus presence pengguna lain

<presence

to=”[email protected]

[email protected]

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 [email protected] 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.

Page 10: Jabber Protocol

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>

Page 11: Jabber Protocol

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="[email protected]">

<query xmlns="jabber:iq:auth">

</query>

</iq>

Page 12: Jabber Protocol

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

Page 13: Jabber Protocol

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

Page 14: Jabber Protocol

Daftar Pustaka

Irawan, Dwi Ardi.2008.Tugas Akhir Rancang Bangun Perangkat Lunak Mobile Rss Push

Menggunakan Protokol Jabber Pada Platform Javame.ITS:Surabaya


Recommended