Устройство сети Jabber
Введение[править]
Устройство сети Jabber отличается от других IM сетей ввиду своей децентрализованной структуры. Сеть состоит из большого количества публичных или изолированных серверов, некоторого числа клиентов, которые к ним подключаются, соединений - межсерверных (s2s) и клиент-сервер (c2s) и опционально - набором транспортов на стороне сервера, обеспечивающих связь с другими IM-сетями либо выполняющих те или иные функции. Наглядно структура сети показана на рисунке ниже:
Рассмотрим процедуру передачи сообщения. В самом начале клиент передает сообщение на свой сервер. Это соединение называется c2s (client to server). На данном этапе происходит обработка (конвертирование текста в формат XML, шифрование и/или сжатие при необходимости) текста и статус-сообщений клиентом и пересылка данных на сервер. Далее сервер производит обратную процедуру (распаковку и расшифровку). Исходя из полученных данных он либо пересылает сообщение другому клиенту (если этот клиент подключён на том же сервере, где и первый), или отправляет данные другому серверу (если клиент подключён к другому серверу). В первом случае соединение называется s2c (server to client) и происходит аналогично c2s. Во втором случае соединение называется s2s (server to server). В этом случае сообщение при необходимости шифруется и передается на другой сервер, а на другом сервере происходит соединение s2c.
Изолированные сервера[править]
Серверы, для которых недоступны s2s-подключения к публичным серверам (либо недоступны вообще) называются изолированными Jabber-серверами. Проявляется это в том, что невозможны любые коммуникации с другими серверами, такие как отправка сообщений, подключение и использование транспортов. Чаще всего такие сервера находятся в тех местах, где нежелательна бесконтрольная передача информации во внешнюю сеть, либо просто недоступно подключение к Интернет; пример - различные организации или локальные сети провайдеров.
Транспорты[править]
При использовании транспортов возникает еще один этап. На данном этапе сервер передает данные транспорту, а транспорт преобразует данные в формат чужого IM и передает их в чужую сеть. Если транспорт находится на другом сервере, то предварительно происходит этап s2s. Важно заметить, что взаимодействие клиента с другим сервером (не с тем, к которому он подключён) практически никогда не происходит. Все делается через свой сервер (это относится не только к транспортам, а ко всей сети). При использовании транспорта J2J клиентом является сервер, на котором размещен транспорт J2J.