up next index search
   UP: 4.5.15 Диалог в локальных сетях и в Интернет
    Next: 4.5.15.2 Расширяемый протокол обмена сообщениями и данными о присутствии (XMPP): Ядро

4.5.15.1 Обмен сообщениями в реальном масштабе времени

Семенов Ю.А. (ИТЭФ-МФТИ)
Yu. Semenov (ITEP-MIPT)

Криптозащита канала
Аутентификация
Подключение ресурсов
Обработка JID
Обработка ошибок
Интернационализация
Атрибут версии потока
Сервисы Viber и WhatsApp

Обмен текстовыми сообщениями в реальном масштабе времени (IM - Instant Messaging) является важным современным средством коммуникаций, конкурирующим в этой области с электронной почтой. Привлекательность IM заключается в отсутствии задержки доставки, характерной для e-mail. В некоторых реализациях возможна посылка сообщений партнерам, которые в данный момент не подключены к данному сервису. История обменов сообщениями сохраняется, что позволяет документировать сообщения так же как это делается в e-mail.

Получение немедленного подтверждения доставки сообщения и получение ответа на запрос делает IM-технологию особенно привлекательной. Но это делает ее одновременно уязвимой.

Первые системы обмена сообщениями появились в середине 60-х годов в рамках многопользовательских операционных систем CTSS и Multics. Эти системы позволяли пользователям, находящимися в системе, обмениваться текстовыми сообщениями. Сетей тогда еще не было. Позднее, когда появились первые сетевые средства, были разработаны протоколы взаимодействия типа P2P (например, talk, ntalk и ytalk), а также системы. где для обмена данными нужно было авторизоваться на сервере (например, talker и IRC). Системы обмена сообщениями современного типа появились в середине 90-х годов (AOL Instant Messenger, 1997). В 2000, начата работа над программами с открытыми кодами и стандартным протоколом, который получил название Jabber. Серверы Jabber могут выполнять функцию шлюза для других протоколов IM, исключая мультиклиентскую схему.

В поледнее время многие системы IM начали предлагать услуги видеоконференций, VoIP (Voice Over IP) и web-конференций. Сервис Web-конференций объединяет в себе возможности видеоконференций и передачи сообщений в реальном масштабе времени. Некоторые компании дополняют такие сервися возможностями IP-радио и IPTV.

Базовыми документами, регламентирующими работу стандарта для IM-систем, являются:

RFC-2779 - RFC 2779 - Instant Messaging / Presence Protocol Requirements - Требования к протоколам передачи сообщений в реальном времени и данных о присутствии. Передача сообщения и данных о присутсвии стала новой средой коммуникаций в Интернет. Передача сообщений в реальном масштабе времени является средством отправки небольших простых посланий, которые доставляются адресату немедленно.

Приложения IM и данных о присутствии на момент подготовки данного документа (начало 2000-го года) использовались независимо и имели несовместимые протоколы, разработанные разными компаниями. Целью протокола IMPP (Instant Messaging and Presence Protocol) является определение стандартного протокола так, чтобы было можно работать с независимо разработанными приложениями IM через Интернет. В данном документе задан минимальный набор требований, которым должен отвечать протокол IMPP.

RFC-3920 - Расширяемый протокол обмена сообщениями и данными о присутствии (XMPP): Ядро.

RFC-3921 - Расширяемый протокол обмена сообщениями и данными о присутствии (XMPP): Обмен сообщениями и данными о присутствии в реальном масштабе времени. Протокол XMPP служит для поточной передачи XML-элементов для обмена сообщениями и данными о присутствии в режиме, близком к реальному времени. Основные возможности XMPP определены в RFC-3920. Такими возможностями являются XML-потоки, использование TLS и SASL, а также дочерние элементы корневых потоков <message/>, <presence/>, и <iq/>, которые являются базовыми блоками для многих типов приложений. В данном документе описаны расширения для приложений ядра XMPP, обеспечивающего сервис IM, как это определено в RFC 2779.

RFC-3922 - Согласование протокола XMPP с системой обмена сообщениями и данными о присутствии CPIM (Common Presence and Instant Messaging). Рабочая группа по разработке протокола IMPP сформировала независимые рамки совместимости для протокола IMPP. Эти общие требования обычно называются CPIM (Common Presence and Instant Messaging). Семейство спецификаций CPIM включает в себя общий профайл для передачи сообщений в реальном времени, называемый также CPIM (Common Profile for Instant Messaging), общий профайл для данных о присутствии CPP (Common Profile for Presence), формат сообщений CPIM, и общий формат данных о присутствии PIDF (Common Presence Information Data Format).

Замечание: чтобы избежать путаницы, "Common Presence and Instant Messaging" обычно называется спецификацией CPIM, в то время как "Common Profile for Instant Messaging" называется просто CPIM.

RFC-3922 описывает, как протокол XMPP реализует абстрактную модель, содержащуюся в спецификации CPIM. Рассматривается то как осуществляется интерфейс между сервисами XMPP и сервисами, которые не следцют этому протоколу. Такие интерфейсы в этом документе называются "XMPP-CPIM шлюзами". Они могут осуществлять интерпретацию протоколов одного сервиса и переводить их в протоколы другого сервиса. Это взаимодействие представлено на рис. 1.

Рис. 1. Шлюз CPIM

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

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

RFC-3923 - Электронные подписи и криптозащита сообщений для протокола XMPP в режиме Е2Е. Этот документ определяет методы обмена данными в рамках протокола XMPP между конечными объектами, когда информация защищена электронными подписями и зашифрована. Специфизированный здесь метод позволяет отправителю подписать, защитить криптографически и послать пользователю сообщение или информацию о присутствии. Аналогичная процедура может осуществляться в отношении строф. адресованных определенному получателю.

Данные о присутствии являются статусным индикатором, который отражает возможность и желание потенциального телекоммуникационного партнера, например, пользователя обмениваться информацией.

На основе протокола XMPP создана система IM Jabber (начало 1998 года). Любой пользователь может сформировать сервер мгновенных сообщений, зарегистрировать на нём своих пользователей и взаимодействовать с другими серверами Jabber. Сервер Jabber использует порт 5222, но можно работать и с портами 80 или 443 (смотри также http://www.jabber.org/node/251). С начала 2000-го IM нашло применение и в бизнесе.

Но не следует думать, что приложение Jabber работает поверх XMPP. Сам протокл XMPP разработан на основе протокола Jabber, при этом последний был несколько модифицирован.

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

Криптозащита канала

Для сообщества пользователей Jabber обычным является криптозащита канала с привлечением протокола SSL для всех портов кроме 5222 и 5269 (согласно соглашению должны использваться порты 5223 и 5270). XMPP использует TLS с портами, зарегистрированными IANA шифрования данных в канал, как это определено для TLS (раздел 5).

Аутентификация

Протокол аутентификации клиент-сервер, разработанный сообществом пользователей Jabber, использует базовый IQ-диалог, соотнесенный с пространством имен 'jabber:iq:auth' (документация по этому протоколу содержится в [38], эти материалы опубликованы Jabber Software Foundation [40]). XMPP использует для аутентификации SASL, как это описано в статье о XMPP (раздел 6) на данном сервере.

Сообщество Jabber не разрабатывало протокол аутентификации для коммуникаций сервер-сервер, а только серверный Dialback (раздел 8 XMPP), чтобы предотвратить фальсификацию сервера. В XMPP серверный Dialback заменен на реальный протокол аутентификации сервер-сервер, как это определено в разделе 6 описания XMPP.

Подключение ресурсов

Подключение ресурсов в Jabber осуществлялось через пространство имен 'jabber:iq:auth' (которое использовалось также для аутентификации клиента сервером). Протокол XMPP определяет выделенное пространство имен для подключения ресурсов, а также возможность генерации сервером идентификатора ресурса для клиента, как это определено в разделе 7 описания XMPP.

Обработка JID

Обработка JID была определена в Jabber достаточно неопределенно (документация о запретных символах и регистрах содержится в [37, список ссылок описания XMPP], опубликованном Jabber Software Foundation [40]). Протокол XMPP специфицирует использование NAMEPREP для идентификаторов доменов и Nameprep с двумя дополненительными профайлами STRINGPREP для обработки JID (см. описание XMPP): Nodeprep (Приложение A) для идентификаторов узлов и Resourceprep (Приложение B) для идентификаторов ресурсов.

Обработка ошибок

Ошибки, связанные с потоками, обрабатывались в Jabber в элементе <stream:error/>. В XMPP ошибки, связанные с потоком, обрабатываются с привлечением гибкого механизма, определенного в разделе 4 описания XMPP.

Ошибки, сопряженные со строфами, обрабатывались в Jabber с помощью специальных кодов стиля HTTP. В XMPP ошибки, сопряженные со строфами, обрабатываются с привлечением гибкого механизма, определенного в раздел 9 описания XMPP. Документация для установления соответствия механизмов обработки ошибок между Jabber и XMPP содержится в [39] описания XMPP.

Интернационализация

Хотя использование UTF-8 всегда было стандартной практикой в Jabber, механизм этого для специфицируемых языков не определен. XMPP специфицирует использование атрибута 'xml:lang' в таком контексте (см. описание XMPP разделы 4 и 9).

Атрибут версии потока

Протокол Jabber не включает атрибут 'version' в заголовки потоков. XMPP специфицирует включение этого атрибута как способа индикации поддержки определенных возможностей потока (аутентификации, шифрования, и т.д..).

Организации, которые полагаются на IM в своем бизнесе, должны использовать надежные средства, чтобы защитить себя от вирусов, червей, спама и других угроз, присущих этой технологии. Помимо традиционных средств здась следует применить специальные фильтры, для того чтобы своевременно выявить вредоносные вложения сообщений реального времени. Эти же средства могут помешать сотрудникам компании посетить вредоносный сайт (фильтрация URL)или даже передать удаленному партнеру конфиденциальные данные.

Первым наиболее популярным, во всяком случае в РФ, был протокол ICQ. В США достаточна популярна бесплатная социальная сеть обмена короткими (< 140 символов) сообщениями Twitter.

Сервисы Viber и WahtsApp

Широкое внедрение смартфонов породило спрос на приложения с более широкой функциональностью, чем SMS. Это прежде всего Viber и WhatsApp. Эти сервисы позволяют не только работать с короткими текстовыми сообщениями, но и обмениваться с партнером в видео-режиме. Viber позволяет совершать бесплатные звонки через сеть Wi-Fi или мобильные сети, а также передавать текстовые сообщения, изображения, видео- и аудиосообщения, документы и файлы. WhatsApp - система мгновенного обмена текстовыми сообщениями для мобильных и иных платформ с поддержкой голосовой связи.


   UP: 4.5.15 Диалог в локальных сетях и в Интернет
    Next: 4.5.15.2 Расширяемый протокол обмена сообщениями и данными о присутствии (XMPP): Ядро