Наука
Регистрация
Advertisement
XMPP logo

Логотип XMPP Standards Foundation

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

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

История[]

Проект Jabber был основан Джереми Миллером в начале 1998 года с разработки сервера jabberd[2]. Первое сообщение о проекте появилось 4 января 1999 года на сайте Slashdot[3]. Эту дату принято считать днем рождения технологии[4]. Вскоре после этого к проекту присоединилось несколько основных разработчиков, которые стали работать над сервером 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[5]), для более точного описания своей работы развития расширений собственно протокола, в отличие от линии развития программы с одноимённым названием.

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 года такая возможность была добавлена[6]. Однако, в мае 2013 Google объявил о сокращении поддержки межсерверных коммуникаций в связи с продвижением своего сервиса Hangouts[7].

ВКонтакте с 31 Августа 2013 г. отказывается от использования XMPP.

"Уважаемый ***! Данное сообщение отправлено Вам, т.к. Вы используете стороннее приложение для отправки личных сообщений ВКонтакте. В этом приложении используется протокол XMPP, который больше не поддерживается ВКонтакте и будет полностью отключен 31 августа 2013 года.Мы рекомендуем использовать официальные клиенты ВКонтакте для мобильных устройств и браузерную версию на компьютере. По всем вопросам Вы можете обращаться в службу поддержки ВКонтакте по ссылке /support?act=new" Администрация ВКонтакте (id100)

Протокол[]

Jabberd-Scheme-Russian2

Схема устройства работы XMPP

Семейство протоколов XMPP принято как стандарт RFC[8]. Стандартный порт для XMPP — 5222[9]. Также возможно использовать порт 80 и/или 443[10], если возникают проблемы с файрволом.

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

  • Децентрализация: Архитектура сети XMPP схожа с электронной почтой; кто угодно может запустить свой собственный XMPP-сервер и нет какого-либо центрального сервера.
  • Открытый стандарт: Internet Engineering Task Force формализовал XMPP как стандарт мгновенного обмена сообщениями и технологии присутствия под названием XMPP, и спецификации XMPP были опубликованы как RFC 3920 и RFC 3921. Никаких привилегий не требуется для добавления поддержки этих спецификаций и их разработка не привязана к какому-либо разработчику. Существует множество реализаций серверов и клиентов, а также библиотек с открытым исходным кодом.
  • История: Технологии XMPP используются с 1998 года. При поддержке таких крупных компаний, как Sun Microsystems и Google, создано множество дополнений к стандартам XMPP для клиентов, серверов, компонент и библиотек кодов.
  • Безопасность: XMPP серверы могут быть изолированы от публичных сетей XMPP (например, во внутренней сети компании) и хорошо защищены (благодаря использованию SASL и TLS) встроенными в ядро XMPP спецификациями. Для поддержки использования шифрования канала XMPP Standards Foundation также использовал вспомогательный certification authority в xmpp.net, обеспечивая цифровые сертификаты для администраторов XMPP серверов при содействии StartCom Certification Authority (который является основным хранителем сертификатов для всех вспомогательных). Многие реализации серверов используют SSL при обмене между клиентом и сервером, и немало клиентов поддерживают шифрование с помощью PGP/GPG внутри протокола[11][12][13].
  • Гибкость: Настраиваемая функциональность может быть надстроена поверх XMPP; для поддержки возможности взаимодействия различных сетей стандартные расширения поддерживаются XMPP Software Foundation. Приложения XMPP в дополнение к функциональности клиента сетевого общения включают в себя администрирование сети, распределение ресурсов, утилиты для совместной работы, обмен файлами, игры и мониторинг удалённых систем.

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

  • Избыточность передаваемой информации: Как правило, более 70 % межсерверного трафика XMPP составляют сообщения о присутствии[14], около 60 % которых являются излишними[15]. XMPP на данный момент создаёт избыточный трафик при доставке сообщений о присутствии (то есть «статус-сообщений») нескольким пользователям. Для решения этой проблемы разрабатываются новые протоколы. Также решением является расширение XEP-0138[16] — компрессия передаваемых данных протокола алгоритмами lzw и zlib, а также использование компрессии в рамках шифрования соединения TLS RFC 3749, глава 3[17].
  • Масштабируемость: XMPP сейчас страдает от фактически той же проблемы избыточности, но применительно к чат-комнатам и возможностям публикации информации[18]. Решение этих проблем также ожидается в виде XEP-расширений. Пока они не введены, большие чат-комнаты интенсивно образуют избыточный трафик.
  • Неэффективность передачи бинарных данных: Так как XMPP является, по сути, одним длинным XML-документом, невозможно передать немодифицированную двоичную информацию. В результате этого, для передачи файлов стараются использовать дополнительные протоколы, например, HTTP. Для передачи же файлов и другой бинарной информации непосредственно в XMPP потоке используется кодирование base64. С другой стороны, некоторые клиентские программы, например Gajim, для передачи используют технологии p2p, не задействуя при этом сервер.

Боты[]

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

Наиболее примечательные боты[]

  • Neutron[19] — англоязычный бот на Python (библиотека «xmpppy»), один из первых xmpp-ботов;
  • FreQ — многофункциональный xmpp-бот, зарекомендовавший себя стабильностью в работе, написан на Python (библиотека Twisted);
  • Sulci — бот-говорун, абсолютно бесполезен, но какое-то время был крайне популярен в качестве развлечения;
  • Gluxi — многофункциональный бот, написанный на C++;
  • Talisman — русскоязычная модификация бота Neutron, примечателен наличием множества модификаций и является наиболее популярным[20] ботом в русскоязычных Jabber-конференциях;
  • EndLess — модификация бота Talisman. Примечателен тем, что он стал первым ботом, использующим более одного JID’а. Бот является обладателем своеобразного рекорда: одна копия длительное время обслуживала ~500 конференций. Исходного кода бота нет в свободном доступе;
  • Fatal [Neutrino][21] — модификация бота Talisman/Neutron со слегка измененной библиотекой «xmpppy». В последних версиях полностью переписан и практически не имеет ничего общего со своими предками. Для обеспечения наибольшего быстродействия его код распространяется в скомпилированном виде, что, однако, не противоречит GNU GPL v2. Примечателен высокой надёжностью и отказоустойчивостью. Локализации EN и RU.
  • Snapi[22] — изначально являлся модификацией бота Talisman, но позже его «перерос». Можно охарактеризовать, как «Talisman с корректным кодом». Примечателен тем, что базируется на полностью переписанной библиотеке «xmpppy»;
  • BlackSmith mark.1[23] — бот, написанный по образу и подобию Neutron, содержит части кода бота Talisman, примечателен широкой функциональностью, высокой стабильностью и устойчивостью к различным проявлениям флуда;
  • BlackSmith mark.2[24] — имеет мало чего общего с предыдущим ботом, не считая названия. Написан на Python и использует слегка модифицированную библиотеку «xmpppy». Примечателен поддержкой нескольких JID’ов, высокой стабильностью и двумя языками в пакете (EN, RU);
  • Taho[25] — бот для конференций, написанный на Tcl.
  • Antispam[26] — бот, предназначенный для защиты конференций. Написан на Python и использует модифицированную библиотеку «xmpppy»;
  • Pako — бот, довольно популярный в англоязычной части Jabber’а. Бот написан на C#;
  • Isida[27] — многофункциональный и многоязычный бот, написан на Python (библиотека «xmpppy»). Примечателен тем, что это единственный бот, который в полной мере использует jabber.ru/muc-filter[28], а также тем, что код противоречит большинству пунктов Python Style Guide[29];
  • Erl[30] — бот, написанный на Erlang, примечателен функциями защиты конференций от спама.

Адресация[]

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

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

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

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

Wie ein Jabber-Transport funktioniert

Элис посылает сообщение через сеть джаббер к ICQ-транспорту. Дальше сообщение передаётся Бобу через сеть ICQ.

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

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

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

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

Программное обеспечение[]

XMPP-серверы[]

  • ejabberdсвободный распределённый и отказоустойчивый XMPP-сервер, написанный на Erlang. Работает на крупнейшем российском XMPP-сервере jabber.ru.
  • CommuniGate Pro
  • Openfire (ранее Wildfire, ещё ранее Jive Messenger) — свободный многофункциональный и отказоустойчивый XMPP-сервер, написанный на Java. Занимал первое место в рейтинге по возможностям на jabber.org (по состоянию рейтинга на конец марта 2007 года)[31]
  • Prosody - кроссплатформенный XMPP-сервер, написанный на языке программирования Lua

Библиотеки[]

Русскоязычные игры через XMPP[]

  1. «Камень судьбы» — текстовая RPG, jid: sof@jabbergames.ru
  2. «Остров отчаянных» — текстовая RPG, jid: ds_game_beta@jabber.org
  3. Движок многопользовательских игр через XMPP Game Runes
  4. «Мафия» — ролевая игра, jid: mafia@oneteam.im, mafia@jabbim.cz

См. также[]

  • Сравнение мессенджеров

Примечания[]

  1. 1,0 1,1 Jabber Inc. — About Us
  2. History of XMPP
  3. Open Real Time Messaging System
  4. Запись в блоге Питера Сен-Андре
  5. Jabber Software Foundation Renamed to XMPP Standards Foundation
  6. Gary Burd. XMPP Federation (17 января 2006). Проверено 30 ноября 2007. Архивировано из первоисточника 21 августа 2011.
  7. Sean Gallagher. Google will not allow server-to-server connections (17 мая 2013). Проверено 20 мая 2013. Архивировано из первоисточника 20 мая 2013.
  8. XMPP RFCs
  9. Can I use Jabber when I’m behind a firewall? JabberLive!, 9 марта 2007
  10. Jabber available behind a firewall or proxy. Free
  11. Psi
  12. Kopete OTR plugin
  13. Miranda GnuPG Plugin
  14. Standards-JIG] Distribution of stanza types
  15. Standards-JIG] proto-JEP: Smart Presence Distribution
  16. XEP-0138: Stream Compression
  17. Transport Layer Security Protocol Compression Methods
  18. Standards-JIG] MUC traffic issues
  19. Neutron (Jabber bot)
  20. Google Trends
  21. fatal-dev
  22. Snapi XMPP bot
  23. BlackSmith XMPP bot
  24. BlackSmith mark.2 (New XMPP bot)
  25. Taho на GoogleCode
  26. simpleApps
  27. Disabler Production Labaratory
  28. Крупнейший XMPP сервер в России
  29. Python Style Guide
  30. a7x-im (Erl bot developers)
  31. XMPP Software: Servers. XMPP Standards Foundation. Проверено 12 февраля 2009. Архивировано из первоисточника 21 августа 2011.

Ссылки[]

Шаблон:Программы мгновенного обмена сообщениями Шаблон:URI scheme

Основные протоколы TCP/IP

Прикладной уровень
HTTP, SMTP, FTP, DHCP, SSH, IRC, SNMP, DNS,
IMAP, NNTP, SIP, SMTP, TELNET, BitTorrent, rlogin
Транспортный уровень
TCP, UDP, SCTP, DCCP, RUDP
Сетевой уровень
IPv4, IPv6, ARP, ICMP, IGMP
Канальный уровень
Ethernet, 802.11 WiFi, Token ring, FDDI, PPP,
SLIP, ATM, DTM, Frame Relay, SMDS
Физический уровень
RS-232, EIA-422, RS-449, EIA-485

  1. Википедия XMPP адрес
  2. Викисловарьадрес
  3. Викицитатникадрес
  4. Викиучебникадрес
  5. Викитекаадрес
  6. Викиновостиадрес
  7. Викиверситетадрес
  8. Викигидадрес

Выделить XMPP и найти в:

  1. Вокруг света адрес
  2. Академик адрес
  3. Астронет адрес
  4. Элементы адрес
  5. Научная Россия адрес
  6. Кругосвет адрес
  7. Научная Сеть
  8. Традицияадрес
  9. Циклопедияадрес
  10. Викизнаниеадрес
  1. Google
  2. Bing
  3. Yahoo
  4. Яндекс
  5. Mail.ru
  6. Рамблер
  7. Нигма.РФ
  8. Спутник
  9. Google Scholar
  10. Апорт
  11. Онлайн-переводчик
  12. Архив Интернета
  13. Научно-популярные фильмы на Яндексе
  14. Документальные фильмы
  1. Список ru-вики
  2. Вики-сайты на русском языке
  3. Список крупных русскоязычных википроектов
  4. Каталог wiki-сайтов
  5. Русскоязычные wiki-проекты
  6. Викизнание:Каталог wiki-сайтов
  7. Научно-популярные сайты в Интернете
  8. Лучшие научные сайты на нашем портале
  9. Лучшие научно-популярные сайты
  10. Каталог научно-познавательных сайтов
  11. НАУКА В РУНЕТЕ: каталог научных и научно-популярных сайтов

  • Страница 0 - краткая статья
  • Страница 1 - энциклопедическая статья
  • Разное - на страницах: 2 , 3 , 4 , 5
  • Прошу вносить вашу информацию в «XMPP 1», чтобы сохранить ее

Комментарии читателей:[]

Advertisement