XMPP: различия между версиями

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
[отпатрулированная версия][отпатрулированная версия]
Содержимое удалено Содержимое добавлено
→‎XMPP-серверы: интервики вместо внешней ссылки
→‎Ссылки: чистка ссылок
Строка 112: Строка 112:
* [http://www.jabber.org/ Jabber.org]{{ref-en}}
* [http://www.jabber.org/ Jabber.org]{{ref-en}}
* [http://www.jabber.ru/ Национальный российский jabber-сервер]
* [http://www.jabber.ru/ Национальный российский jabber-сервер]
* [http://habrahabr.ru/blog/im/39067.html Кому нужна открытость и расширяемость XMPP?]
* [http://habrahabr.ru/blogs/jabber/50776/ Обзор Jabber-клиентов под Windows]
* [http://habrahabr.ru/blogs/jabber/50776/ Обзор Jabber-клиентов под Windows]
* [http://trashbox.ru/topics/1345/obzor_jabber-klientov_dlya_symbian_9 Обзор Jabber-клиентов под Symbian]
* [http://trashbox.ru/topics/1345/obzor_jabber-klientov_dlya_symbian_9 Обзор Jabber-клиентов под Symbian]
* [http://trashbox.ru/topics/1383/obzor_jabber-klientov_dlya_j2me Обзор Jabber-клиентов на J2ME]
* [http://trashbox.ru/topics/1383/obzor_jabber-klientov_dlya_j2me Обзор Jabber-клиентов на J2ME]
* [http://jawiki.ru/ Вики-система о Jabber]
* [http://jabberworld.info Вики-система по теме миграции на Jabber]
* [http://jabberworld.info Вики-система по теме миграции на Jabber]



Версия от 17:55, 11 февраля 2010

Логотип Jabber
Файл:XMPP Logo.svg
Логотип XMPP

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

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

История

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

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 года такая возможность была добавлена.[4]

Протокол

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

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

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

  • Децентрализация: Архитектура сети 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 внутри протокола.[8][9][10]
  • Гибкость: Настраиваемая функциональность может быть надстроена поверх XMPP; для поддержки возможности взаимодействия различных сетей стандартные расширения поддерживаются XMPP Software Foundation. Приложения XMPP в дополнение к функциональности клиента сетевого общения включают в себя администрирование сети, распределение ресурсов, утилиты для совместной работы, обмен файлами, игры и мониторинг удалённых систем.

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

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

Адресация

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

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

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

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

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

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

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

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

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

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

(приведены в алфавитном порядке)

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

(приведены в алфавитном порядке)

  • Bombus — свободная программа для обмена сообщениями по протоколу XMPP, предназначенная для мобильных телефонов и смартфонов с поддержкой Java/MIDP.
  • Coccinella — свободная программа для обмена сообщениями по протоколу XMPP, написана на Tcl/Tk.
  • Exodus — свободный (GPL) XMPP клиент для ОС Microsoft Windows.
  • Gajim — свободная программа для обмена сообщениями по протоколу XMPP, основанная на Python и PyGTK.
  • Google Talk — XMPP-совместимая программа Google, поддерживающая функции голосового общения.
  • Jimm aspro (Jabber)[17] — свободная программа для обмена сообщениями по протоколу XMPP, предназначенная для мобильных телефонов и смартфонов с поддержкой Java/MIDP, основанная на Jimm apsro
  • Pandion — XMPP-клиент для Microsoft Windows. Для работы использует Internet Explorer. Имеется возможность создавать расширения с использованием HTML и JScript.
  • Psi — свободная программа для обмена сообщениями по протоколу XMPP, основанная на библиотеке Qt.
  • SieJC — свободная программа для обмена сообщениями по протоколу XMPP, для телефонов Siemens с установленным эльфпаком.
  • Talkonaut — программа для обмена сообщениями по протоколу XMPP, Google Talk и Gizmo5, с возможностью использования IP-телефонии (VoIP), для мобильных телефонов с поддержкой Java и КПК с Windows Mobile.
  • Tkabber — свободная программа для обмена сообщениями по протоколу XMPP, написана на Tcl/Tk.
  • Я.Онлайн — основан на исходных кодах Psi. Умеет уведомлять о новых письмах на почтовых ящиках, поддерживающих POP3.

Многофункциональные клиенты, поддерживающие протокол XMPP

(приведены в алфавитном порядке)

  • Adium — клиент для ОС Mac OS X для мгновенного обмена сообщениями сервисов XMPP, Google Talk, LiveJournal, Bonjour, Gadu-Gadu, ICQ, Lotus Sametime, .Mac, MeBeam, MySpaceIM, Novell GroupWise, Tencent QQ, SIP / SIMPLE, Tlen, Xfire, .NET Messenger Service, Yahoo! Messenger, Zephyr.
  • Gizmo5 — несвободная бесплатная программа для мгновенного обмена сообщениями в Интернете, поддерживающая протоколы AIM, Windows Live (MSN), Yahoo!, MySpace IM, GoogleTalk, ICQ, iChat, QQ, Gadu-Gadu и XMPP.
  • iChat — программа, поставляемая вместе с операционной системой Mac OS X.
  • Instantbird — свободная программа для мгновенного обмена сообщениями в Интернете, поддерживающая протоколы XMPP, Google Talk, ICQ, Yahoo!, AIM, MSN, Gadu-Gadu и другие, базирующаяся на Pidgin и Mozilla Firefox.
  • Kopete — свободная программа для мгновенного обмена сообщениями в Интернете, работающая в KDE. Работает с протоколами XMPP, ICQ, AIM, Yahoo, MSN, IRC, Gadu-Gadu, Novell GroupWise Messenger и др.
  • Miranda IM — свободная программа для мгновенного обмена сообщениями в Интернете или в локальной сети, понимающая протоколы ICQ, IRC, AIM, MSN, XMPP, Google Talk, Yahoo, Skype, Gadu-Gadu, Tlen, Netsend, В Контакте и т. д.
  • Pidgin — свободный кроссплатформенный клиент для мгновенного обмена сообщениями в Интернете, понимающий протоколы ICQ, IRC, AIM, MSN, XMPP, Yahoo, Gadu-Gadu и др.
  • QIP Infium — поддерживает XMPP, начиная с версии Infium Beta, вышедшей 22.06.2007 (основан на исходниках модуля XMPP из Miranda IM).
  • QIP PDA — поддерживает XMPP, начиная с версии 2000, вышедшей 30.04.2009.
  • qutIM — кроссплатформенный клиент мгновенного обмена сообщениями с открытым исходным кодом (поддержка XMPP включена с версии 0.1.99).
  • SIM — свободная программа для мгновенного обмена сообщениями в Интернете, понимающая протоколы ICQ, AIM, MSN, XMPP, Yahoo и др.
  • Trillian — программа для мгновенного обмена сообщениями в Интернете, понимающая протоколы ICQ, MSN, XMPP, Yahoo и другие.
  • Virtus — мультипротокольная программа от Rambler.

Примечания

Ссылки