Extensible Messaging and Presence Protocol
Extensible Messaging and Presence Protocol (XMPP, dawniej Jabber[1]) – protokół bazujący na języku XML umożliwiający przesyłanie w czasie rzeczywistym wiadomości oraz statusu. Protokół ma zastosowanie nie tylko w komunikatorach, ale również w innych systemach natychmiastowej wymiany informacji.
Mimo iż nazwa konta na serwerach XMPP jest skonstruowana podobnie jak adres e-mail, nie dotyczy ona tej samej usługi, więc nie może być wykorzystywana przez oprogramowanie pocztowe. Istnieją jednak firmy, które w ramach jednego konta oferują zarówno adres e-mail jak i Jabber ID (np. Google wraz z Gmailem czy Microsoft i jego usługa Hotmail[2][3][4]). Podobnym przykładem są serwisy społecznościowe Facebook oraz Nk.pl, które poprzez implementację języka XMPP na swoich serwerach, pozwoliły na korzystanie wbudowanego w swoim serwisie czatu, z poziomu dowolnego komunikatora opartego na tym protokole[5][6][7]. Protokół XMPP zasadniczo używany jest do błyskawicznej komunikacji między użytkownikami, ale nie ma przeszkód by używać go jak poczty elektronicznej tj. uruchamiać pobieranie wiadomości co pewien czas.
IETF opublikowało RFC[8] dotyczące XMPP.
Zastosowania
Głównym jego zastosowaniem jest wymiana wiadomości w komunikatorach internetowych. Serwery XMPP umożliwiają także za pomocą tzw. transportów komunikację z użytkownikami innych protokołów, jak Gadu-Gadu, Tlen.pl czy ICQ.
Protokół nie musi być wykorzystywany jedynie do komunikacji między użytkownikami, przykładem czego jest system blogowania przez XMPP – Jogger.
Cechy XMPP

XMPP posiada kilka cech wyróżniających go spośród konkurencyjnych sieci.
- otwartość
- Protokół XMPP jest publicznie dostępny i podlega swobodnej modyfikacji. Klienty, serwery oraz biblioteki są często udostępniane jako Wolne i Otwarte Oprogramowanie.
- decentralizacja
- Dostępnych jest wiele serwerów XMPP. Dodatkowo można uruchomić serwer na własny użytek. Wszystkie dostępne serwery tworzą jedną wspólną sieć.
- bezpieczeństwo
- Każdy serwer XMPP może być oddzielony od głównej publicznej sieci. Wiele serwerów używa SSL do komunikacji z użytkownikami. Część klientów obsługuje PGP lub GPG do szyfrowania transmisji oraz zabezpieczenia oparte na SASL.
- transporty
- Serwery mogą udostępniać użytkownikom dodatkowe usługi, jak komunikacja z innymi protokołami oraz obsługa poczty elektronicznej. W przeciwieństwie do wtyczek do komunikatorów można z nich korzystać za pomocą dowolnego klienta.
XMPP a Jabber
Jabber został zapoczątkowany w 1998 roku przez Jeremiego Millera. Od tamtego czasu powstało wiele serwerów oraz klientów XMPP, które korzystają z tego protokołu. Sam protokół z kolei nie został nigdy w pełni opisany, a jego dokumentacja jest opisem stanu istniejącego i nie może być brana pod uwagę jako standard, który powinien zostać zaimplementowany.
XMPP (o dawnej nazwie Jabber) został ustandaryzowany przez IETF. Pomimo jego wstecznej kompatybilności, bardzo stare serwery nie są w pełni zgodne z XMPP.
Implementacje XMPP można zobaczyć w takich serwerach jak jabberd2 oraz klientach, jak np. Tkabber.
Protokół pochodny od XMPP był wykorzystywany w polskim komunikatorze Tlen.pl (teraz jednak dąży on do coraz większej kompatybilności z XMPP).
XMPP określa sposób podłączenia się klienta do serwera, połączenia serwerów między sobą, raportowania błędów, wymiany podstawowych informacji między serwerami i klientami oraz sposób zarządzania listą kontaktów i regułami prywatności. Pozostała funkcjonalność, opisana XEP-ami, nie jest już częścią XMPP – XMPP nie określa i nie będzie określał sposobu przesyłu plików czy dostępu do listy transportów na serwerze. To wszystko to tylko rozszerzenia będące częścią Jabber, a nie XMPP.
Ewolucja
- Do uwierzytelnienia użytkowników XMPP wykorzystuje protokół SASL. Również uwierzytelnienie między serwerami może być realizowane przy pomocy tego protokołu.
- Dodano reguły prywatności. Pozwalają one określić użytkownikowi od kogo chce dostawać wiadomości, komu pokazywać swój status.
- XMPP zawiera dokładniejsze informacje o powstałych błędach, dzięki czemu klient użytkownika może wygenerować zrozumiały komunikat lub podjąć automatycznie działanie, które obsłuży dany wyjątek.
- Wbudowano rozszerzenie StartTLS, które pozwala na szyfrowanie połączenia na standardowym porcie.
Dokumenty RFC
- RFC 3920 Extensible Messaging and Presence Protocol (XMPP): Core
- RFC 3921 Extensible Messaging and Presence Protocol (XMPP): Instant Messaging and Presence
- RFC 3922 Mapping the Extensible Messaging and Presence Protocol (XMPP) to Common Presence and Instant Messaging (CPIM)
- RFC 3923 End-to-End Signing and Object Encryption for the Extensible Messaging and Presence Protocol (XMPP)
- RFC 4622 Internationalized Resource Identifiers (IRIs) and Uniform Resource Identifiers (URIs) for the Extensible Messaging and Presence Protocol (XMPP)
- RFC 4854 A Uniform Resource Name (URN) Namespace for Extensions to the Extensible Messaging and Presence Protocol (XMPP)
- RFC 4979 IANA Registration for Enumservice 'XMPP'
Przykładowa sesja Jabber
Klient (kuusipuu) łączy się z serwerem Jabberowym (amessage.de port tcp numer 5222), wysyła wiadomość (temat: "test 1449" i treść: "test 1449") do innego klienta (tero) i wylogowuje się.
kuusipuu (otwarcie połączenia): <?xml version="1.0"?> <stream:stream xmlns:stream="http://etherx.jabber.org/streams" xmlns="jabber:client" to="amessage.de"> amessage.de: <stream:stream xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams' from='amessage.de' id='1461777714'> kuusipuu (autoryzacja użytkownika): <iq type="set" id="auth_2" to="amessage.de" > <query xmlns="jabber:iq:auth"> <username>kuusipuu</username> <password>mypassword</password> <resource>Work</resource> </query> </iq> amessage.de: <iq from="amessage.de" id='auth_2' type='result'/> kuusipuu (wysyłanie wiadomości i zamknięcie połączenia): <message to="tero@example.com" > <subject>test 1449</subject> <body>test 1449</body> </message> <presence type="unavailable" > <status>Logged out</status> </presence> </stream:stream> amessage.de: </stream:stream>
Zobacz też
- ↑ Jabber Inc. – About Us.
- ↑ 'Czy konto nazwa@aqq.eu można używać jako adresu poczty e-mail' AQQ-Pomoc.info [dostęp 2012-18-06]
- ↑ 'Jabber IM and Email' Google Answers [dostęp 2012-18-06]
- ↑ 'Czy w przyszłości Gmail zamieni słówko z Hotmailem?' Dobreprogramy.pl [dostęp 2012-18-06]
- ↑ 'Chaty na Facebooku z obsługą Jabbera ' Dobreprogramy.pl [dostęp 2012-18-06]
- ↑ 'Facebook wspiera xmpp' Blog Bobiko [dostęp 2012-18-06]
- ↑ 'Komunikator NKtalk współpracuje z Jabberem. Dlaczego Nasza Klasa się tym nie chwali?' vBeta.pl [dostęp 2012-06-18]
- ↑ XMPP RFCs.