Extensible Messaging and Presence Protocol (XMPP) (iepriekš saukts Jabber) ir tūlītējās ziņapmaiņas protokols. Tā pamatā ir XML. XMPP definē ziņojumu, klātbūtnes (presence) un pārziņas (IQ) ziņojumu formātus — tos sauc par "stanzas" — kas ļauj apmainīties ar informāciju starp klientiem un serveriem.

Tas atšķiras no vairuma protokolu, jo ir atvērts standarts. Tas nozīmē, ka ikviens, kam ir domēna vārds un interneta pieslēgums, var izmantot savu serveri. Lielākā daļa programmatūras un klientu ir atvērtā koda. XMPP ir federēts — tas nozīmē, ka dažādu organizāciju serveri var savstarpēji sazināties tāpat kā e‑pasts.

Cita programmatūra, piemēram, Google Talk un Gizmo5, izmanto XMPP protokolu. Tas ir instalēts tūkstošiem serveru visā internetā. Uz šo protokolu balstītu programmatūru izmanto vairāk nekā pieci simti miljoni lietotāju. Klienti ir Pidgin un iChat.

Kā XMPP darbojas

Katram XMPP lietotājam ir unikāls identifikators — JID (Jabber ID), parasti formātā lietotājs@serveris. Klients izveido savienojumu ar serveri (client‑to‑server), nosūta un saņem stanzas ar ziņojumiem, klātbūtnes informāciju un IQ pieprasījumiem. Serveri savukārt var sazināties savā starpā (server‑to‑server), ļaujot saziņai starp dažādiem domēniem.

Galvenās iezīmes

  • Klātbūtnes pārraudzība — redzi, kurš ir tiešsaistē, aizņemts vai prom.
  • Teksta ziņojumi — momentāna vienas‑pret‑vienu vai grupu saziņa.
  • Grupu tērzēšana (MUC) — vairāklietotāju čati ar atsevišķām telpām.
  • Paplašināmība — funkcionalitāti var pievienot, izmantojot XMPP paplašinājumus (XEPs).
  • Federācija — decentralizēta arhitektūra bez viena pakalpojumu sniedzēja.
  • Atbalsts failu pārsūtīšanai, audio/video (Jingle) un vCard/profiliem.

Drošība un paplašinājumi

XMPP atbalsta mūsdienīgas drošības prasības: TLS šifrēšanai transporta slānī un SASL autentifikācijai. Lai pievienotu papildus funkcijas vai labāku saderību, kopiena izstrādā un uztur XMPP paplašinājumus — XEP (XMPP Extension Protocol). Tie aptver tēmas no failu pārsūtīšanas, balss/video zvaniem (Jingle), līdz klātbūtnes statusiem un end‑to‑end šifrēšanai.

Bieži izmantotie paplašinājumi un tehnoloģijas: BOSH (HTTP binding) un WebSocket, kas ļauj XMPP darbību pārlūkprogrammās un caur HTTP starpniekiem. Serveru un klientu savstarpējai saderībai ir svarīgi atbalstīt noteiktus XEP standartus.

Serveri un klienti

Ir pieejams daudz XMPP serveru programmatūras: piemēram, ejabberd, Prosody un Openfire. Tie atšķiras pēc viegluma, mērogojamības un paplašināšanas iespējām. Populārie klienti ietver Pidgin, iChat, Gajim, Psi, Conversations (Android), Monal (iOS) u.c.

Praktiskie aspekti

  • Tīkla porti: parasti klienta savienojumiem izmanto 5222 (c2s) un serveru savstarpējai komunikācijai 5269 (s2s). Portu 5223 (sensible SSL) lietošana ir novecojusi.
  • Offline ziņas: serveris var saglabāt ziņas, ja saņēmējs nav pieejams, un piegādā tās, kad lietotājs pieslēdzas.
  • Drošība: ieteicams konfigurēt TLS un spēcīgu autentifikāciju, kā arī regulāri atjaunināt servera programmatūru.

Priekšrocības un trūkumi

Plusi: decentralizācija un federācija, liela paplašināmība, plašs atvērtā koda ekosistēmas atbalsts, spēja darboties gan uz mobilajām ierīcēm, gan serveros, atvērts protokols bez rūpnieciskiem bloķējumiem.

Mīnusi: dažādie XEP līmeņi var radīt savstarpējas nesaderības starp implementācijām, dažiem pakalpojumu sniedzējiem ir bijušas īpašas vai nesankcionētas paplašinājumu versijas (kas var traucēt federācijai), prasības pēc pareizas konfigurācijas un drošības iestatīšanas.

Kā sākt ar XMPP

  • Izvēlies klientu (piem., Pidgin, Conversations, Gajim) un serveri (publisku vai savu).
  • Reģistrē kontu uz servera vai uzsāc savu serveri, izmantojot savu domēna vārdu.
  • Aktivizē TLS/SASL, konfigurē pietiekamu paroles politiku un, ja nepieciešams, pievieno paplašinājumus (XEP), lai atbalstītu failu pārsūtīšanu, balss/video u.c.
  • Pārbaudi sasaisti ar citiem serveriem, lai nodrošinātu federāciju un saderību.

XMPP ir spēcīgs rīks gan personiskai, gan uzņēmuma līmeņa real‑time komunikācijai. Tā atvērtais raksturs ļauj to pielāgot dažādiem mērķiem — no vienkāršas tērzēšanas līdz sarežģītiem sadarbības risinājumiem un IoT scenārijiem.