Extensible Messaging and Presence Protocol

Extensible Messaging and Presence Protocol(XMPP) (dříve známý jako Jabber[1]), neboli „rozšiřitelný protokol pro posílání zpráv a zjištění stavu“, původně vznikl jako protokol pro instant messagingovou síť Jabber. Brzy se ale ukázalo, že kromě IM může být s výhodou použit i pro vzájemnou komunikaci programů nebo pro ovládání různých automatických služeb (botů). Později byl adoptován jakožto standard Internetu do RFCdokumentů - základní normy jsou RFC 3920(obecná specifikace protokolu) a RFC 3921(samotný instant messaging a zobrazení stavu). RFC obsahující některá další rozšíření XMPP protokolu jsou například RFC 3922 a RFC 3923. O vývoj protokolu se stará XMPP Standards Foundation. Rozšíření nad rámec RFC jsou vydávána v podobě tzv. XEP (XMPP Extension Protocol), kterých je momentálně kolem dvou set (v různém stavu, od prvních návrhů až po standardy). XMPP je implementací obecného značkovacího jazyka XML. Specifikace jsou zcela otevřené a dostupné všem, kdo mají zájem o implementaci software s podporou XMPP. Servery XMPP protokolu běží standardně na TCP portu 5222. Pro vzájemnou komunikaci serverů je pak vyhrazen port 5269.

http://upload.wikimedia.org/wikipedia/commons/thumb/9/9d/Jabber_xml.png/220px-Jabber_xml.png

XMPP zapouzdřuje zprávy do XML

Síť využívající XMPP protokol není centralizovaná do jednoho místa, jako je zvykem u většiny ostatních IM, ale je distribuovaná na servery po celém světě, na kterých je možno si založit uživatelské konto. Identifikátory uživatelů (takzvané Jabber ID, zkráceně JID) jsou v základním tvaru syntakticky i sémanticky podobné e-mailovým adresám, tedy uzivatel@server. Uživatel si může dále své konto rozdělit podle potřeby, například se může jeho klient z domova hlásit jako uzivatel@server/doma, a zároveň třeba i uzivatel@server/prace. Na jedno uživatelské konto může tedy být přihlášeno i více klientů najednou a mezi nimi se rozhoduje buď podle celé adresy, pokud jí druhá strana zadá, nebo podle nastavené priority.

Uživatel se připojuje vždy pouze ke svému serveru, protože jenom tento server je schopen ověřit jeho identitu například pomocí uživatelského jména a hesla. Pokud vznikne potřeba komunikovat s uživateli na jiných serverech, připojí se uživatelův server na vzdálený server a předá si s ním potřebné informace. Toto je nutné vykonávat například i v případě, že je třeba zjistit „prezenci“, tedy zdali je uživatel na vzdáleném serveru přihlášen a v jakém je stavu. Kromě serverů a klientů se v síti vyskytují ještě různé služby - například služba víceuživatelských diskuzí (funkčně velmi podobnéIRC), uživatelské adresáře a transporty. Transporty jsou vlastně brány mezi XMPP sítí a IM sítí pracující na jiném protokolu.

Jak XMPP pracuje?

Síť XMPP je založena na architektuře klient-server (klienti zpravidla nekomunikují přímo) a je decentralizována stejně jako e-mail. To znamená, že neexistuje žádný centrální server, který by spojoval uživatele, jako je tomu například u ICQ. Každý může zřídit svůj vlastní server, přičemž bude moci komunikovat s uživateli na jiných serverech. Uživatel tak má svobodu volby serveru, ke kterému má důvěru a který mu nabízí lepší služby, a možnost změny stejně jako v případě e-mailu. Samozřejmě existuje spousta serverů, na kterých se lze zdarma zaregistrovat bez potřeby tvorby vlastního serveru.

Uživatel je identifikován uživatelským jménem a názvem serveru. Tyto dvě hodnoty jsou odděleny znakem @. Tedy například pepa@jehoserver.cz. Tentořetězec se nazývá Jabber ID nebo také JID.

Co se děje při komunikaci mezi dvěma uživateli, ukazuje názorný příklad. Uživatelka Julie má účet na serveru Kapuletova.cz, takže její JID má tvar julie@kapuletova.cz. Chce si povídat s Romeem, jehož JID je romeo@montek.com. Když Julie napíše zprávu a pošle ji Romeovi, provede se několik akcí:

1.    XMPP klient Julie pošle její zprávu serveru Kapuletova.cz.

·         Pokud je Montek.com blokován, zpráva je smazána (zpět je zaslána chybová hláška).

2.    Server Kapuletova.cz otevře spojení k serveru Montek.com s předá mu zprávu.

3.    Server Montek.com doručí zprávu klientovi Romea.

·         Pokud je server Kapuletova.cz na Montek.com blokován, zpráva bude smazána (zpět je zaslána chybová hláška).

·         Pokud není Romeo právě připojen, zpráva se uschová (na montek.com) a bude doručena při nejbližší příležitosti.

Jabber ID

Jabber ID neboli také JID jsou uživatelská jména, pomocí kterých se přistupuje k XMPP účtu. Obvykle se skládají ze tvaru uzivatel@domena/zdroj. Jsou podobná e-mailovým adresám. Část zdroj dovoluje uživateli individuální připojení na jeden účet z více míst. Například uzivatel@domena/doma a uzivatel@domena/prace. Zdroj není nutný uvádět pro kontaktování uživatele, ale může být vyžadován například při přenosu souborů. JID může, až na několik výjimek, obsahovat libovolné znaky unicode, tzn. i česká písmena s diakritikou.

Historie XMPP

·         rok 1998 – Jeremie Miller založil projekt Jabber.

·         srpen 1999 – Jeremie podepsal prohlášení zaručující podporu Jabber komunity IETF standardizaci.

·         květen 2000 – Uvolněn první software.

·         červen 2000 – Jeremie a další členové projektu Jabber se upsali koncepciIMPP dokumentující Jabber protokol. Kvůli nesoustředěnosti tehdejší komunity se však nepodařilo plně následovat IMPP či jiné IETF snahy.

·         rok 2001 – Vytvořena Jabber Software Foundation (JSF) pro zajištění organizace nad rostoucím počtem open source projektů a komerčních entit budujících či používajících technologie XMPP. Jedním z hlavních cílů JSF byla dokumentace XML protokolu a jeho další rozvíjení.

·         únor 2002 – Nově podepsána koncepce IETF. Výsledkem úspěchu tohoto podpisu bylo rozhodnutí prozkoumat možnosti zformování IETF Working Group pro diskuse o Jabber protokolu pod názvem XMPP, výsledkem čehož byly podepsány tři nové koncepce 21. 6. 2002

·         29. leden 2004 – IESG uznala XMPP Core a XMPP IM jako navrhované standardy

·         4. říjen 2004 – IETF uznala XMPP jako standard pro IM.

Jabber v ČR

·         1. duben 2001 – založen server jabber.cz.

·         21. červenec 2001 – založen server njs.netlab.cz, provozovaný společností HumboldTec.

·         16. září 2005 – njs.netlab.cz, který se stal největším serverem v ČR, pohltil server jabber.cz.

·         1. září 2006 – za spolufinancování provozu obou serverů, sjednocených pod projekt jabbim.cz, jsou uživatelům nabídnuty rozšířené služby.

·         23. dubna 2007 – Jabbim oznámil dosažení 70000 registrací, 14000 aktivních uživatelů a přes 5000 přihlášených ve špičce.

Google Talk

Hlavní článek: Google Talk

Společnost Google uvedla koncem roku 2005 nový projekt Google Talk. Tato služba pro Instant Messaging využívá protokolu XMPP. Dále přidala možnost hlasové komunikace, na jejíž specifikaci spolupracuje s XMPP Standards Foundation. Později přibyla i možnost video hovorů.

Klienti XMPP

·        Bombus (pro mobilní telefony s Java ME)

·        Bombus-ng (pro zařízení s Windows Mobilehttp://bombus-im.org/wiki/bombus/pocketpc)

·        Coccinella (http://coccinella.im/)

·        Empathy (klient s podporou hlasu a videa, kompatibilní s Google Talkem;http://live.gnome.org/Empathy]

·        Gajim (http://www.gajim.org/)

·        Jabbim

·        JWChat (webový klient; některé servery provozují vlastní verzi pro své uživatele; http://jwchat.org)

·        mcabber (http://lilotux.net/~mikael/mcabber/)

·        Psi (http://psi-im.org/)

·        Spark

·        Tkabber (http://tkabber.jabber.ru/)

·        Xeus Messenger/glu (http://xeus-messenger.blogspot.com/)

Tento seznam není ani zdaleka kompletní. Další klienty naleznete např. naJabber.cz Wiki.

Multi-protokoloví klienti s podporou XMPP

·        Adium (http://www.adium.im/)

·        BitlBee (http://www.bitlbee.org/)

·        CenterIM (pokračovatel CenterICQhttp://www.centerim.org/)

·        Digsby

·        Empathy

·        iChat (http://www.apple.com/macosx/features/ichat/)

·        Kopete

·        Meebo (webový klient; http://www.meebo.com)

·        Miranda

·        Pidgin (dříve Gaim)

·        qutIM

·        QIP Infium

·        SIM-IM

·        Trillian