Extensible Messaging and Presence Protocol (XMPP) (endise nimega Jabber) on kiirsõnumite protokoll. See on inspireeritud XML-st ning loodud avatuks ja hajusaks standardiks reaalajas sõnumivahetuseks ja kohaloleku (presence) andmete jagamiseks.
XMPP erineb paljudest suletud protokollidest selle poolest, et tegemist on avatud standardiga: igaüks, kellel on domeeninimi ja internetiühendus, võib käivitada oma XMPP- serveri ja liituda maailmavõrguga. Enamik XMPP-iga seotud tarkvarast ja klientidest on avatud lähtekoodiga, mis soodustab omavahelist ühilduvust ja laiendamist.
Mitmed tuntud teenused ja rakendused, nagu Google Talk ja Gizmo5, on kasutanud XMPP-protokolli. Protokoll on paigaldatud tuhandetele serveritele üle interneti ning hinnanguliselt üle viiesaja miljoni kasutaja on kasutanud sellel protokollil põhinevat tarkvara. Näideteks klientidest on Pidgin ja iChat.
Põhimõisted ja tööpõhimõte
- JID (Jabber ID) — kasutaja aadress XMPP-s; tavaliselt kujul kasutaja@domeen/ressurss, kus ressursi osa võimaldab sama kontoga logida mitmest seadmest.
- Kohalolek (presence) — reaalajas teave selle kohta, kas kasutaja on saadaval, hõivatud, eemal vms; seda jagatakse automaatselt kontaktidega.
- Federatsioon — XMPP-serverid suhtlevad omavahel, mis tähendab, et kasutaja kontaktid ei pea olema samal serveris (sarnaselt e-posti mudelile).
- Sõnumivahetus — sõnumeid saadetakse XML-sõnumitega, mis võimaldab struktureeritud andmete ja metaandmete edastamist.
Turvalisus ja autentimine
- TLS (Transport Layer Security) — XMPP-serverite ja klientide vahelise ühenduse krüpteerimiseks kasutatakse TLS-i, mis kaitseb andmeid pealtkuulamise eest.
- SASL — turvaline autentimine (Simple Authentication and Security Layer) võimaldab erinevaid autentimismeetodeid, sealhulgas paroolipõhiseid ja tokenipõhiseid lahendusi.
- Lisaks on olemas lai valik XMPP-laiendusi ja soovitusi (XEP-id), mis käsitlevad sõnumite allkirjastamist, krüpteerimist lõpp-punktide vahel (nt OMEMO, OpenPGP) ja muude turvamehhanismide integreerimist.
Laiendatavus ja standardid
XMPP on algselt standardiseeritud IETF-is ja selle kõige olulisemad RFC-id on näiteks RFC 6120 ja RFC 6121, mis kirjeldavad põhimehhanisme (sõnumid, sessioonid, kontaktid ja kohalolek). Funktsionaalsust laiendatakse XMPP Extension Protocols (XEP) dokumentidega, mis hõlmavad näiteks failiedastust, gruppvestlusi, videokõnesid, laiendatud kohalolekuandmeid jpm.
Kasutusalad ja tarkvara
XMPP sobib hästi:
- traditsiooniliseks kiirsõnumiseks ja kohaloleku teenuseks;
- ettevõttesiseseks reaalajas suhtluseks (self-hosting võimalus ja kontroll andmete üle);
- masinate ja teenuste vaheliseks sõnumivahetuseks (MQTT asemel või kõrval, sõltuvalt vajadusest);
- turvaliseks mitmeseadmeliseks sünkroonimiseks (resource ja roster haldus).
Populaarsed XMPP-serverid on näiteks ejabberd, Prosody ja Openfire (nimed on üldtuntud — serverite valik sõltub skaleerimis- ja haldusvajadustest). Klientidest on levinud nii töölauarakendused kui ka mobiilirakendused: Pidgin (lauaarvuti), iChat (Apple’i varasem klient), samuti kaasaegsed mobiilirakendused nagu Conversations ja Gajim klient lauaarvutile.
Eelised ja piirangud
- Eelised: detsentraliseeritus ja federatsioon, avatud standard, lai laiendatavus XEP-idega, tugev ökosüsteem avatud lähtekoodiga tarkvaraga.
- Piirangud: XML-põhine sõnumistruktuur võib olla ressursimahukas võrreldes mõne kergema protokolliga; mobiilseadmetel võib XML-ülesõit mõjutada aku- ja võrgukasutust; XEP-ide killustumine tähendab, et kõik kliendid ei toeta kõiki laiendusi ühtemoodi.
Kokkuvõte
XMPP on vaba, avatud ja laialdaselt kasutatav protokoll reaalajas sõnumite ja kohaloleku teabe edastamiseks. Selle tugevus on hajutatus, laiendatavus ja suur kogukond, mis arendab uusi XEP-e ja serveri-/klientitarkvara. Valides XMPP, saab organisatsioon või arendaja kontrolli oma andmete üle ning kasutada hulgaliselt vabu lahendusi reaalajas suhtluse loomiseks.