XMPP

редактировать
Протокол связи для промежуточного программного обеспечения, ориентированного на сообщения

Официальный логотип

Extensible Messaging and Presence Protocol (XMPP ) - это протокол связи для промежуточного программного обеспечения, ориентированного на сообщения, на основе XML (Extensible Markup Language). Это позволяет осуществлять обмен структурированными, но расширяемыми данными в режиме реального времени между любыми двумя или более объектами сети. Первоначально названный Jabber, протокол был разработан одноименным сообществом разработчиков открытого исходного кода в 1999 году для почти реального времени обмена мгновенными сообщениями (IM), присутствия. информация и список контактов обслуживание. Разработанный как расширяемый, протокол использовался также для систем публикации-подписки, сигнализации для VoIP, видео, передачи файлов, игр, приложения Интернета вещей (IoT), такие как интеллектуальная сеть и службы социальных сетей.

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

Инженерная группа Интернета (IETF) сформировала в 2002 году рабочую группу XMPP для формализации основных протоколов как технологии мгновенного обмена сообщениями и присутствия IETF. Рабочая группа XMPP разработала четыре спецификации (RFC 3920, RFC 3921, RFC 3922, RFC 3923 ), которые были утверждены как предложенные. Стандарты 2004 г. В 2011 г. RFC 3920 и RFC 3921 были заменены на RFC 6120 и RFC 6121 соответственно, на RFC 6122, определяющий формат адреса XMPP. В 2015 году RFC 6122 был заменен на RFC 7622. В дополнение к этим основным протоколам, стандартизированным в IETF, XMPP Standards Foundation (ранее Jabber Software Foundation) активно занимается разработкой открытых расширений XMPP.

Программное обеспечение на основе XMPP широко используется в Интернете, и к 2003 году им пользовались более десяти миллионов человек по всему миру, согласно XMPP Standards Foundation.

Содержание

  • 1 История
  • 2 Федерация
    • 2.1 Децентрализация и адресация
    • 2.2 Подключение к другим протоколам
  • 3 XMPP как расширяемая платформа Message Oriented Middleware (xMOM)
  • 4 Реализации
    • 4.1 XMPP через HTTP
    • 4.2 Развертывания
  • 5 Разработка
    • 5.1 XSF
    • 5.2 Интернет вещей
  • 6 Спецификации и стандарты
    • 6.1 Конкурирующие стандарты
  • 7 Функции
    • 7.1 Сильные стороны
    • 7.2 Слабые стороны
    • 7.3 Расширения
  • 8 См. Также
  • 9 Ссылки
  • 10 Внешние ссылки

История

Джереми Миллер начал работать над технологией Jabber в 1998 году и выпустил первую версию jabberd , 4 января 1999 года. Раннее сообщество Jabber сосредоточилось на программном обеспечении с открытым исходным кодом, в основном на сервере jabberd, но его главным результатом стала разработка XMP Протокол P.

Ранний протокол Jabber , разработанный в 1999 и 2000 годах, лег в основу XMPP, как опубликовано в RFC 3920 и RFC 3921 в Октябрь 2004 г. (основными изменениями во время формализации рабочей группой IETF XMPP были добавление TLS для шифрования канала и SASL для аутентификации). Обратите внимание, что RFC 3920 и RFC 3921 были заменены RFC 6120 и RFC 6121, опубликованными в 2011 году.

Первой службой обмена мгновенными сообщениями, основанной на XMPP, был Jabber.org, который работал непрерывно и предлагал бесплатные учетные записи с 1999 года. С 1999 по февраль 2006 года служба использовала jabberd в качестве своего серверного программного обеспечения, после чего он мигрировал на ejabberd (оба являются серверами приложений с бесплатным программным обеспечением ). В январе 2010 года служба перешла на проприетарное серверное программное обеспечение M-Link, производимое Isode Ltd.

В августе 2005 года Google представила Google Talk, комбинация VoIP и системы обмена мгновенными сообщениями, которая использует XMPP для обмена мгновенными сообщениями и в качестве основы для протокола передачи голоса и файлов под названием Jingle. Первоначальный запуск не включал межсерверную связь ; Google включил эту функцию 17 января 2006 года. С тех пор Google добавил в Google Talk функции видео, также используя протокол Jingle для передачи сигналов. В мае 2013 года Google объявил, что совместимость XMPP будет исключена из Google Talk для межсерверной федерации, хотя будет сохранена поддержка клиент-сервер.

В январе 2008 года AOL представила экспериментальную поддержку XMPP для своих Служба AOL Instant Messenger (AIM), позволяющая пользователям AIM общаться с помощью XMPP. Однако в марте 2008 года эта услуга была прекращена. По состоянию на май 2011 года AOL предлагает ограниченную поддержку XMPP.

В сентябре 2008 года Cisco Systems приобрела Jabber, Inc., создателей коммерческого продукта Jabber XCP.

В феврале 2010 года сайт социальной сети Facebook открыл свою функцию чата для сторонних приложений через XMPP. Некоторые функции были недоступны через XMPP, и поддержка была прекращена в апреле 2014 года.

Точно так же в декабре 2011 года Microsoft выпустила интерфейс XMPP для своей службы Microsoft Messenger. Skype, его де-факто преемник, также предоставляет ограниченную поддержку XMPP. Однако это не собственные реализации XMPP.

Федерация

Децентрализация и адресация

Простая сеть XMPP с серверами jabber.org и draugr.de. Зеленые клиенты находятся в сети, желтые клиенты пишут друг другу, а маленькие зеленые субклиенты - это ресурсы одного пользователя. Коричневая сеть не подключена к Интернету. Сервер draugr.de подключен к другим службам обмена мгновенными сообщениями (ICQ, AIM и др.) Через транспорты XMPP.

В сети XMPP используется архитектура клиент-сервер ; клиенты не разговаривают друг с другом напрямую. Модель децентрализована - любой может запустить сервер. По замыслу, не существует центрального авторитетного сервера, как у таких служб, как AOL Instant Messenger или Windows Live Messenger. Здесь часто возникает некоторая путаница, поскольку на jabber.orgработает общедоступный сервер XMPP, на который подписаны многие пользователи. Однако любой может запустить свой собственный сервер XMPP в собственном домене.

Каждый пользователь в сети имеет уникальный адрес XMPP, называемый JID (по историческим причинам адреса XMPP часто называются идентификаторами Jabber). JID структурирован как адрес электронной почты с именем пользователя и доменным именем (или IP-адресом ) для сервера, на котором находится этот пользователь, разделенных под знаком (@), например [email#160;protected] .

Поскольку пользователь может захотеть войти в систему из нескольких мест, он может указать ресурс . Ресурс идентифицирует конкретного клиента, принадлежащего пользователю (например, домашний, рабочий или мобильный). Его можно включить в JID, добавив косую черту, за которой следует имя ресурса. Например, полный JID мобильной учетной записи пользователя может быть [email#160;protected] /mobile.

. Каждый ресурс может указывать числовое значение, называемое priority . Сообщения, просто отправленные на [email#160;protected] , будут отправляться клиенту с наивысшим приоритетом, но сообщения, отправленные на [email#160;protected] /mobile, будут отправляться только мобильному клиенту. Наивысший приоритет - это приоритет с наибольшим числовым значением.

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

Средства для маршрутизации сообщений на основе логического идентификатора конечной точки - JID, вместо явного IP-адреса, представляют возможности для использования XMPP в качестве реализации Overlay network поверх различных базовых сетей.

Подключение к другим протоколам

Алиса отправляет сообщение через сеть XMPP на транспорт ICQ. Затем сообщение направляется Бобу через сеть ICQ.

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

Другой тип шлюза - межсерверный шлюз, который позволяет развертыванию сервера без поддержки XMPP подключаться к собственным серверам XMPP с использованием встроенных функций междоменной федерации XMPP. Такие межсерверные шлюзы предлагаются несколькими корпоративными программными продуктами для обмена мгновенными сообщениями, включая:

XMPP как расширяемая платформа промежуточного программного обеспечения, ориентированного на сообщения (xMOM)

XMPP обеспечивает общую структуру для обмена сообщениями по сети, которая предлагает множество приложений помимо традиционного обмена мгновенными сообщениями (IM) и распределения данных присутствия. Хотя сегодня существует несколько протоколов обнаружения служб (таких как zeroconf или протокол определения местоположения служб ), XMPP обеспечивает прочную основу для обнаружения служб, находящихся локально или между сеть и доступность этих сервисов (через информацию о присутствии), как указано в XEP-0030 DISCO.

Благодаря своей способности поддерживать обнаружение в локальных сетевых доменах, XMPP хорошо работает -подходит для облачных вычислений, где виртуальные машины, сети и брандмауэры в противном случае будут препятствовать поиску альтернативных услуг и решениям на основе присутствия. Облачные вычисления и системы хранения полагаются на различные формы связи на нескольких уровнях, включая не только обмен сообщениями между системами для передачи состояния, но также миграцию или распределение более крупных объектов, таких как хранилище или виртуальные машины. Наряду с аутентификацией и защитой передаваемых данных XMPP может применяться на различных уровнях и может оказаться идеальным в качестве расширяемого промежуточного программного обеспечения или протокола промежуточного программного обеспечения, ориентированного на сообщения (MOM). Широко известный своей способностью непосредственно обмениваться контентом на основе XML, он стал открытой платформой для обмена другими формами контента, включая проприетарные двоичные потоки, полноразмерное видео (FMV) контент и транспортировку файловый контент, например, с помощью серии расширений Jingle. Здесь большинство приложений не имеют ничего общего с человеческим общением (например, IM), а вместо этого предоставляют открытые средства для поддержки межмашинного или однорангового взаимодействия. в разнообразных сетях.

Реализации

XMPP реализуется многими клиентами, серверами и библиотеками кода. Эти реализации предоставляются в рамках различных лицензий на программное обеспечение.

XMPP через HTTP

Исходным и «родным» транспортным протоколом для XMPP является протокол управления передачей (TCP), использующий открытые потоки XML через долгоживущий TCP. соединения.

В качестве альтернативы транспорту TCP сообщество XMPP разработало также транспорт HTTP для веб-клиентов, а также пользователей, находящихся за ограниченными брандмауэрами. В исходной спецификации XMPP мог использовать HTTP двумя способами: опрос и привязка. Метод опроса, который теперь устарел, по существу подразумевает, что сообщения, хранящиеся в серверной базе данных, регулярно извлекаются (и отправляются) клиентом XMPP посредством HTTP-запросов GET и POST. Метод привязки, реализованный с использованием двунаправленных потоков по синхронному HTTP (BOSH ), позволяет серверам отправлять сообщения клиентам сразу после их отправки. Эта модель push-уведомлений более эффективна, чем опрос, при котором многие опросы не возвращают новых данных.

Поскольку клиент использует HTTP, большинство брандмауэров позволяют клиентам получать и публиковать сообщения без каких-либо помех. Таким образом, в сценариях, где TCP-порт, используемый XMPP, заблокирован, сервер может прослушивать обычный HTTP-порт, и трафик должен проходить без проблем. Различные веб-сайты позволяют пользователям входить в XMPP через браузер. Кроме того, существуют открытые общедоступные серверы, которые прослушивают стандартные порты http (порт 80) и https (порт 443) и, следовательно, разрешают соединения из-за большинства брандмауэров. Однако зарегистрированный IANA порт для BOSH на самом деле 5280, а не 80.

Развертывания

Некоторые крупные общедоступные службы обмена мгновенными сообщениями изначально используют XMPP, в том числе "LJ" LiveJournal. Talk », Nimbuzz и HipChat. Различные услуги хостинга, такие как DreamHost, позволяют клиентам хостинга выбирать услуги XMPP наряду с более традиционными услугами Интернета и электронной почты. Специализированные службы хостинга XMPP также существуют в форме облака, поэтому владельцам доменов не нужно напрямую запускать свои собственные серверы XMPP, включая Cisco Webex Connect, Chrome.pl, Flosoft.biz, i-pobox.net и hosted.im.

Некоторые из крупнейших провайдеров обмена сообщениями используют или использовали различные формы протоколов на основе XMPP в своих серверных системах, не обязательно раскрывая этот факт своим конечным пользователям. Сюда входят WhatsApp, Google Talk и Facebook Chat (устаревшая система обмена сообщениями Facebook). Большинство этих развертываний построено на бесплатном программном обеспечении, на базе Erlang XMPP-сервере под названием ejabberd.

XMPP также используется при развертывании не-IM-сервисов, включая системы интеллектуальных сетей, такие как приложения для реагирования на запросы, промежуточное программное обеспечение, ориентированное на сообщения, и в качестве замены SMS для обеспечения обмена текстовыми сообщениями на многих клиентах смартфонов.

XMPP - это стандарт де-факто для приватного чата на игровых платформах, таких как Origin и PlayStation, а также на уже снятых с производства Xfire и Raptr. Двумя заметными исключениями являются Steam и Xbox LIVE ; оба используют свои собственные проприетарные протоколы обмена сообщениями.

Разработка

XSF

XMPP Standards Foundation (XSF) разрабатывает и публикует расширения XMPP посредством процесса стандартизации, основанного на протоколах расширений XMPP (XEP)., ранее известные как предложения по расширению Jabber - JEP). Особенно широко используются следующие расширения:

  • Data Forms
  • Service Discovery
  • Multi-User Chat
  • Publish-Subscribe и Personal Eventing Protocol
  • XHTML-IM
  • Передача файлов
  • Возможности объекта
  • HTTP-привязка
  • Jingle для голоса и видео

Интернет вещей

Функции XMPP, такие как федерация между доменами, публикация / подписка, аутентификация и безопасность даже для мобильных конечных точек, используются для реализации Интернета вещей. Несколько расширений XMPP являются частью экспериментальной реализации: формат эффективного обмена XML (EXI); Данные датчика; Обеспечение; Контроль; Концентраторы; Discovery.

Эти усилия задокументированы на странице в вики XMPP, посвященной Интернету вещей, и списку рассылки XMPP IoT.

Спецификации и стандарты

Рабочая группа IETF XMPP подготовила серию документов Request for Comments (RFC):

Наиболее важные и наиболее широко применяемые из этих спецификаций:

Конкурирующие стандарты

XMPP часто рассматривается как является конкурентом SIMPLE, основанного на протоколе инициации сеанса (SIP), в качестве стандартного протокола для обмена мгновенными сообщениями и уведомления о присутствии.

Расширение XMPP для многопользовательской chat можно рассматривать как конкурента Internet Relay Chat (IRC), хотя IRC намного проще, имеет гораздо меньше функций и гораздо более широко используется.

Расширения XMPP для публикации -subscribe предоставляет многие из тех же функций, что и Advanced Message Queuing Protocol (AMQP).

Особенности

Сильные стороны

Децентрализация
Архитектура сети XMPP аналогична электронной почте; любой может запустить свой собственный XMPP-сервер, и центрального главного сервера нет.
Открытые стандарты
Инженерная группа Интернета формализовала XMPP как утвержденную технологию обмена мгновенными сообщениями и присутствия под названием XMPP (последние спецификации: RFC 6120 и RFC 6121 ). Для реализации этих спецификаций не требуется никаких лицензионных отчислений или предоставленных разрешений.
История
Технологии XMPP используются с 1999 года. Многие реализации стандартов XMPP существуют для клиентов, серверов, компонентов и библиотек кода.
Безопасность
Серверы XMPP могут быть изолированы (например, в интрасети компании ), а также безопасная аутентификация (SASL ) и двухточечное шифрование (TLS ) были встроены в основные спецификации XMPP, а также в многопоточное шифрование (OMEMO ).
Гибкость
Пользовательские функции могут быть построены на наверху XMPP. Для обеспечения взаимодействия общие расширения находятся под управлением XMPP Standards Foundation. Приложения XMPP, помимо IM, включают чаты, управление сетью, распространение контента, обмен файлами, игры, геолокация, промежуточное ПО и облачные вычисления, VoIP и.

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

Не поддерживает качество обслуживания (QoS)
Гарантированная доставка сообщений должна быть построена поверх уровня XMPP. Для решения этой проблемы предлагается два XEP: XEP-0184 уведомления о доставке сообщений, который является черновиком стандарта, и XEP-0333 Chat Markers, который считается экспериментальным.
Текст связь на основе
Поскольку XML основан на тексте, обычный XMPP имеет более высокие сетевые издержки по сравнению с чисто двоичными решениями. Эта проблема решается с помощью экспериментального формата XEP-0322: Efficient XML Interchange (EXI) Format, в котором XML сериализуется очень эффективным двоичным способом, особенно в режиме с учетом схемы.
Внутриполосный канал. передача двоичных данных ограничена
Двоичные данные должны быть сначала закодированы в base64, прежде чем они могут быть переданы внутри полосы. Следовательно, любой значительный объем двоичных данных (например, передача файлов ) лучше всего передавать вне диапазона, используя для координации внутриполосные сообщения. Лучшим примером этого является Jingle XMPP Extension Protocol, XEP-0166.

Extensions

The XMPP Standards Foundation или XSF (ранее Jabber Software Foundation) активно занимается разработкой открытых расширений XMPP, так называемых XEP. Однако расширения также могут быть определены любым человеком, программным проектом или организацией. Другой пример - протокол федерации в Apache Wave, который основан на XMPP.

См. Также

Ссылки

Внешние ссылки

Викискладе есть носители, относящиеся к Расширяемый Протокол обмена сообщениями и присутствия.
Последняя правка сделана 2021-06-22 06:41:21
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте