"Extensible Messaging and Presence Protocol" (XMPP) (anksčiau vadintas "Jabber") yra momentinių pranešimų protokolas. Jį įkvėpė XML ir jis naudoja XML žinutes (vadinamas „stanzas“) duomenims perduoti tarp klientų ir serverių.

Skirtingai nuo daugelio kitų protokolų, XMPP yra atviras standartas. Tai reiškia, kad kiekvienas, turintis domeno vardą ir interneto ryšį, gali pasitelkti arba paleisti savo XMPP serverį ir susijungti su kitais serveriais (federacija). Dauguma su XMPP susijusių programinės įrangos projektų ir klientų yra atvirojo kodo, todėl bendruomenė gali kurti papildinius ir plėtinius.

Kita programinė įranga, pavyzdžiui, "Google Talk" ir "Gizmo5", naudoja XMPP protokolą. Jis įdiegtas tūkstančiuose interneto serverių. Šiuo protokolu pagrįsta programine įranga naudojasi daugiau kaip penki šimtai milijonų vartotojų. Tarp klientų yra "Pidgin" ir "iChat".

Kaip veikia XMPP

XMPP ryšiai grindžiami keliais pagrindiniais elementais:

  • JID (Jabber ID) – adresas formatu vartotojas@domenas (kartais su resursu: vartotojas@domenas/įrenginys), naudojamas identifikacijai ir adresavimui;
  • Stanzas – XML žinutės tipai: message (žinutėms), presence (buvimo būsena) ir iq (informacijos užklausoms/atsakymams);
  • Serverių federacija – skirtingi XMPP serveriai gali siųsti žinutes tarp savo vartotojų, panašiai kaip el. pašto serveriai;
  • SRV įrašai – DNS SRV įrašai leidžia rasti domenui priskirtą XMPP serverį ir jo prievadą.

Išplėtimas ir standartai

XMPP yra sukurtas būti išplėčiamu. Pagrindinis standartas apibrėžia bazinę bazę, o konkrečios funkcijos įgyvendinamos per išplėtimus, vadinamus XEP (XMPP Extension Protocols). Yra XEP'ai grupiniam pokalbiui (MUC), failų perdavimui, buvimo būsenų valdymui, sąrašų sinchronizavimui, multi-login palaikymui ir daugeliui kitų funkcijų. XMPP standartus ir išplėtimus koordinuoja XMPP Standards Foundation priežiūros grupės ir atviros organizacijos.

Saugumas ir privatumas

  • Transporto saugumas: dauguma realių diegimų naudoja TLS, kad užšifruotų ryšį tarp kliento ir serverio bei tarp serverių;
  • Autentifikacija: SASL mechanizmai teikia saugią prisijungimo autentifikaciją;
  • End-to-end šifravimas: XMPP palaiko papildomus sprendimus kaip OMEMO ir OpenPGP, kad būtų užtikrintas visapusiškas žinučių šifravimas tarp pusių;
  • Privatumo mechanikos: vartotojai gali valdyti kontaktų sąrašus, juodąjį sąrašą, bei matomumą (presence) prieš kitus.

Serveriai, klientai ir nasloniniai naudojimo atvejai

Yra daug serverių implementacijų (pvz., ejabberd, Prosody, Openfire) ir klientų asmeninėje bei verslo aplinkoje. XMPP naudojamas:

  • momentiniams pokalbiams ir buvimo būsenoms;
  • grupiniams pokalbiams (MUC);
  • realiam laikui veikiančioms žinioms (pvz., pranešimų paslaugoms, pranešimams apie įvykius);
  • multimedijos aplikacijoms per Jingle (balso ir vaizdo ryšiams);
  • tiltams prie kitų tinklų – per vartus/pamainas galima bendrauti su kitomis nuomonių ar IM tinklais;
  • IoT ir mašinų tarpusavio ryšiui, kur reikia lengvo, atviro ir išplėčiamo pranešimų protokolo.

Privalumai ir trūkumai

XMPP privalumai:

  • atviras standartas ir federacija – nėra centralizuoto kontrolės taško;
  • lanksti išplėtimų sistema (XEP) leidžia pridėti naujų funkcijų be pagrindinio protokolo keitimo;
  • geri saugumo mechanizmai ir galimybė naudoti end-to-end šifravimą;
  • plati įrankių ir klientų ekosistema.

Trūkumai / iššūkiai:

  • kai kuriais atvejais didelės masto federacija ir serverių sąveika reikalauja sudėtingesnės administracijos;
  • priklausomai nuo diegimo, kai kurie XEP'ai gali nebūti palaikomi visų klientų ir serverių;
  • mobiliojo ryšio ir pranešimų siuntimo optimizacija reikalauja papildomų sprendimų (pvz., push pranešimų integracija).

Trumpa istorija ir ateitis

XMPP pradėtas kaip atvirojo kodo projektas „Jabber“ 1998–1999 m. vėliau tapo tarptautiniu atviru standartu, kurį prižiūri standartus koordinuojančios organizacijos. Per metus jis išlaikė populiarumą dėl atvirumo ir universalumo, o nauji išplėtimai (pvz., mobilumo optimizavimas, modernūs E2E šifravimo standartai) užtikrina, kad XMPP liks aktualus tiek realaus laiko komunikacijai, tiek mašininiams ryšiams ateityje.