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]). Serwisy społecznościowe Facebook i Nk.pl, poprzez implementację języka XMPP na swoich serwerach, pozwalały w przeszłości na korzystanie z 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 był 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
- P. Saint-Andre , Extensible Messaging and Presence Protocol (XMPP): Core, RFC 3920, IETF, październik 2004, DOI: 10.17487/RFC3920, ISSN 2070-1721, OCLC 943595667 (ang.).
- P. Saint-Andre , Extensible Messaging and Presence Protocol (XMPP): Instant Messaging and Presence, RFC 3921, IETF, październik 2004, DOI: 10.17487/RFC3921, ISSN 2070-1721, OCLC 943595667 (ang.).
- P. Saint-Andre , Mapping the Extensible Messaging and Presence Protocol (XMPP) to Common Presence and Instant Messaging (CPIM), RFC 3922, IETF, październik 2004, DOI: 10.17487/RFC3922, ISSN 2070-1721, OCLC 943595667 (ang.).
- P. Saint-Andre , End-to-End Signing and Object Encryption for the Extensible Messaging and Presence Protocol (XMPP), RFC 3923, IETF, październik 2004, DOI: 10.17487/RFC3923, ISSN 2070-1721, OCLC 943595667 (ang.).
- P. Saint-Andre , Internationalized Resource Identifiers (IRIs) and Uniform Resource Identifiers (URIs) for the Extensible Messaging and Presence Protocol (XMPP), RFC 4622, IETF, lipiec 2006, DOI: 10.17487/RFC4622, ISSN 2070-1721, OCLC 943595667 (ang.).
- P. Saint-Andre , A Uniform Resource Name (URN) Namespace for Extensions to the Extensible Messaging and Presence Protocol (XMPP), RFC 4854, IETF, kwiecień 2007, DOI: 10.17487/RFC4854, ISSN 2070-1721, OCLC 943595667 (ang.).
- A. Mayrhofer , IANA Registration for Enumservice 'XMPP', RFC 4979, IETF, sierpień 2007, DOI: 10.17487/RFC4979, ISSN 2070-1721, OCLC 943595667 (ang.).
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=<nowiki>"http://etherx.jabber.org/streams"</nowiki>
xmlns="jabber:client" to="amessage.de">
amessage.de:
<stream:stream xmlns='jabber:client'
xmlns:stream=<nowiki>'http://etherx.jabber.org/streams'</nowiki> 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ż
Przypisy
- ↑ Jabber Inc. – About Us. jabber.com. [zarchiwizowane z tego adresu (2008-06-12)]..
- ↑ 'Czy konto nazwaaqq.eu można używać jako adresu poczty e-mail'. aqq-pomoc.info. [zarchiwizowane z tego adresu (2010-12-16)]. 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. [zarchiwizowane z tego adresu (2012-05-11)]. vBeta.pl [dostęp 2012-06-18]
- ↑ XMPP RFCs. [dostęp 2010-07-29].