Berbagi Juga Berbakti

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 padaInstant 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.
Image result for xmpp protocol
XMPP Protokol
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 GTalkYM dan chat facebookInstant Messaging sekarang memang kebanyakan menggunakan protokol ini untuk saling berkomunikasi.
Image result for desentralisasi server xmpp
Desentralisasi Server

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 partdomain danresource. Contoh-nya adalah neubauer@gmail.com/athome, dimana mustofa adalah local partgmail.com/merupakan domain dimana saya terhubung dan athome adalah resource session dimana saya sedang melakukan komunikasi sekarang.
Image result for jaringan xmpp
Jaringan XMPP

3. Core Protokol

Core protokol XMPP hanya mentransmisi aliran data dalam format XML. Terdapat tiga jenis aliran XML yang ditransmisikan, antara lain messagepresence, 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 resultdari 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 responsebalasan dari entitas tersebut.
Image result for aliran xml
Aliran XML

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 librarymodule 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 daricontent 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 extensionsyaitu XEP-0290.
Image result for XEP-0290
Enkripsi Paket

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 googleapplefacebook membangun beberapa servicenya diatas protokol ini. Service-service ini seperti google talkgoogle wavechat facebookiCloud, dan lain sebagainya. Dengan menguasai dan memahami prtotokol ini, kita sebagai developer tentunya akan dapat menciptakan service atau aplikasi keren milik kita sendiri.

Share this post :

Posting Komentar

Test Sidebar

 
Support : Creating Website | Roni Template | Roni Template
Copyright © 2011. Bagus Kholilul Mustajib - All Rights Reserved
Template Created by Creating Website Published by Roni Template
Proudly powered by Coretan ex Mahasiswa Bodoh