Последние изменения на 18:58 24 мая 2010

Устройство сети Jabber

Введение

Устройство сети Jabber отличается от других IM сетей ввиду своей децентрализованной структуры. Сеть состоит из большого количества публичных или изолированных серверов, некоторого числа клиентов, которые к ним подключаются, соединений - межсерверных (s2s) и клиент-сервер (c2s) и опционально - набором транспортов на стороне сервера, обеспечивающих связь с другими IM-сетями либо выполняющих те или иные функции. Наглядно структура сети показана на рисунке ниже:

Графическое отображение структуры Jabber-сети

Рассмотрим процедуру передачи сообщения. В самом начале клиент передает сообщение на свой сервер. Это соединение называется c2s (client to server). На данном этапе происходит обработка (конвертирование текста в формат XML, шифрование и/или сжатие при необходимости) текста и статус-сообщений клиентом и пересылка данных на сервер. Далее сервер производит обратную процедуру (распаковку и расшифровку). Исходя из полученных данных он либо пересылает сообщение другому клиенту (если этот клиент подключён на том же сервере, где и первый), или отправляет данные другому серверу (если клиент подключён к другому серверу). В первом случае соединение называется s2c (server to client) и происходит аналогично c2s. Во втором случае соединение называется s2s (server to server). В этом случае сообщение при необходимости шифруется и передается на другой сервер, а на другом сервере происходит соединение s2c.

Изолированные сервера

Серверы, для которых недоступны s2s-подключения к публичным серверам (либо недоступны вообще) называются изолированными Jabber-серверами. Проявляется это в том, что невозможны любые коммуникации с другими серверами, такие как отправка сообщений, подключение и использование транспортов. Чаще всего такие сервера находятся в тех местах, где нежелательна бесконтрольная передача информации во внешнюю сеть, либо просто недоступно подключение к Интернет; пример - различные организации или локальные сети провайдеров.

Транспорты

При использовании транспортов возникает еще один этап. На данном этапе сервер передает данные транспорту, а транспорт преобразует данные в формат чужого IM и передает их в чужую сеть. Если транспорт находится на другом сервере, то предварительно происходит этап s2s. Важно заметить, что взаимодействие клиента с другим сервером (не с тем, к которому он подключён) практически никогда не происходит. Все делается через свой сервер (это относится не только к транспортам, а ко всей сети). При использовании транспорта J2J клиентом является сервер, на котором размещен транспорт J2J.

Ссылки