Новости раздела

RSS экспорт

Программное обеспечение: 

Содержание:

Instant Messaging – на пути от электронной почты к видеоконференциям. Обзор основных протоколов и клиентов

23.06.2008 00:05 
0

Сегодня большинство пользователей Интернета настолько привыкли к таким вещам,  как электронная почта, веб-пейджеры, видеоконференции, и так далее, что мало кто из активно использующих веб-пейджеры сегодня сможет вспомнить время, когда их, в смысле веб-пейджеров, еще не было в природе, как, впрочем, и видеоконференций. А ведь было это всего лишь пятнадцать лет назад, но, учитывая суровые реалии развития Интернета в нашей стране, самая активная на сегодня часть его пользователей, да и автор этого материала, еще спокойно учились в начальной школе и лишь краем уха слышали о существовании Всемирной паутины. Среди постсоветских сетевиков, использующих dial-up подключение, тогда актуально было общение в fido. Самые продвинутые знали, что такое IRC. И это были, пожалуй, все возможности для on-line общения в то время, не считая форумов и довольно страшных в плане интерфейса чатов. Время шло, но многие так и прообщались в fido года этак до 2003-го, пропустив знаковое событие, произошедшее в ноябре 1996 года, которое во многом изменило представление общественности об удобстве общения в Интернете – израильская компания Mirabilis, основанная четырьмя молодыми программистами, выпускает в свет ICQ. Продукт стал настолько популярным, что уже в мае следующего года количество пользователей ICQ перевалило за миллион, а в 1998 году Mirabilis отрапортовала – каждые 23 дня ICQ приобретает миллион новых пользователей. Естественно, столь успешным детищем не могли не заинтересоваться крупные компании, и в итоге в июне 1998 года все права на ICQ были проданы за смешную на сегодняшний день сумму в 407 миллионов долларов крупнейшему американскому провайдеру America Online. Некоторые считали большим недостатком ICQ закрытость протокола OSCAR, на котором основывалась работа аськи (надеемся, что сленговое обозначение ICQ всем понятно), поэтому во все том же 1998 году Джереми Миллер приступил к разработке открытого протокола, результатом которой стал Jabber – протокол, составляющий на сегодня сильную конкуренцию и даже местами вытесняя протокол OSCAR. В гонку протоколов включились и другие программисты, результатом чего стало множество созданных протоколов и клиентов для них. Некоторые из этих протоколов сегодня живы, некоторые уже нет, а иные даже получили весьма широкое распространение в отдельных странах.  

Сегодня мы рассмотрим особенности работы OSCAR и Jabber, вкратце остановимся на других протоколах, после чего обратим свой взор на то, что использует любой пользователь при обмене быстрыми сообщениями – IM-мессенджеры, называемые также веб-пейджерами. 

Протоколы IM 

Рассмотрение протоколов мы начнем, конечно же, с OSCAR. Именно этот протокол лежит в основе работы популярного мессенджера ICQ.  

OSCAR 

OSCAR – это, как вы, наверное, догадались, аббревиатура Open System for CommunicAtion in Realtime, что можно перевести, как "Открытая система для взаимодействия в реальном времени". Стоит заметить, что ICQ изначально основывалась не на протоколе OSCAR – она работала на основе протокола UDP, который был не очень надежным. Но к моменту покупки ICQ у America Online (AOL) была своя программа обмена мгновенными сообщениями - AOL Instant Messenger, работа которого основывалась на протоколе TCP. Но так как AOL требовался унифицированный протокол, родился OSCAR, за основу которого был взят TCP. Однако не все так просто – передача файлов в этом протоколе реализована посредством UDP.  

Хватит истории – взглянем все же на особенности работы протокола OSCAR. Ключевым здесь является то, что для идентификации пользователей используются специальные личные номера - UIN'ы, что даже удобнее, чем использовать привязку к какому-то персональному имени пользователя – юзер волен выбрать себе любое имя, хоть Вася, пускай их уже и десятки тысяч. А как вяжутся UIN'ы с протоколом TCP, спросите вы, ведь этот протокол работает с IP-адресами. Все верно, для этого клиенту приходится подключаться к центральному серверу, который и запоминает его IP. Также сервер хранит информацию о вашем статусе пользователя, и после запросов других пользователей им передается ваш IP-адрес и статус, после чего общение ведется напрямую, минуя сервер. Если же миновать сервер не получается, то есть пользователь на другом конце провода по каким-то причинам оказывается недоступен, ваше сообщение отправляется на сервер, который и передает его вашему собеседнику после его подключения. 

Instant

Ключевыми понятиями ICQ являются статус и список контактов. Статус фактически являет ваше состояние в текущий момент времени и передает его всем пользователям, UIN'ы которых содержатся в вашем списке контактов. Аналогично вам передается статус пользователей, в списках контактов которых содержится ваш идентификационный номер.  

Несколько углубимся в то, как реализована передача данных в протоколе OSCAR. Вся информация, которой обмениваются клиент и сервер, упаковывается в так называемые FLAP-пакеты. Каждый из них имеет обязательные поля: Command Start, Channel ID, Sequence Number, Data Length и Data. Command Start имеет длину один байт - это заголовок пакета. Channel ID - идентификатор канала, который обозначает разные виды каналов, к которым может относиться пакет, будь то канал соединения или канал данных и т.д. Чаще всего это именно канал данных. Длина этого поля также один байт. Sequence Number - это анахронизм, оставшийся от UDP, когда порядковый номер пакета с каждым следующим посланным пакетом увеличивался на единицу для обеспечения целостности передаваемых данных, что сегодня делает за нас TCP. Data Length - длина поля данных. Data – это просто передаваемые данные, длина произвольная, но ограниченная двумя байтами.  

Процесс работы с ICQ начинается с коннекта к серверу login.icq.com через порт 5190. Сервер принимает UIN и пароль, передавая FLAP-пакет со значением Data, равным единице.  

В ICQ используется формат записи данных TLV. TLV является аббревиатурой от Type, Length, Value. В TLV упаковываются почти все данные, включая сами сообщения, однако напрямую эти пакеты используются редко. Обычно они упакованы в еще один вид пакетов - SNAC. SNAC-пакеты используются исключительно в канале данных. Внутри этого пакета есть следующие поля: FamilyID (тип Word) – идентификатор типа данных, SubTypeID (Word) - идентификатор подтипа, Flags[0] и Flags[1] (byte) - служебные флаги, RequestID (dword) - идентификатор запроса и SNACData (произвольная длина) - сами данные.  

Следовательно, SNAC-пакет записывается в поле Data FLAP-пакета, а FLV-пакет – в поле Data SNAC-пакета. 

Как видим, структуру данных, передаваемых по протоколу OSCAR, особо простой не назовешь. А если начать углубляться дальше, окажется, что все еще сложнее: каждой возможной комбинации FamilyID и SubTypeID для SNAC-пакетов соответствуют разнообразные вложенные FLV-пакеты, которые могут быть разными даже для одинаковых SNAC'ов. Поэтому, пожалуй, прекратим углубляться в дебри протокола OSCAR, т.к. дальнейшее рассмотрение будет интересно, наверное, лишь программистам, желающим написать собственный клиент – большинство пользователей, скорее всего, уже успело запутаться и в приведенной информации. 

До 2008 года протокол OSCAR оставался открытым, и лишь в марте текущего года AOL  в рамках проекта Open AIM 2.0 открыла его полные спецификации, но с условием: Open AIM можно использовать для построения клиентских приложений только при соблюдении любых двух условий из списка:  

  • обеспечить показ рекламы;
  • указать ссылку на страницу установки AIM Toolbar;
  • показывать аватары пользователя со ссылкой на страницу изменения картинки.
  • показывать блок информации о пользователе;
  • показывать стартовую страницу AIM. 

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

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

Jabber 

История этого протокола, как мы уже писали выше, началась в 1998 году с разработки Джереми Миллером сервера Jabberd. Вскоре к проекту присоединились еще несколько разработчиков, которые стали работать над сервером Jabberd, клиентами Jabber для Windows и GNU/Linux, а также шлюзами в основные системы IM (AIM, ICQ, MSN, и Yahoo). Позже, в 1999 году, у разработчиков появились спонсоры, что ускорило процесс создания проекта. В то время появилась основа протокола Jabber, а также сервер Jabberd и ранние клиенты, такие, как WinJab, который получил развитие в Exodus, и Gabber. Этот ранний период постоянных изменений закончился в мае 2000-го с выпуском Jabberd 1.0.

Instant

С тех пор протокол Jabber продолжает развиваться (с августа 2001-го под контролем Jabber Software Foundation). Например, в 2003 году было, по крайней мере, четыре реализации сервера, несколько библиотек для немалого количества языков программирования, клиенты Jabber для многих платформ Amiga до Microsoft Windows

Как же работает Jabber, название которого переводится, как болтовня?  Jabber основан на протоколе XMPP, в основе которого лежит язык XML. У него имеется поддержка шлюзов в другие IM-сети, однако их реализация зависит от конкретного Jabber-сервера и подвержена нестабильности из-за закрытости коммерческих IM-сервисов. Семейство протоколов Jabber принято как стандарт RFC. Стандартный порт для Jabber — 5222. Также возможно использовать порт 80 и/или 443, если возникают проблемы с фаерволом. 

Подробно работу протокола иллюстрирует следующий рисунок: 

Instant

Адресация в Jabber происходит следующим образом: каждый пользователь имеет уникальный идентификатор, адрес — Jabber ID (JID). Во избежание необходимости существования сервера с полным списком всех адресов, JID, подобно адресу электронной почты, содержит имя пользователя и DNS-адрес сервера, на котором зарегистрирован пользователь, разделенные знаком "@". Например, пользователь Andrey, зарегистрированный на сервере tech-labs.ru, будет иметь следующий адрес (JID): Andrey@tech-labs.ru

Пользователь также может подключаться, находясь в разных местах - сервер позволяет определять дополнительное значение, называемое ресурсом, которое идентифицирует клиента пользователя в данный момент. Так можно включить в адрес пользователя (JID) имя его ресурса, добавив через слэш в конце адреса. К примеру, пусть полный адрес пользователя будет Andrey@tech-labs.ru/office, тогда сообщения, посланные на адрес Andrey@tech-labs.ru, дойдут на указанный адрес вне зависимости от имени ресурса, но сообщения для Andrey@tech-labs.ru/office дойдут на указанный адрес только при соответствующем подключенном ресурсе ("/office" в терминологии Jabber и именуется ресурсом). Проще говоря, если автор данного текста оставляет Jabber-клиента включенным дома и, приезжая в офис, включает рабочую машину, которая в сети идентифицируется, как Andrey@tech-labs.ru/office, то все сообщения придут на машину, приоритет которой выше. В целом весьма грамотная реализация.

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

Стоит, наверное, указать преимущества, которыми, по мнению большинства, обладает Jabber перед коммерческими системами IM:

  • открытость: протокол Jabber открыт, общедоступен и достаточно легок для понимания; существует множество реализаций серверов и клиентов, а также библиотек с открытым исходным кодом;
  • расширяемость: с помощью пространств имен в XML можно расширить протокол Jabber для выполнения требуемых задач и для обеспечения поддержки взаимодействия между различными системами. Общие расширения разрабатываются под контролем Jabber Software Foundation;
  • децентрализованность: кто угодно может запустить свой собственный сервер Jabber, что позволяет организациям и частным лицам заниматься любыми экспериментами с IM;
  • безопасность: любой сервер Jabber может быть изолирован от общедоступной сети Jabber, многие из вариантов реализации сервера используют SSL при обмене между клиентом и сервером, и немало клиентов поддерживают шифрование с помощью PGP/GPG внутри протокола.
  • Jabber удовлетворяет многие потребности частных лиц и организаций. Но важно понимать, что он не является универсальным решением всех задач. В частности, Jabber не является:
  • универсальным чат-клиентом для различных систем IM — несмотря на множество клиентов Jabber под различные платформы, они не предоставляют таких возможностей по взаимодействию с различными системами IM, которые обеспечиваются программами Miranda IM, Trillian или Gaim: вместо этого взаимодействие между Jabber и другими системами осуществляют шлюзы, расположенные на стороне сервера;
  • универсальным решением проблем взаимодействия с различными IM-системами – некоторые сервера Jabber предоставляют возможность взаимодействия с другими системами IM через шлюзы, которые транслируют протокол Jabber в протокол этих систем; однако только от самих систем зависит осуществление взаимодействия (к чему они подчас не стремятся и даже наоборот);
  • единообразной IM-системой, созданной одной компанией – Jabber-cообщество не монолитно; напротив, существует большой набор общедоступных и закрытых серверов Jabber, проектов с открытым кодом, компаний по разработке ПО, использующих протокол Jabber.

Таким образом, в этом протоколе наблюдается некоторое сходство с IRC, не находите? В плюсы Jabber можно отнести и отсутствие проблем с кодировками, так как в нем реализована полноценная поддержка Unicode, а также отсутствие лимита на размер передаваемого сообщения – вам гарантируется, что сообщение размером до 64 килобайт будет передано, но реальный максимум размера сообщения неизвестен. Есть и несколько минусов, таких как отсутствие поиска юзеров ввиду децентрализованности сети и в связи с этим же проблемы с восстановлением забытых паролей. Но вы поймете, что это мелочи, если внимательно прочитаете лицензионное соглашение о подключении к ICQ. Там вы найдете строки следующего содержания (дословно): "При отправке или рассылке документов, информации или иных материалов ("Материалы") в ICQ или при направлении информации, вводимой в различные указатели и инструментарии ICQ, и любых сообщений на доске сообщений ICQ вы (1) гарантируете, что не обладаете никакими правами в отношении Материалов, и на основании имеющейся у вас информации никакая сторона не имеет никаких прав на эти Материалы; (2) предоставляете ICQ неограниченное, бессрочное, неотзывное разрешение использовать, воспроизводить, демонстрировать, исполнять, адаптировать, изменять, передавать и распределять Материалы с использованием всех средств аудиовизуальной информации; и (3) соглашаетесь, что ICQ свободна в использовании любых идей, ноу-хау, концепций, методов или иных материалов, которые отправлены вами в связи с любой целью." Более того, ICQ снимает с себя всякую ответственность за то, что передаваемые данные могут быть каким-то образом украдены или просмотрены другими пользователями. Не самый приятный факт, согласитесь. Jabber лишен данного ограничения.

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

Меню раздела

Рекомендуем

Программное обеспечение

Sysmark 2012: BAPCO снова в деле после длительного перерыва

Первые впечатления от использования Windows 8

3D Mark'11. Теперь и с DirectX 11

"Собери свой браузер". Обзор дополнений к браузерам Google Chrome, Firefox, Opera и IE

NEW: программы за неделю #01'10

Выбираем замену Internet Explorer, или Обзор интернет-браузеров для операционной системы Microsoft Windows

Основы криптографической защиты личной информации

"Учесть все", или обзор ПО для учета компьютеров на предприятии Hardware Inspector Client/Server

Тестирование программы GPS/ГЛОНАСС навигации АВТОСПУТНИК

Обзор программного обеспечения для флеш-накопителей Kingston

Толку – ноль, или Самые бесполезные программы

Windows 7: изучаем пре-бета-версию

"Все системы работают нормально!", или Обзор утилиты Notebook Hardware Control 2.0 Personal Edition

Сравнительный обзор софтверных видеоплееров

Обзор виртуальной машины Parallels Workstation 2.2

Карта сайта1 . Карта сайта2 . Карта сайта3 . Карта сайта4 . Карта сайта5 . Карта сайта6 . Карта сайта7 . Карта сайта8 . Карта сайта9 . Карта сайта10 . Карта сайта11 . Карта сайта12 . Карта сайта13 . Карта сайта14 . Карта сайта15 . Карта сайта16 . Карта сайта17 . Карта сайта18 . Карта сайта19 . Карта сайта20 . Карта сайта21 . Карта сайта22 . Карта сайта23 . Карта сайта24 . Карта сайта25 . Карта сайта26 . Карта сайта27 . Карта сайта28 . Карта сайта29 . Карта сайта30 . Карта сайта31 . Карта сайта32 . Карта сайта33 . Карта сайта34 . Карта сайта35 . Карта сайта36 . Карта сайта37 . Карта сайта38 . Карта сайта39 . Карта сайта40 . Карта сайта41 . Карта сайта42 . Карта сайта43 . Карта сайта44 . Карта сайта45 . Карта сайта46 . Карта сайта47 . Карта сайта48 . Карта сайта49 . Карта сайта50 . Карта сайта51 . Карта сайта52 . Карта сайта53 . Карта сайта54 . Карта сайта55 . Карта сайта56 . Карта сайта57 . Карта сайта58 . Карта сайта59 . Карта сайта60 . Карта сайта61 . Карта сайта62 . Карта сайта63 . Карта сайта64 . Карта сайта65 . Карта сайта66 . Карта сайта67 . Карта сайта68 . Карта сайта69 . Карта сайта70 . Карта сайта71 . Карта сайта72 . Карта сайта73 . Карта сайта74 . Карта сайта75 . Карта сайта76 . Карта сайта77 . Карта сайта78 . Карта сайта79 . Карта сайта80 . Карта сайта81 .