05/09/2009 13:54

Jabber. Часть первая: теория

Теги: jabber, ICQ, , ,

В последнее время частенько приходится слышать слова «Аська достала!» (адаптировано для печати). Действительно, в начале года AOL успела трижды поменять протокол, по которому ICQ-клиенты общаются с сервером. И каждый раз продолжали исправно работать только оригинальные программы-клиенты «Аськи»: ICQ 6.5 и ICQ Lite.

Но специфика использования сервиса ICQ в России такова, что родными клиентами пользуется лишь несколько процентов людей, остальные отдают предпочтение сторонним решениям — QIP, Miranda и т.д. Причин тому — немало. Во-первых, ICQ 6.5 (полная версия оригинальной Аськи) безумно тяжела и неповоротлива, а плюс к тому обвешана баннерами. ICQ Lite в свою очередь чуточку полегче, пошустрее, не обременена рекламой, но тупа как пробка — функциональность стремится к нулю.

Во-вторых, AOL не утруждает себя выпуском клиентских программ под альтернативные платформы — версии для Linux, Symbian или Java либо никогда не существовали, либо безнадёжно устарели.

Посему каждое очередное изменение протокола ICQ приводит в России к ощутимым неприятным последствиям. В первую очередь, конечно, становится просто невыносимо работать — приходится именно работать, а не болтать. Страдают студенты — бумажный «инстант месседжинг» чреват санкциями со стороны преподавателя, а SMS накладны.

Так как виноватый известен — AOL, то народные массы сразу перешли ко второму вопросу: что делать? Развитых сервисов мгновенных сейчас не так много — это та же сладкая парочка AIM и ICQ (работают по одному протоколу и принадлежат одной компании), Windows Live, Yahoo Messenger, Skype и Jabber. Yahoo с AIM особого успеха на просторах бывшего Союза не добились. Skype заработал много очков за счёт бесплатных голосовых звонков, а дистрибутив Windows Live фактически присутствует на любом компьютере с Windows не очень старой версии. Но у них обоих есть большущий минус: это проприетарные сервисы с закрытыми протоколами. Нет никаких гарантий, что с ними не случится то же, что случилось с ICQ. Да и с клиентами для альтернативных платформ (официальными и сторонними) у них так же грустно.

Нельзя сказать, что Jabber будет единственно верным выбором, но что одним из лучших — точно. Итак, сервис мгновенных сообщений Jabber (читается как «джаббер», но можно и «жаббер» или ласково «жабба») работает по открытому и стандартизированному протоколу XMPP. Любой желающий может на совершенно законных основаниях написать программу-клиент, а создатель серверной части обязан будет соблюдать все требования стандарта (на самом деле, группы стандартов). Если стандарт будет меняться, то об этом узнают все и сразу или даже заранее.

После теоретического ознакомления перейдём к практическому вхождению в сеть Jabber.

Структура сети Jabber

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

Всего серверов в сети Jabber насчитывается более сотни тысяч, а пользователей, которые к ним подключаются, - еще в тысячу раз больше. Важно, что учётная запись пользователя хранится только на одном конкретном сервере — том, где она и создавалась, и подключаться нужно именно к нему. Пользователи подключаются к сервера через соединения c2s (client-to-server), а сервера обмениваются друг с другом данными по соединениям s2s (server-to-server), если только это не внутрикорпоративные сервера — в таком случае им запрещено связываться с собратьями.

Jabber ID

В ICQ единственным идентификатором служит UIN — номер из пяти-девяти цифр. Короткие номера пользуются спросом, их воруют, ими торгуют. В общем, в их отношении имеет место нездоровый интерес. Так возникает серьёзный риск лишиться своего номерка из-за чьего-то желания компенсировать собственные комплексы. Наконец, запоминать UINы, если в них нет повторя.щихся цифр, совсем непросто.

Идентификатор пользователя в Jabber называется Jabber ID (или JID, «джид»). По структуре он подобен адресам электронной почты. Сначала идёт имя пользователя на конкретном сервере, затем знак «@» и имя сервера: например, ваш покорный слуга завёл себе аккаунт ilya на собственном сервере с доменным именем roubtsov.name, отсюда получился Jabber ID ilya@irubtsov.ru. А у извечного героя шуток JID мог бы иметь вид vasya@pupkin.ru, заимей он домен pupkin.ru. Это, кстати, даёт возможность иметь джаббер-аккаунт и почтовый ящик с полностью идентичными адресами.

Транспорты

Для того, чтобы не терять связь с друзьями, которые менее продвинуты в выборе IM-сервиса, существуют так называемые транспорты — это гейты, шлюзы в другие сервисы. Транспорты избавляют от необходимости использования мультипротокольных клиентов или нескольких отдельных клиентов под разные протоколы — всё общение ведётся через Джаббер и только через него. В данном случае ICQ-друзья имеют в вашем контакт-листе (он, кстати, называется в ростер) виртуальные JID вида 12345678@icq.myjabberserver.ru.

Увы, транспорты есть далеко не на каждом сервере. Погуглив, можно без труда найти нужный транспорт на другом сервере, но следует быть готовым к тому, что транспорт работает только для своих — для пользователей того же сервера. Напоследок стоит помолиться о скорейшей смерти ICQ.

Ресурсы

Очень интересна такая особенность работы в Jabber, как использование нескольких клиентов одновременно. Ситуаций, когда это может оказаться полезным, море. Суть в том, что когда вы встаёте из-за компьютера и уползаете валяться на диване с телефоном, вовсе не обязательно выключать Jabber на компьютере. В ICQ система примитивна: под одним UINом может быть подключен только один клиент. Если появляется второй, то первый вылетает. В Jabber можно быть онлайн хоть со всех имеющихся устройств одновременно, а различаются они по имени так называемого ресурса. Его принято указывать после JID: например, ilya@irubtsov.ru/Home — ресурс Home у меня прописан на домашнем компьютере.

Разумен вопрос: а как сервер узнает куда ему доставлять входящие сообщения? Для решения проблемы выбора введено понятие приоритета. Каждый клиент (ресурс) сам устанавливает свой приоритет. Например, для настольного компьютера это будет 10, а для телефона — 20. Входящее сообщение придёт на тот ресурс, чей приоритет выше. То есть при выходе в Jabber с телефона он становится главным и сообщения направляются ему. Некоторые программы-клиенты умеют динамически менять свой приоритет по ситуации — если статус вручную или через заданный период неактивности стал «Ушёл», то и приоритет соответственно опускается.

При всём этом некоторые клиенты умеют отправлять сообщения на произвольно, а не автоматически выбранный ресурс. Еще один нюанс: если ведётся беседа с одним ресурсом, то появление другого с более высоким приоритетом скорее всего не изменит пути посланий — сервер даст договорить.

Некоторые Jabber-сервера по каким-то причинам не поддерживают систему приоритетов и шлют сообщения на все подключенные ресурсы. К таким относится, например, Google (см. ниже), хотя это может быть и временным явлением (Гугл — тот еще перфекционист, не может успокоиться и постоянно что-то настраивает-перестраивает).

Создание аккаунта

Переходим к практике. Как я уже сказал, серверов Jabber существует вагон и маленькая тележка. Подавляющее большинство из них будут очень рады новым пользователям. Однако может так статься, что вы уже имеете собственное имя в Jabber-сети.
Ведёте блог на Livejournal.com? Подставьте свой юзернем перед @livejournal.com — и вот ваш Jabber ID. Имеете почтовый ящик в Gmail или Яндекс? Ваш JID совпадает с адресом ящика. Устанавливали клиент QIP Infium? Возможно, вы не заметили, но при первом запуске вы создали себе аккаунт на джаббер-сервере qip.ru (имя пользователя вы вводили самостоятельно и скорее всего это был номер ICQ).

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

Администрировать свой собственный сервер довольно накладно и требует немалых знаний. Можно доверить все хлопоты с этим связанные специализированным компаниям. В России на момент подготовки материала уже было три крупных хостера, предоставляющих подобную услугу: это SpaceWeb (spaceweb.ru), 1Gb.ru и ХЦ РБК (hosting.rbc.ru). Купив у них любой, даже самый дешёвый хостинг, вы получите джаббер-сервер в вашем собственном домене. И если дела с ICQ и дальше так пойдут, то опция Jabber у хостеров станет стандартным пунктом.

Если всё это вам не подходит, то обратитесь, например, на сервер с говорящим адресом www.jabber.ru (регистрация там открыта всегда) или в любимый поисковик с запросом «jabber сервер» - результат приятно удивит обилием.

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

© Илья Рубцов, 2009, специально для Cyberstyle.ru
© Cyberstyle.ru

Комментарии: