7 Karakteristik Dasar Protokol XMPP
Disini saya ingin berbagi beberapa pengetahuan yang saya pelajari mengenai sebuah protokol bernama Jabber
atau lebih dikenal dengan XMPP. Saya tertarik untuk membahas protokol
ini, selain memang sangat penting pengetahuan tentang protokol ini bagi
para developer, artikel-artikel yang banyak saya dapati di internet
hanya menyebutkan seolah-olah bahwa protokol ini hanya dapat
diimplementasikan pada Instant Messaging(IM) saja. Padahal tidak demikian, protokol ini merupakan protokol standar komunikasi real-time yang telah disahkan oleh IETF. Memang pada tahun 2002 kemarin IETF telah merancang core protokol ini untuk keperluan Instance Messaging dan teknologi presence, namun komunitas jabber bekerja terus menerus agar protokol ini bersifat extensible dan luas dalam hal penggunaannya.
Dalam artikel ini, akan Saya tulis beberapa karakteristik yang dimiliki oleh open-standard
protokol XMPP. Tidak akan terlalu detail menjelaskan apa itu protokol
XMPP atau prosedur teknis kerja protokol ini. Hanya beberapa
karakteristik pokok yang akan saya sebutkan. Baiklah berikut adalah
poin-poin penting yang bagus untuk pemahaman awal tentang protokol ini:
1. Desentralisasi Arsitektur
Implementasi protokol XMPP merupakan teknologi dengan jaringan client-server
yang terdesentralisasi. Jaringan ini mirip dengan jaringan email,
dimana paket data dapat diteruskan kepada server XMPP lain yang menjadi
tujuannya. Kita dapat saja membuat jaringan XMPP dan kemudian membuat
saluran komunikasi dengan server Instant Messaging seperti GTalk, YM dan chat facebook. Instant Messaging sekarang memang kebanyakan menggunakan protokol ini untuk saling berkomunikasi.
2. JabberID
Penamaan address entitas pada jaringan XMPP menggunakan
layanan DNS. Dengan memakai DNS akan sangat memudahkan untuk menghafal
seluruh entitas-entitas yang terhubung, daripada mengingat satu-persatu
IP address pada setiap entitas. Tiap entitas pasti memiliki sebuah ID yang unik yang dikenal dengan istilah JabberID atau disingkat dengan JID. JabberID ini terbagi menjadi tiga bagian: local part, domain dan resource. Contoh-nya adalah mustofa@mimicreative.net/athome, dimana mustofa adalah local part, mimicreative.net merupakan domain dimana saya terhubung dan athome adalah resource session dimana saya sedang melakukan komunikasi sekarang.
3. Core Protokol
Core protokol XMPP hanya mentransmisi aliran data dalam format XML. Terdapat tiga jenis aliran XML yang ditransmisikan, antara lain message, presence, dan info query atau lebih dikenal dengan IQ. Jenis pertama (1) message, merupakan general paket XMPP berisi informasi yang dikirim dari satu entitas ke entitas lainnya. Pengiriman paket ini bersifat fire and forget, artinya entitas pengirim tidak akan mendapatkan result dari paket message yang telah dia kirimkan. Selain itu juga message ini dikirimkan dari dan ke one-to-one entitas atau one-to-many. Jenis yang kedua adalah (2) presence, dikirimkan dengan tujuan availability kehadiran entitas yang terhubung dalam jaringan. Kita dapat mengetahui status online atau offline dari setiap entitas karena adanya aliran data presence ini. Tidak seperti message, presence dikirimkan ke semua entitas (broadcast) yang sudah “subscribe” ke entitas tersebut. Terakhir, jenis yang ketiga adalah (3) IQ, digunakan untuk mekanisme request-response antar entitas dalam jaringan XMPP. Mirip dengan metode GET dan POST pada protokol HTTP. Terdapat sebuah entitas yang mengirimkan request ke entitas lain, dan akan menerima response balasan dari entitas tersebut.
4. Server XMPP
Pada jaringan XMPP, tidak semua operasi dilakukan oleh server. Tugas
server hanya terbatas pada meneruskan aliran data, mencatat status
kehadiran entitas dan mengatur roster (subscribing
user/entitas). Pemprosesan setiap paket akan dilakukan sendiri oleh
masing-masing entitas. Dalam beberapa kasus bahkan kita tidak memerlukan
operasi tambahan di server. Kita hanya membutuhkan core protokol dan server XMPP bekerja sebagaimana mestinya. Semua operasi dan proses dilakukan oleh aplikasi client yang kita bangun. Kasusnya seperti pada game sederhana “Tankar” ini. Game ini merupakan game multi player yang juga memanfaatkan core protokol XMPP untuk bertukar data dan berkomunikasi antar pemainnya. Semua proses sepenuhnya ada pada aplikasi client yang di jalankan independent
pada masing-masing player. Tidak ada spesifik server, karena aliran
data akan berjalan melewati server-server XMPP yang sudah ada, seperti
server jabber.org dan server google talk.
5. Payload
Setiap child element dari aliran XML yang ditransmisi merupakan
payload data aplikasi. Kalau dalam ilmu komunikasi dan informasi,
payload yang saya maksudkan disini, sekumpulan data seperti data buku,
event, atau informasi apapun yang nantinya akan di proses oleh aplikasi
yang kita bangun. Ketiga jenis aliran XML yang sudah saya sebutkan
diatas (message, presence, dan IQ), dapat membawa data-data informasi
untuk sistem aplikasi. Lalu format payload seperti apa yang dapat kita
sisipkan pada aliran XML? Dari e-book yang berjudul “Profesional XMPP
Programming with Javascript and jQuery” karangan Jack Moffitt, payload
disini dapat berbagai macam jenis data, contohnya seperti XHTML (contoh
pada Data Form pada XEP-0004),
URL, RSS, SOAP, XML-RPC dan banyak lagi lainnya. Dalam bukunya Jack
Moffitt bahkan berkata bahwa “payload types are limited only by your
imagination!” yang memberikan penjelasan bahwa apapun tipe datanya dapat
di sisipkan pada aliran XML protokol ini.
6. Extensions Protokol
Komunitas XMPP telah membuat banyak sekali extensions yang dapat kita manfaatkan untuk build sistem aplikasi. Extensions disini bukanlah library, module atau add-ons. Bisa dibilang extension ini merupakan kekuatan utama protokol XMPP.
X dari singkatan XMPP merupakan “extensible”. Merupakan
sifat yang dimiliki oleh core protokol XMPP. Istilah extensible -menurut
saya- berkenaan dengan sifat core protokol XMPP untuk membawa data (payload) yang telah kita definisikan untuk membangun berbagai macam sistem aplikasi yang berbeda. Sistem aplikasi mulai dari content
syndication, push notification, lightweight middleware and web
services, whiteboarding, multimedia session negotiation, intelligent
workflows, geolocation, social gaming, social networking dan bahkan cloud computing.
Dari sifat “extensible” ini kemudian terdapat sebuah istilah
extensions yang berarti proses dan payload data yang sudah developer
rancang untuk tujuan tertentu. Setiap developer dapat merancang atau
membangun extensions-nya sendiri. Sehingga akan sangat banyak sekali
extensions yang akan dapat kita temukan. Tapi terdapat juga extensions
standar yang diatur oleh XSF(XMPP Standart Foundations). Extensions standar ini kemudian di kenal dengan istilah XEP(XMPP
Extension Protocol). Berikut adalah extensions standar yang paling
sering digunakan oleh para developer untuk membangun sistem aplikasi:
Terdapat tiga ratusan lebih extensions yang sudah masuk dalam list
XSF. Untuk melihat keseluruhannya Anda dapat membacanya pada link ini.
7. Keamanan Protokol
XMPP support TLS (Transport Layer Security) yang juga merupakan protokol kembaran dari SSL,
digunakan untuk menangani keamanan data yang ditransmisikan melalui
jaringan XMPP. Integrasi XMPP dengan TLS ini diatur pada sebuah extensions yaitu XEP-0290.
Itulah 7 karakteristik protokol XMPP yang dapat Saya tulis. Dengan
mengetahui beberapa karakteristik ini, tentunya kita dapat menebak
aplikasi atau sistem seperti apa yang cocok di implementasikan dengan
protokol ini. Kita dapat saja membuat kendaraan yang berjalan diatas air
dengan sangat baik atau membuat kendaraan yang melayang diudara dengan
sangar baik, tapi tentunya kita tidak dapat menciptakan kendaraan yang
sangat baik dikeduanya, diatas air dan di udara. Demikian juga dengan
implementasi protokol XMPP. Protokol ini akan sangat baik di
implementasi untuk aplikasi-aplikasi yang:
- Pertama, ketika membutuhkan sebuah informasi tentang kehadiran atau presence sebuah entitas dalam jaringan, entah itu entitas client atau server.
- Ketika sebuah aplikasi membutuhkan alert dan notifikasi terhadap data baru pada jaringan internet.
- Ketika komunikasi membutuhkan sebuah channel enkripsi, authentikasi dan trusted identities.
- Ketika kita membutuhkan komunikasi diantara distributed network yang kita miliki.
- Ketika kita membutuhkan sebuah signaling channel yang cukup sederhana untuk mengatur interaksi data suara atau video.
(Diambil dari: “XMPP: The Definitive Guide, Peter Saint-Andre, Kevin Smith, and Remko Tronçon”)
Penutup
Pada umumnya, protokol XMPP digunakan untuk interaksi dan komunikasi secara real-time
antara entitas-entitas jaringan. Dan ini memang sangat luas sekali
pemanfaatannya. Banyak aplikasi-aplikasi keren yang dapat kita bangun
dengan memanfaatkan protokol ini seperti social gaming, push notification dan social networking. Perusahaan-perusahaan sekelas google, apple, facebook membangun beberapa servicenya diatas protokol ini. Service-service ini seperti google talk, google wave, chat facebook, iCloud,
dan lain sebagainya. Dengan menguasai dan memahami prtotokol ini, kita
sebagai developer tentunya akan dapat menciptakan service atau aplikasi
keren milik kita sendiri.
0 Response to "7 Karakteristik Dasar Protokol XMPP"
Posting Komentar