XMPP
Изображение логотипа
Порт/ID 5222 и 5269
Логотип Викисклада Медиафайлы на Викискладе

XMPP (англ. eXtensible Messaging and Presence Protocol «расширяемый протокол обмена сообщениями и информацией о присутствии»), ранее известный как джа́ббер (англ. Jabber[1] [ˈʤæbə(r)] «болтовня, трёп, тарабарщина») — открытый, основанный на XML, свободный для использования протокол для мгновенного обмена сообщениями и информацией о присутствии (см. список контактов) в режиме, близком к режиму реального времени. Изначально спроектированный легко расширяемым, протокол, помимо передачи текстовых сообщений, поддерживает передачу голоса, видео и файлов по сети.

Расширяемость протокола предназначена для добавления в единую коммуникационную сеть мессенджеров, социальных сетей, сайтов, использующих разные, несовместимые стандарты. Предполагалось, что крупные компании будут открывать межсерверное общение с другими IM и описывать свои методы шифрования, передачи мультимедиа и других данных через публикацию расширений XMPP. Расширения будут приниматься или отклоняться глобальным сообществом путём наибольшего распространения, но при этом всегда будет доступна базовая функциональность для передачи сообщений для пользователей разных мессенджеров. В реальности данная идея не получила должного распространения, и большинство крупных компаний не стало открывать возможность коммуникации для своих пользователей с другими сервисами.

В отличие от коммерческих систем мгновенного обмена сообщениями, таких как AIM, ICQ, WLM и Yahoo, XMPP является федеративной, расширяемой и открытой системой. Любой желающий может запустить свой сервер мгновенного обмена сообщениями, регистрировать на нём пользователей и взаимодействовать с другими серверами XMPP. На основе протокола XMPP уже открыто множество частных и корпоративных серверов XMPP. Среди них есть или были крупные проекты, такие как Google Talk, Одноклассники.ru, LiveJournal, Juick, Facebook[2], ВКонтакте, Яндекс[3][4].

История

[править | править код]

Проект Jabber был основан Джереми Миллером в начале 1999 года с разработки сервера jabberd[5]. Первое сообщение о проекте появилось 4 января 1999 года на сайте Slashdot[6]. Эту дату принято считать днём рождения технологии[7]. Вскоре после этого к проекту присоединилось несколько основных разработчиков, которые стали работать над сервером jabberd, клиентами для Windows и GNU/Linux, а также шлюзами в основные системы IM (AIM, ICQ, MSN и Yahoo). Позже, в 1999 году, Webb Interactive Services начало спонсировать основных разработчиков, что ускорило процесс создания проекта. В то время появилась основа протокола Jabber, а также сервер jabberd и ранние клиенты, такие, как WinJab (устарел и получил своё развитие в Exodus) и Gabber. Этот ранний период постоянных изменений закончился в мае 2000 года с выпуском jabberd 1.0.

Ранний протокол Jabber сформировал основы для стандарта XMPP, опубликованного как RFC 3920. Часто этот момент рассматривается как начало соперничества с SIMPLE, основанным на протоколе SIP, как стандартного протокола для мгновенного обмена сообщениями и информацией о присутствии.

С августа 2001 года протокол Jabber переходит под контроль Jabber Software Foundation (16 января 2007 года Jabber Software Foundation была переименована в XMPP Standards Foundation[8]), для более точного описания своей работы развития расширений собственно протокола, в отличие от линии развития программы с одноимённым названием.

Jabber, Inc. занимается развитием двух проектов — Jabber Extensible Communications Platform (Jabber XCP) и JabberNow. Первый является фреймворком, а второй — программно-аппаратное решение (специально собранный и настроенный компьютер). Сайт jabber.org всё ещё функционирует. Инвесторами проекта Jabber являются Jona, Inc., France Telecom, Intel Capital, и Webb Interactive Services, Inc.[1]

В августе 2005 года Google представил сервис Google Talk — комбинацию VoIP и клиента для обмена сообщениями, использующий XMPP для функций переписки, а также как основу для передачи голоса и файлов. Первоначальный запуск сервиса Google не поддерживал межсерверного общения, но к 17 января 2006 года такая возможность была добавлена[9]. Однако, в мае 2013 Google объявил о сокращении поддержки межсерверных коммуникаций в связи с продвижением своего сервиса Google Hangouts[10]. Тем не менее, несмотря на официальные заявления, Google Talk всё ещё поддерживает XMPP[11][12].

Протокол

[править | править код]
Схема устройства работы XMPP

Семейство протоколов XMPP принято как стандарт RFC[13]. Стандартный порт для XMPP — 5222[14]. Также возможно использовать порт 80 и/или 443[15], если возникают проблемы с файрволом. Протокол описывает клиент-серверные (c2s) и интерсерверные коммуникации (s2s). Мессенджер с поддержкой XMPP не обязательно должен соблюдать c2s-стандарт, чтобы поддерживать федеративную связь по s2s с другими XMPP-мессенджерами.[что?] Ряд XMPP-мессенджеров с регистрацией по номеру телефона не позволяет использовать другие XMPP-клиенты или подключаться к другим серверам, но их серверы поддерживают федеративное общение (взаимодействуют с другими серверами XMPP).

Преимущества

[править | править код]

Слабые стороны

[править | править код]

Расширения XMPP

[править | править код]
Проверка доступности серверных расширений в клиенте Conversations. Сравнение серверов https://xmpp.jp https://jabber.ru https://404.city

Протокол XMPP включает лишь базовую основу для передачи сообщений. Для реализации дополнительных возможностей используются расширения XEP (XMPP Extension Protocols). Модульная система позволяет собирать системы на основе XMPP, как для передачи сообщений, так и для передачи данных IoT-устройств и других задач. Для полноценной работы Jabber-клиентов требуется поддержка соответствующих расширений. Одними из наиболее важных для работы XMPP-клиентов являются расширения:

Боты

[править | править код]

Большой популярностью в Jabber’е пользуются боты для конференций. Они широко используются для защиты конференций от спама, в качестве цензора, ведения различной статистики, парсинга веб-сайтов (анекдоты, новости и т. п.), создания «мостов» между чатами, ведения логов, управления конференциями и так далее. Функциональность xmpp-ботов и область их применения ограничены только фантазией их разработчиков.

Известные боты

[править | править код]
Список примеров в этой статье не основывается на авторитетных источниках, посвящённых непосредственно предмету статьи. Добавьте ссылки на источники, предметом рассмотрения которых является тема настоящей статьи (или раздела) в целом, а не отдельные элементы списка. В противном случае список примеров может быть удалён.

Адресация

[править | править код]

Каждый пользователь в сети Jabber имеет уникальный идентификатор — Jabber ID (сокращённо JID). Адрес JID, подобно адресу электронной почты, содержит имя пользователя и доменное имя сервера, на котором зарегистрирован пользователь, разделённые знаком @. Например, пользователь user, зарегистрированный на сервере example.com, будет иметь адрес: user@example.com.

Пользователь может иметь одновременно несколько подключений, для различения которых используется дополнительный атрибут JID, называемый ресурсом и добавляемый через слэш в конец адреса. К примеру, пусть полный адрес пользователя будет user@example.com/work, тогда сообщения, посланные на адрес user@example.com, дойдут на указанный адрес вне зависимости от имени ресурса, но сообщения для user@example.com/work дойдут на указанный адрес только при соответствующем подключённом ресурсе.

Адреса JID могут также использоваться без явного указания имени пользователя (с указанием имени ресурса или без такового) для системных сообщений и для управления специальными возможностями на сервере.

Соединение с другими протоколами

[править | править код]
Алиса посылает сообщение через сеть Jabber к ICQ-транспорту. Дальше сообщение передаётся Бобу через сеть ICQ.

Полезной особенностью XMPP систем являются транспорты, или шлюзы, позволяющие пользователям получать доступ к сетям, использующим другие протоколы. Это могут быть другие протоколы мгновенного обмена сообщениями, IRC или такие протоколы, как SMS и электронная почта.

В отличие от мультипротокольных клиентов, XMPP предоставляет доступ на уровне сервера, посредством коммуникации через специальные сервисы-шлюзы, выполняющиеся на удалённом компьютере.

Любой пользователь может «зарегистрироваться» на одном из этих шлюзов, предоставив информацию, необходимую для входа в сеть, и может общаться с пользователями сети так, как если бы они были пользователями сети джаббер. Это значит, что любой клиент, полностью поддерживающий XMPP, может быть использован для доступа к любой сети, для которой существуют шлюзы, без какого-либо дополнительного кода в клиенте и без необходимости клиенту иметь прямой доступ в Интернет.

Реализация шлюзов зависит от конкретного XMPP-сервера и подвержена нестабильности из-за закрытости коммерческих IM-сервисов.

Примеры глобальных интеграций XMPP

[править | править код]

Высокая отказоустойчивость и низкие издержки XMPP-серверов[36] способствуют тому, что ряд крупных компаний использует XMPP как базовую платформу для создания закрытых мессенджеров и чатов, а также для доставки push-уведомлений[37]

Примеры программного обеспечения

[править | править код]

https://xmpp.org/software/?platform=linux

XMPP-клиенты

[править | править код]

По статистике публичного XMPP-сервера 404.city[44](на лето 2017 года), самые популярные клиенты для десктопов и ноутбуков — Pidgin и Psi+ . На Android лидируют Xabber и Conversations

Веб-клиенты

[править | править код]

Для Android

[править | править код]

Для iOS

[править | править код]

Для Linux/macOS/Windows

[править | править код]

XMPP-библиотеки

[править | править код]

XMPP-серверы

[править | править код]

Некоторые публичные XMPP-серверы

[править | править код]

Примечания

[править | править код]
  1. 1 2 Jabber Inc. — About Us Архивировано 3 июля 2007 года.
  2. Facebook Developers: Chat API. Дата обращения: 7 июля 2016. Архивировано из оригинала 25 сентября 2015 года.
  3. Яндекс прекращает поддержку Jabber’a и об этом никто не знает / Geektimes. Дата обращения: 28 ноября 2016. Архивировано 29 ноября 2016 года.
  4. Яндекс вслед за остальными закрывает свой jabber сервер / Geektimes. Дата обращения: 28 ноября 2016. Архивировано 29 ноября 2016 года.
  5. History of XMPP. Дата обращения: 8 сентября 2009. Архивировано 12 февраля 2011 года.
  6. Open Real Time Messaging System
  7. Запись в блоге Питера Сен-Андре (недоступная ссылка)
  8. Jabber Software Foundation Renamed to XMPP Standards Foundation : [Press release] :  (недоступная ссылка) : [англ.] : [арх. 21 января 2007] // xmpp.org. — XSF, 2007. — 16 January.
  9. Gary Burd. XMPP Federation (17 января 2006). Дата обращения: 30 ноября 2007. Архивировано 21 августа 2011 года.
  10. Sean Gallagher. Google will not allow server-to-server connections (17 мая 2013). Дата обращения: 20 мая 2013. Архивировано 20 мая 2013 года.
  11. Google FAQ: Open Communications. Дата обращения: 7 июля 2016. Архивировано 5 октября 2016 года.
  12. The XMPP Blog: No, it’s not the end of XMPP for Google Talk. Дата обращения: 7 июля 2016. Архивировано 17 июня 2016 года.
  13. XMPP RFCs. Дата обращения: 8 сентября 2009. Архивировано 17 сентября 2009 года.
  14. Can I use Jabber when I’m behind a firewall? Архивировано 20 мая 2007 года. JabberLive!, 9 марта 2007
  15. Jabber available behind a firewall or proxy. Free. Дата обращения: 23 мая 2022. Архивировано 25 января 2021 года.
  16. Psi. Дата обращения: 24 января 2009. Архивировано 1 ноября 2020 года.
  17. Kopete OTR plugin. Дата обращения: 24 января 2009. Архивировано 17 октября 2008 года.
  18. Miranda GnuPG Plugin Архивировано 20 декабря 2010 года.
  19. Standards-JIG] Distribution of stanza types. Дата обращения: 14 августа 2009. Архивировано 15 июня 2009 года.
  20. Standards-JIG] proto-JEP: Smart Presence Distribution. Дата обращения: 14 августа 2009. Архивировано 10 июня 2009 года.
  21. XEP-0138: Stream Compression. Дата обращения: 14 августа 2009. Архивировано 15 августа 2009 года.
  22. Transport Layer Security Protocol Compression Methods. Дата обращения: 14 августа 2009. Архивировано 12 октября 2009 года.
  23. Standards-JIG] MUC traffic issues. Дата обращения: 14 августа 2009. Архивировано 10 мая 2009 года.
  24. Neutron (Jabber bot). Дата обращения: 20 июля 2011. Архивировано 22 августа 2011 года.
  25. Google Trends. Дата обращения: 5 мая 2013. Архивировано 8 октября 2016 года.
  26. fatal-dev. Дата обращения: 26 ноября 2011. Архивировано 27 мая 2013 года.
  27. Snapi XMPP bot. Дата обращения: 20 июля 2011. Архивировано 24 апреля 2014 года.
  28. BlackSmith XMPP bot. Дата обращения: 4 декабря 2011. Архивировано 18 сентября 2011 года.
  29. BlackSmith mark.2 (New XMPP bot). Дата обращения: 20 июля 2011. Архивировано 25 ноября 2011 года.
  30. Taho на GoogleCode. Дата обращения: 20 июля 2011. Архивировано 28 февраля 2011 года.
  31. pako — Pako Jabber bot (C#). Дата обращения: 14 августа 2013. Архивировано 7 октября 2013 года.
  32. Disabler Production LabAratory. Дата обращения: 11 февраля 2020. Архивировано 16 февраля 2020 года.
  33. Крупнейший XMPP сервер в России. Дата обращения: 16 июля 2004. Архивировано 29 июля 2004 года.
  34. Python Style Guide. Дата обращения: 20 июля 2011. Архивировано 29 октября 2009 года.
  35. a7x-im (Erl bot developers). Дата обращения: 20 июля 2011. Архивировано 8 февраля 2011 года.
  36. ejabberd Massive Scalability: 1 Node — 2+ Million Concurrent Users | ProcessOne Blog. Дата обращения: 22 июня 2018. Архивировано 22 июня 2018 года.
  37. XMPP | Uses of XMPP. Дата обращения: 22 июня 2018. Архивировано 22 июня 2018 года.
  38. Переход с устаревших API FCM на HTTP v1 Firebase Cloud Messaging.
  39. About GCM Connection Server  |  Cloud Messaging  |  Google Developers. web.archive.org (6 марта 2017). Дата обращения: 29 сентября 2023. Архивировано 6 марта 2017 года.
  40. F. Karpisek, I. Baggili, F. Breitinger. WhatsApp network forensics: Decrypting and understanding the WhatsApp call signaling messages // Digital Investigation. — 2015-12-01. — Т. 15. — С. 110–118. — ISSN 1742-2876. — doi:10.1016/j.diin.2015.09.002.
  41. What technology does the iOS Apple Push Notification Service (APNS) use to maintain a persistent connection with each device to receive s... (англ.). Quora. Дата обращения: 29 сентября 2023.
  42. Tomer. Kik Bot API. — 2023-09-26. Архивировано 25 октября 2021 года.
  43. Hollister, Sean Logitech pulls 180, will un-break third-party Harmony home automation (амер. англ.). The Verge (21 декабря 2018). Дата обращения: 29 сентября 2023. Архивировано 2 июня 2023 года.
  44. Statistics (9 августа 2017). Дата обращения: 18 апреля 2018. Архивировано из оригинала 9 августа 2017 года.

Ссылки

[править | править код]
Для улучшения этой статьи желательно: Обновить статью, актуализировать данные.Проверить достоверность указанной в статье информации. На странице обсуждения должны быть пояснения.После исправления проблемы исключите её из списка. Удалите шаблон, если устранены все недостатки.