Extensible Messaging and Presence Protocol

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

[редактиране | редактиране на кода]

(по азбучен ред)

(по азбучен ред)

Местни 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 общности:

  • Jabber Australia
  • Jabber Africa
  • JabberES (Испания)
  • JabberPL (Полша)

Примерен обмен между клиент и сървър

[редактиране | редактиране на кода]

Клиентът (пижо) се свързва в 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>