Posts Tagged ‘JID’

Jabber набирает популярность

Суббота, Январь 31st, 2015 Нет комментариев

Under : , , , ,

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

Jabber — это распределенная и открытая сеть. Это означает, что в Jabber-е нет центрального сервера, который бы всеми управлял, содержал личные данные для всех пользователей и т.п. Нет сервера, от которого бы зависела функциональность всей сети. Вместо этого есть неограниченное количество серверов на каждом из которых может висеть неограниченное количество пользователей, которые, в свою очередь, могут общаться друг с другом.

Схема сети очень похожа на структуру электронной почты, если вы с ней знакомы, и сообщения передаются примерно также: когда пользователь сервера А хочет послать сообщение пользователю сервера B, он посылает специальный пакет, в котором есть заполненные поля «from» и «to» своему серверу A, он в свою очередь из JID-а указанного в поле «to» выделяет имя сервера В. Далее с помощью DNS сервер А находит IP адрес сервера B, устанавливает с ним соединение и передает пакет ему. Сервер В в свою очередь смотрит находится ли пользователь из поля «to» в сети. Если да, то передает сообщение ему, если нет, то сохраняет у себя до лучших времен.

Соединение между клиентом и сервером называют c2s. Соединение между серверами называют s2s

Вообще джаббер-сеть может передавать не только текстовые сообщения или информацию о присутствии. Протокол подходит для передачи всего, что, во-первых, не большого размера, и, во-вторых, нет жесткого требования к скорости передачи. Поэтому, для передачи файлов, звука и других потоков, клиенты, как правило, устанавливают прямое соединение (p2p) или через SOCKS/HTTP прокси, а все остальное, ну или почти все, можно через джаббер.

JID

JID (Jabber ID) в джаббере это тоже самое, что email в почте или UIN в ICQ — уникальный идентификатор пользователя, а также сервера, сервиса и т.п. Пример полного JID-а: ak@xmpp.org.ru/miranda. Он состоит из трех частей:
1. Имя пользователя — часть до собачки (ak). Может содержать все юникодные символы кроме пробелов и «&’/:<>@
2. Имя сервера — часть между собачкой и слэшем (xmpp.org.ru). Это допустимое в DNS имя.
3. Ресурс — часть после слэша (miranda). Те же ограничения, что и на имя пользователя.
JID, который содержит все три части, называют полным. Если в JID-е нет ресурса, то его называют голым (bare). JID без имени пользователя, является JID-ом самого сервера.

Если назначение имени пользователя и имени сервера вам думаю понятно, то смысл ресурса обычно вызывает вопросы. Дело в том, что вы можете войти в сеть под одним логином и паролем несколько раз — с разными ресурсами. И даже ресурсом, вы можете показать, откуда вы вышли. Например: xxx@yyy/mobile, xxx@yyy/home, xxx@yyy/work. Пока ресурсы разные все хорошо. Как только начнут повторятся — уже установленные соединения будет выбивать.

Что при этом увидит ваш друг, у которого вы в списке контактов? Обычно (зависит от клиента) ваш ник можно будет раскрыть как узел в дереве и увидеть все ваши ресурсы, затем выбрать нужный и отослать сообщение. Оно придет именно на выбранный ресурс, так как было отправлено на JID с ресурсом, т.е. на полный JID.

А куда придет сообщение которое было отправлено на голый JID? Такое сообщение можно отправить, выбрав корневой ник, а не ресурс. В этом случае в дело вступает механизм приоритетов. Приоритет — это число от -127 до 127, которое вы указываете в диалоге создания учетной записи вместе с JID-ом, паролем и ресурсом. Т.е. каждый ресурс имеет свой приоритет, указаный вами.

Главное правило приоритетов: сообщение отправленное на голый JID придeт на тот ресурс, приоритет которого выше. Если самый больший приоритет выставлен для двух ресурсов одновременно, то, в случае сервера xmpp.org.ru, сообщение будет продублировано, но вообще-то это зависит от реализации конкретного сервера. На ресурс, приоритет которого <= 0, сообщения никогда не будут перенаправлятся, даже если он останется в сети один.

Особенности JID

В части до собачки в JID-е можно использовать русские буквы, иероглифы и другие интересные символы, но только помните, что потом вам трудно будет диктовать свой JID другим
Обычное правило установки приоритетов: приоритет дома < приоритета на работе < приоритета на мобильном. Или по другому: чем дольше ресурс в сети, тем меньше у него должен быть приоритет.
На сообщение, отправленное на полный JID, приоритеты не действуют, и оно придет, даже если приоритет <= 0.

Список контактов (ростер)

У каждого пользователя Jabber есть ростер — список контактов. Это набор данных, включающий группы контактов, их адреса, тип подписки. Ростер хранится на сервере Jabber и не зависит от конкретной программы-клиента Jabber. Это позволяет иметь один список контактов для любой программы и для любого места подключения.

Замечание

По умолчанию история сообщений на сервере не хранится. Для этого есть специальные сервисы, например, jogger, который позволяет просматривать историю сообщений на web-сайте.

В ростере не обязательно хранить контакты в общей куче, можно разделить их по разным группам. Можно хранить один и тот же контакт в нескольких группах сразу. Контакт удаляется из ростера после удаления его из всех групп.

Адреса в Jabber

Для общения с собеседником нужно знать его адрес в системе сообщений. В Jabber адресом служит JID, или JabberID (Jabber IDentificator). Этот адрес тоже похож на адрес электронной почты и выглядит, как user@server.com или contact@example.org. Чтобы пользователь user мог связаться с пользователем contact, сервера server.com и example.org должны быть доступны друг для друга. Естественно, пользователи корпоративных Jabber серверов, не имеющих доступ к остальной сети, не смогут общаться с остальными пользователями системы.

В системе Jabber можно подключиться с одной учётной записью из нескольких клиентов одновременно, при этом клиенты насильно не отключаются, как в ICQ. Каждое подключение называется ресурсом и имеет приоритет, чтобы сервер мог определить, какому клиенту отправлять сообщения — сообщение получит клиент с наибольшим приоритетом ресурса. Иногда собеседникам удобно по названию ресурса определять место подключения или название клиента, например, Home, Psi.

Добавление контактов

Для добавления контакта пользователя в ростер нужно знать JabberID этого пользователя. Некоторые пишут его в подписях писем . Проще всего спросить пользователя, какой у него адрес, но это не всегда удобно — тогда можно воспользоваться поиском в каталогах пользователей Jabber.

Для успешного добавления контакта пользователя нужно отослать ему запрос на подписку (запрос на авторизацию) и получить разрешение. Такой запрос означает, что пользователь хочет подписаться на сообщения о присутствии этого контакта, а также видеть его в своём ростере, видеть статус контакта, отсылать ему сообщения и т.д. Удалённый контакт, в свою очередь, тоже может прислать запрос на подписку.

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

Транспорты и сервисы

Сервера Jabber позволяют использовать дополнительные сервисы и транспорты. Современные клиенты позволяют просмотреть список доступных сервисов на каждом конкретном сервере. Сервис не обязательно должен быть запущен на том же сервере, который предоставляет сервис, например, корпоративный сервер Jabber может предоставить доступ к главному каталогу пользователей на сервере jabber.org.

Сервис — это служба, расширяющая возможности основного сервера. Например, сервис каталога пользователей, текстовые конференции, и т.п.

Транспорт — это служба, предоставляющая доступ к другим системам обмена сообщениями, своего рода шлюз между системами.

Транспорт может не работать, если другая система сообщений сознательно блокирует доступ к ней. К сожалению, компания AOL, которой сейчас принадлежит система ICQ, всячески пытается блокировать подключения с транспортов и скрыть протокол, чтобы клиенты ICQ скачивали рекламу.

Каталоги пользователей (JUD)

Каталог пользователей Jabber (Jabber User Directory) — это сервис Jabber, хранящий информацию о пользователях. В этом каталоге можно зарегистрироваться, указав свой почтовый адрес, фамилию, псевдоним и т.д.

Каталоги пользователей удобны тем, что в них можно искать пользователей по любому заданному признаку. Например, искать JabberID, зная почтовый адрес или псевдоним пользователя.

На каждом сервере Jabber может быть запущен свой каталог пользователей — при поиске иногда не понятно, в каком каталоге кого искать. Поэтому пользователи, подключенные к любому серверу, могут зарегистрироваться в главном каталоге пользователей на сервере jabber.org, если хотят, чтобы их можно было найти глобально. Для этого на некоторых серверах сразу делаются два сервиса JUD — для локального каталога и для главного на jabber.org.

Текстовые конференции

Текстовые конференции (conference) — это сервис, который позволяет общаться не только с одним собеседником, а сразу со многими. Конференции проводятся в так называемой комнате (room), которая создаётся на указанном сервисе конференций.

Комнаты для конференций могут быть уже созданы на сервере или могут создаваться пользователями по запросу. Пользователи могут либо сами подключаться к комнате, явно указав её расположение, либо им можно посылать приглашение — специальное сообщение Jabber, в котором уже содержится адрес комнаты.

Браузер

Браузер — это одна из тех вещей, которые отличают Jabber от других IM сетей, но, к сожалению, его упускают из виду многие новички. Они просто не ожидают, что в IM сети еще оказывается есть свой браузер. Все дело в том, что в централизованных сетях типа ICQ в браузере нет необходимости, там всего один сервер и все и так знают, что он может. В отличии от них сеть Jabber — децентрализованная, в ней каждый сервер сам по себе, и, пользуясь открытостью и расширяемостью протокола, может предоставлять самые необычные транспорты и сервисы. А чтобы не зашивать в каждый клиент список серверов и что на них есть, был создан специальный стандарт для опроса серверов, а в клиенты встроен браузер.

На самом деле в истории сети Jabber было два стандарта на джаббер-браузер. Первый, Jabber Browsing, оказался не очень удачным и был вскоре вытеснен вторым, Service Discovery. Это не очень важная информация, так как первый стандарт сейчас используется только на очень старых серверах, которые встречаются редко. Просто не удивляйтесь, если вы увидите в вашем клиенте (например Ткаббер) два пункта открывающие браузеры, один из которых «не работает».

Как и в настоящем браузере, в джаббер браузере есть адресная строка. Только она состоит из двух полей: JID и Узел (node). Второе поле некоторые клиенты прячут, но это не страшно. Наверное ближайшая аналогия JID — адрес сервера, а Node — файл на этом сервере. Аналогия, как всегда, не абсолютна. Нет каталогов, пути и т.п. Про просмотре корневого узла (node = «») вы скорее всего не увидите список всех остальных узлов, вместо этого они будут расположены древовидно и при раскрывании имитировать «каталоги».

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

Jabber набирает популярность

Вторник, Январь 27th, 2015 Нет комментариев

Under : , , , , ,

Jabber набирает популярность

Познакомимся с открытой технологией для мгновенного обмена сообщениями, которую может использовать любой желающий. (далее…)