Jabber

Материал из Википедии — свободной энциклопедии

(Перенаправлено с XMPP)
Перейти к: навигация, поиск
Логотип Jabber
Логотип 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].

Об истории развития проекта можно прочесть[2].

[править] Протокол

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

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

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

  • Децентрализация: Архитектура сети XMPP схожа с email; кто угодно может запустить свой собственный 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 и E-mail.

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

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

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

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

[править] XMPP-серверы

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

[править] XMPP-клиенты

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

  • Bombus — свободная программа для обмена сообщениями по протоколу XMPP, предназначенная для мобильных телефонов и смартфонов с поддержкой Java/MIDP.
  • Coccinella — свободная программа для обмена сообщениями по протоколу XMPP, написана на Tcl/Tk.
  • Exodus — свободный (GPL) XMPP клиент для ОС Microsoft Windows.
  • Gajim — свободная программа для обмена сообщениями по протоколу XMPP, основанная на Python и PyGTK.
  • glu (xeus)[18] — XMPP-клиент, написанный с использованием WPF.
  • Google Talk — XMPP-совместимая программа Google, поддерживающая функции голосового общения.
  • JabberDS — Homebrew-клиент XMPP для портативной игровой консоли Nintendo DS
  • jabber.el — расширение для Emacs.
  • Jimm aspro (Jabber)[19] — свободная программа для обмена сообщениями по протоколу XMPP, предназначенная для мобильных телефонов и смартфонов с поддержкой Java/MIDP, основанная на Jimm apsro
  • Pandion — XMPP-клиент для Microsoft Windows. Для работы использует Internet Explorer. Имеется возможность создавать расширения с использованием HTML и JScript.
  • Psi — свободная программа для обмена сообщениями по протоколу XMPP, основанная на библиотеке Qt.
  • SieJC — свободная программа для обмена сообщениями по протоколу XMPP, для телефонов Siemens с установленным эльфпаком.
  • Spark — свободная программа для обмена сообщениями по протоколу XMPP, основанная на Java.
  • Talkonaut — программа для обмена сообщениями по протоколу XMPP, Google Talk и Gizmo5, с возможностью использования IP-телефонии (VoIP), для мобильных телефонов с поддержкой Java и КПК с Windows Mobile.
  • Tkabber — свободная программа для обмена сообщениями по протоколу XMPP, написана на Tcl/Tk.
  • Mcabber — консольный XMPP-клиент.
  • Я.Онлайн — основан на исходных кодах Psi. Умеет уведомлять о новых письмах на почтовых ящиках, поддерживающих POP3.
  • «ITFRU Messenger» - программа для мгновенного обмена сообщениями в сети Интернет по протоколу Jabber. Работает под управлением Microsoft Windows. ITFRU Messenger интегрирован с MSN, IRC, ICQ, GaduGadu, Yahoo, GTalk И AIM.

[править] Многофункциональные клиенты, поддерживающие протокол 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.
  • Bayanicq — БаянICQ Мультипротокольный клиент для смартфонов под управлением Symbian 9, UIQ3.
  • Citron IM — Мультипротокольный клиент для Windows (для платформы .NET 2.0). Поддерживает XMPP (Google Talk, LiveJournal и др.), a также ICQ и AIM.
  • Gizmo — несвободная бесплатная программа для мгновенного обмена сообщениями в Интернете, поддерживающая протоколы 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 и др.
  • MDC — поддерживает XMPP, ICQ, M-агент. Графический интерфейс построен на библиотеке Qt. В данный момент находится на стадии бета-тестирования.
  • 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 и другие.
  • Climm — свободная, кроссплатформенная, текстовая, использующая интерфейс командной строки (CLI) программа обмена мгновенными сообщениями поддерживающая OSCAR и XMPP протоколы (ICQ и Jabber соответственно). climm может быть запущен на GNU/Linux, FreeBSD, NetBSD, OpenBSD, AIX, HP-UX, Solaris, Microsoft Windows (с помощью Cygwin или MinGW), AmigaOS и (с ограничениями) BeOS.
  • Virtus — мультипротокольная программа от Rambler

[править] Библиотеки

Основная статья: Библиотеки XMPP

[править] Примечания

[править] Ссылки


Источник — «http://ru.wikipedia.org/wiki/Jabber»