OSCAR ( Open System for Communication in Realtime ) — это фирменный протокол обмена мгновенными сообщениями и информации о присутствии компании AOL . Он использовался системой обмена мгновенными сообщениями AIM компании AOL и ICQ .
Несмотря на название, спецификации протокола остаются запатентованными. AOL приложила немало усилий, чтобы не дать конкурентам (а именно Microsoft , XMPP и Cerulean Studios) реализовать совместимые клиенты для их запатентованных систем обмена сообщениями. [1] [2] В 2002 году AOL подписала контракт с Apple, Inc. , позволяющий им использовать OSCAR (а также собственные библиотеки кода AOL) в их приложении iChat . Это позволило пользователям iChat напрямую взаимодействовать с пользователями ICQ и AIM. Сделка также позволила пользователям сервиса .Mac от Apple входить в сеть AIM, используя свои адреса электронной почты .Mac. (Это перешло и в сервис MobileMe от Apple .)
По состоянию на 2009 год [обновлять]значительная часть протокола была подвергнута обратному проектированию и внедрена рядом сторонних клиентов.
Протокол OSCAR может использоваться отдельно от сети AOL. Фактически, AOL расширяет общую концепцию OSCAR, добавляя системы для списков и иконок друзей на стороне сервиса, а также функции для передачи файлов с использованием Bonjour .
6 марта 2006 года AOL выпустила AIM SDK и запустила веб-сайт для разработчиков, позволяющий разработчикам создавать плагины для AIM Triton и создавать собственные клиенты, подключающиеся по протоколу OSCAR. Однако на тот момент они не опубликовали никакой информации о самом протоколе.
5 марта 2008 года AOL опубликовала части документации протокола OSCAR. Google также предоставила возможность входа в сеть AIM через встроенный в Gmail клиент Google Talk .
Все пакеты, отправленные через OSCAR, инкапсулируются таким же образом. Все 16-битные целые числа, отправленные по сети, являются беззнаковыми и имеют обратный порядок байтов (см. Порядок байтов .) То же самое касается 32-битных целых чисел и 8-битных целых чисел (или байтов.)
Специальный контейнер Frame Layer Protocol (FLAP [3] ) охватывает каждый пакет. Он несет информацию о размере пакета, канале и его номере в последовательности.
Смещение ( шестнадцатеричное ) | Поле | Тип/Размер (в байтах) | Замечания |
---|---|---|---|
00 | ИДЕНТИФИКАТОР КЛАПАН | байт/1 | Всегда равен 2А. Он обозначает начало пакета. |
01 | Канал | байт/1 | 1 = вход в систему, 2 = уровень SNAC, 3 = ошибка, 4 = отключение |
02 | Номер в последовательности | int16/2 | Увеличивается на 1 каждый раз при отправке пакета. Возвращается к 0 после FFFF. |
04 | Размер данных | int16/2 | Размер не включает заголовок FLAP |
Почти в каждом пакете, отправленном по каналу 2, пакеты содержат SNAC (Simple Network Atomic Communication). В пакете всегда содержится один или ноль таких элементов, и поэтому они не содержат (и не должны содержать) длину.
Смещение ( шестнадцатеричное ) | Поле | Тип/Размер (в байтах) | Замечания |
---|---|---|---|
00 | Группа продуктов питания | int16/2 | Общий тип пакета |
02 | Тип | int16/2 | Конкретный тип пакета |
04 | Флаги | int16/2 | |
06 | Запросить идентификатор | int32/4 | Идентификатор запроса может быть случайным, но клиенты не могут отправлять его с установленным битом наивысшего порядка. |
Язык программирования | Реализации |
---|---|
С | libpurple GnomeICU |
С# | NOscar |
С++ | QOscar (Qt) |
С# 2.0 | ОскарЛиб |
Идти | ретро-целевой-сервер цель-оскар-сервер |
Ява | joscar Instant Messenger Lib daim |
Objective-C | LibOrange |
OCaml | млОскар |
Питон | TwistedWords Архивировано 2011-04-12 в Wayback Machine |
Перл | Нетто::ОСКАР |
PHP | WebIcqPro |