- Jabber
-
Jabber
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 принято как стандарт 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 могут также использоваться без явного указания имени пользователя (с указанием имени ресурса или без такового) для системных сообщений и для контроля специальных возможностей на сервере.
Соединение с другими протоколами
Полезной особенностью XMPP систем являются транспорты, или шлюзы, позволяющие пользователям получать доступ к сетям, использующим другие протоколы. Это могут быть другие протоколы обмена мгновенными сообщениями или такие протоколы как SMS и E-mail.
В отличие от мультипротокольных клиентов, XMPP предоставляет доступ на уровне сервера, посредством коммуникации через специальные сервисы-шлюзы, выполняющиеся на удалённом компьютере.
Любой пользователь может «зарегистрироваться» на одном из этих шлюзов, предоставив информацию, необходимую для входа в сеть, и может общаться с пользователями сети так, как если бы они были пользователями сети джаббер. Это значит, что любой клиент, полностью поддерживающий XMPP может быть использован для доступа к любой сети, для которой существуют шлюзы, без какого-либо дополнительного кода в клиенте и без необходимости клиенту иметь прямой доступ в Интернет.
Реализация шлюзов зависит от конкретного XMPP-сервера и подвержена нестабильности из-за закрытости коммерческих IM-сервисов.
Программное обеспечение
XMPP-серверы
(приведены в алфавитном порядке)
- DJabberd[16] — высокоскоростной расширяемый каркас для создания XMPP-серверов, разработанный компанией Danga Interactive. Применяется для общения пользователей ЖЖ.
- ejabberd — свободный распределённый и отказоустойчивый XMPP-сервер, написанный на Erlang. Работает на крупнейшем российском XMPP-сервере jabber.ru.
- jabberd
- jabberd2
- Citadel
- CommuniGate Pro
- IceWarp
- iChat Server
- in.jabberd
- Isode M-Link
- Jabber XCP
- Jerry Messenger
- Openfire (ранее Wildfire, ещё ранее Jive Messenger) — свободный многофункциональный и отказоустойчивый XMPP-сервер, написанный на Java. Занимал первое место в рейтинге по возможностям на jabber.org (по состоянию рейтинга на конец марта 2007 года)[17]
- OpenIM
- Prosody
- psyced
- Sun Jave System Instant Messaging
- Tigase
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
Библиотеки
Примечания
- ↑ 1 2 Jabber Inc. — About Us
- ↑ 1 2 History of XMPP
- ↑ Jabber Software Foundation Renamed to XMPP Standards Foundation
- ↑ Gary Burd XMPP Federation (2006-01-17). Проверено 30 ноября 2007.
- ↑ XMPP RFCs
- ↑ JabberLive! (2007-03-09) Can I use Jabber when I’m behind a firewall?
- ↑ http://www.jabber80.com
- ↑ Psi
- ↑ Kopete OTR plugin
- ↑ Miranda GnuPG Plugin
- ↑ [Standards-JIG] Distribution of stanza types
- ↑ [Standards-JIG] proto-JEP: Smart Presence Distribution
- ↑ XEP-0138: Stream Compression
- ↑ Transport Layer Security Protocol Compression Methods
- ↑ [Standards-JIG] MUC traffic issues
- ↑ DJabberd
- ↑ XMPP Software: Servers. XMPP Standards Foundation. Проверено 12 февраля 2009.
- ↑ glu
- ↑ Загрузка готовых сборок приложения Jimm aspro (Jabber)
Ссылки
- XMPP Standards Foundation (англ.)
- Официальный сайт Jabber Software Foundation (англ.)
- Национальный российский jabber-сервер
- Кому нужна открытость и расширяемость XMPP?
- Обзор Jabber-клиентов под Windows
- Обзор Jabber-клиентов под Symbian
- Обзор Jabber-клиентов на J2ME
- Вики-система о Jabber
- Вики-система по теме миграции на Jabber
Схемы URI Официальные aaa: • aaas: • acap: • cap: • cid: • crid: • data: • dav: • dict: • dns: • fax: • file: • ftp: • go: • gopher: • h323: • http: • https: • im: • imap: • ldap: • mailto: • mid: • news: • nfs: • nntp: • pop: • pres: • rtsp: • sip: • sips: • snmp: • tel: • telnet: • urn: • wais: • xmpp: Неофициальные about: • aim: • bolo: • bzr: • callto: • chrome: • cvs: • daap: • ed2k: • feed: • fish: • git: • gizmoproject: • iax2: • irc: • ircs: • lastfm: • ldaps: • magnet: • mms: • msnim: • psyc: • rsync: • secondlife: • skype: • ssh: • svn: • sftp: • smb: • sms: • soldat: • steam: • unreal: • ut2004: • view-source: • vzochat: • webcal: • xfire: • ymsgr:
Wikimedia Foundation. 2010.