Extensible Messaging and Presence Protocol (XMPP) (старо име Jabber[1]) (джабер) е протокол за моментни съобщения и съобщения за състояние, оформен като свободен стандарт, базиран на XML. По данни на Jabber Software Foundation[2] основан на XMPP софтуер е инсталиран на хиляди сървъри в Интернет и се използва от над десет милиона души по цял свят. Протоколът е проектиран с възможности за разширение, очаква се добавяне на възможности за Voice over IP и прехвърляне на файлове.
Джереми Милър (Jeremie Miller) започва Jabber проекта през 1998 г.; първата общодостъпна версия е анонсирана през месец май 2000 г. Основният продукт на работата по проекта е jabberd – сървър, към който се свързват XMPP клиентите, и който използват за осъществяване на разговорите. Този сървър може да изгражда както частни XMPP мрежи (например зад защитна стена), така и да е част от общата публична XMPP мрежа. Ключовите характеристики на XMPP са разпределения модел на системата за предаване на съобщения (т.е. без единствен централен сървър); и използването на XML-базирани потоци.
Основните спецификации на протокола Jabber, които днес се управляват от Jabber Software Foundation, бяха утвърдени от IETF като стандарт с име XMPP и стандартизирани през RFC 3920. Когато става дума за стандартен протокол за моментни съобщения и съобщения за състояние XMPP често се посочва като конкурентен стандарт на SIMPLE, който е основан на протокола SIP. Но дизайнът на XMPP все пак цели осигуряването на по-общи и независими от приложенията инструменти.
През 2007 г., Jabber Software Foundation (JSF) сега е XMPP Standards Foundation (XSF)[3].
Уникална характеристика на XMPP системите са транспортерите, известни също и като шлюзове (gateways), които позволяват на потребителите да осъществяват комуникация с IM мрежи, основани на други протоколи – AIM и ICQ (през протокола OSCAR), MSN Messenger и Windows Messenger (през услугата .NET Messenger Service), SMS, E-mail или IRC. За разлика от многопротоколните клиенти като Trillian или Pidgin, XMPP осигурява този достъп на сървърно ниво, през нарочни услуги-шлюзове на отдалечената сървърна машина.
Всеки XMPP потребител може да се „запише“ за някоя от тези услуги, предоставяйки нужните данни за влизане в чуждата мрежа (най-често име или номер и парола) и може да общува с потребители на тези мрежи все едно са XMPP потребители. Това означава, че всеки клиент, в който има пълна поддръжка на протокола XMPP, може да се използва за достъп до която и да е мрежа, за която има транспортер, без нужда от допълнителен програмен код в самия клиент.
(по азбучен ред)
(по азбучен ред)
(по азбучен ред)
На някои места в света са се заформили общности, чиято цел е подобряването и разпространението на XMPP до крайния потребител. Смята се, че тъй като XMPP е свободен протокол, той е по-правилният начин да се разговаря през мрежата. Всички други протоколи или са много остарели (IRC), или са собственически и не са стандарти на IETF (AIM, ICQ, MSN Messenger, Yahoo Messenger), и съответно не е гарантирано нито бъдещото им развитие, нито включването на нужни на потребителите характеристики. In a few places around the world, communities have evolved where the main focus is advocating XMPP and bringing XMPP closer to the end user. Usually services are offered, such as a XMPP server, a web portal to assist users with signing up to XMPP and forums.
Някои примери за местни XMPP общности:
Клиентът (пижо) се свързва в XMPP сървъра (jabber.minus273.org, на TCP порт 5222), изпраща съобщение (Относно: „проба-проба“ и Съдържание: „проба едно-две-три“) до друг клиент (пенда) и излиза.
пижо:
<?xml version="1.0"?> <stream:stream xmlns:stream=„http://etherx.jabber.org/streams“ xmlns="jabber:client" to="jabber.minus273.org">
jabber.minus273.org:
<stream:stream xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams' from='jabber.minus273.org' id='1461777714'>
пижо:
<iq type="set" id="auth_2" to="jabber.minus273.org" > <query xmlns="jabber:iq:auth"> <username>pizo</username> <password>mypassword</password> <resource>В офиса</resource> </query> </iq>
jabber.minus273.org:
<iq from="jabber.minus273.org" id='auth_2' type='result'/>
пижо:
<message to="penda@example.com" > <subject>проба-проба</subject> <body>проба едно-две-три</body> </message> <presence type="unavailable" > <status>Logged out</status> </presence> </stream:stream>
jabber.minus273.org:
</stream:stream>