ICQ: 20 лет — не предел

88dfd3edac284cb4b36a101e2ae6688e.jpg

Год назад мы вспоминали, как от релиза к релизу Аська подвергалась пластическим операциям и фейслифтингу. Но сегодня юбилей — ICQ исполняется 20 лет, это не кот чихнул! Вот уже целое поколение выросло вместе с прародительницей мессенджеров. И в честь такого события мы решили посмотреть в ретроспективе, какие технологии применялись в ICQ на протяжении двух десятилетий.

За давностью лет в сети осталось не так много информации о первых годах развития Аськи. Первая версия, выпущенная 15 ноября 1996 года четырьмя израильскими старшеклассниками, была проста, как три рубля. По сути, она могла только обмениваться сообщениями. А подключался клиент к серверу icq.mirabilis.com, к порту UDP 4000.

e879383d23614d51891fbf1d4a09d441.png

Через год, к декабрю 1997 года, имелись клиентские приложения для Windows 3.1x, 95, NT и Macintosh. Общее количество пользователей перевалило за 5 млн, ежедневная аудитория достигла 1,3 млн человек, в онлайне одновременно находилось 300 000 пользователей. Сегодня это кажется смешным на фоне соцсетей и мессенджеров в каждом мобильнике. Но, на минуточку — 1997 год, интернет по диалапу, никакого вам широкополосного доступа, из мобильных гаджетов широкой аудитории пока доступны, в основном, пейджеры.

В 1998 году пользовательская база ICQ каждые три недели увеличивалась на 1 млн человек. Практически взрывной рост аудитории заставлял разработчиков быстро развивать клиент и протокол ICQ. В версии ICQ 98 появилась функция микроблогов, в 98SE — повторная отправка недоставленных сообщений.

ddd11f02b57547f3a38ea2852d03b39a.png

В середине 1998 года Mirabilis была поглощена корпорацией AOL (America Online) за $407 млн.

Только через 2,5 года после своего появления, Аська версии 99а наконец-то обзавелась минимальным джентльменским набором функций: сохранение истории переписки, поиск пользователей, отправка электронных писем, создание групп в списке контактов и так далее.

abb941107308419dac104a50a68e179a.png

Протокол ICQ объединял в себе черты p2p- и клиент-серверной архитектур. Изначально шифрование не использовалось совсем, то есть данные передавались в открытую. Да и вообще первые несколько версий протокола были дырявыми, как решето.

К моменту выхода ICQ 99b в ходу была уже пятая версия протокола. Надо пояснить, что самая первая версия не использовалась в публичных релизах, то есть формально Аська вышла в свет со второй версией протокола. В третьей версии появилась проверка контрольной суммы, пример заголовка пакета:

2 Bytes  - This is the Version of the protocol = 03 00 (Major, Minor) 
2 Bytes  - This is the Function code.  The ones I know are listed below. 
2 Bytes  - First Sequence Code    \ These are usually the same 
2 Bytes  - Second Sequence Code   / 
4 Bytes  - This is the user ID of the client user 
4 Bytes  - These four bytes are ICQ's weak attempt at security: 
           to get these do the following: 
    check1 = ( data[8] << 24) | ( data[4] << 16 ) | ( data[2] << 8 ) | ( data[6] ); 
    offs1 = Random % length;  // offset into packet 
    offs2 = Random % 256;     // offset into magic data 
    check2 = ( offs1 << 24 ) | !( data[offs1] << 16 ) | ( offs2 << 8) | !( magic[offs2] ); 
    check = check1 ^ check2;  // XOR the two checks

В четвёртой версии внедрили шифрование данных:
2 Bytes   - Version Number (not Encrypted) = 04 00 (Major, Minor) 
2 Bytes   - Random number (Not Encrypted) 
  ***** Everything from this point to the 1/4 mark is encrypted ***** 
2 Bytes   - Always 00 00 un-encrypted 
          - Since the key is xored to encrypt - whatever numbers are here 
            are the first 2 bytes of the encryption Key. 
2 Bytes   - Command Code. 
2 Bytes   - First Sequence Code 
2 Bytes   - Second Sequence Code 
4 Bytes   - User ID Number 
4 Bytes   - This is a Checksum. It is calculated the same as above 
          - The packet is encrypted by XORing 1/4 of the packet with a key 
          - The Key is calculated by multiplying the length * 0x66756B65 and 
            adding the check value.

                        1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 
   |       4       |      0        |           RANDOM              | 
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 
        Everything below this point is encrypted 
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 
   |           ZEROS               |           COMMAND             | 
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 
   |          SEQUENCE             |         SECOND SEQUENCE       | 
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 
   |                              UIN                              | 
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 
   |                             CHECK                             | 
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

При установке соединения с сервером, клиент отправлял ему свой IP, TCP-порт, пользовательский пароль и список контактов. Затем клиент подтверждал онлайн-статус и запрашивал статусы всех пользователей из списка. Весь обмен данными с сервером вёлся через UDP.

Для обмена сообщениями с другими людьми, отправки файлов и тому подобного, устанавливалось TCP-соединение клиент-клиент. IP и порты друг друга клиенты получали от сервера.

738f1f3a28f540e7b0d645cb45a274d0.png

Шестая версия протокола, появившаяся в ICQ 2000b, была полностью переработана, шифрование усилили. Благодаря новому протоколу Аська научилась звонить на телефоны, отправлять SMS и пейджинговые сообщения. Также пользователи получили возможность отправлять запросы на добавление в список контактов к другим пользователям.

0ad71cda522f4ce2b2049f991d3ed387.png

В 2002 году AOL запатентовала протокол OSCAR. Все пересылаемые через этот протокол пакеты одинаково инкапсулируются в контейнеры FLAP, содержащие информацию о размере пакета, канале и порядковом номере в последовательности пакетов. Сегодня этот протокол уже давно не используется, вместо него применяется WIM.

Следующей вехой стало появление в 2004 году первой мобильной версии ICQ, созданной под Symbian S60. Хотя, справедливости ради, ещё с 1998 года существовала бета-версия под Palm OS. Кто из вас помнит — и знает — такие наладонники?

f02ce0df0bea48d09961cd5022ad0e33.jpg

В следующем году со стапелей спустили пятую версию настольного клиента. Теперь пользователи смогли устраивать голосовые чаты, то есть Аська стала ещё более универсальным мессенджером. А в версии 5.1 функция голосовой связи была улучшена с помощью технологии Global IP Solutions.

14bc3390db0040e9b550fc8b9a5b2edc.png

В 2007 году выходит ICQ 6, интерфейс которой сделан на «фирменном» AOL’овском XML/CSS-движке Boxely.

a3fbc1ed33834b869bce53226c6a057e.png

В 2009 году появилась ICQ под Windows Mobile. Ближайший родственник современной мобильной Аськи.

6e1aafbe259e47e081e6ba75cbf8dbec.png

C 2007 по 2010 годы ICQ практически не развивалась, AOL её забросила. В 2010 году Аська была приобретена Mail.Ru Group, и уже в январе 2011 вышла 7-я версия, в которой появилась интеграция с Facebook, Twitter, Gmail, Youtube, Flickr и Почтой Mail.Ru.

908f8ac24d784c52ad0b95a31e5b4aab.png

Дальше изменения начали сыпаться одно за другим. Начиная с версии 7.7 в аську стало можно входить не по UIN, а по номеру телефона. Прощайте, шестизнаки, за которые когда-то платили хорошие деньги! Также теперь можно было подключиться с одним аккаунтом на мобильном и настольном клиентах. А чуть позже прикрутили функции отправки фото и видео друзьям с телефона и Facebook.

В марте 2012 Аська официально была избавлена от рекламы. Вообще.

В конце 2012 года вышла ICQ 8, в которой появилась возможность звонить на мобильные и городские номера. К слову, среди разработчиков ICQ сегодня имеется собственная команда, работающая над VoIP: благодаря ей удалось не только перейти с GIPS на WebRTC, но и сильно проапгрейдить его, фактически создав новый движок. Также появилась интеграция с российскими соцсетями — ВКонтакте и Одноклассниками. В следующих релизах улучшена функция отправки файлов, появился информатор погоды.

8f6b364a69d64b39a9771b346bca137d.png

С 2014 года начались глобальные изменения в ICQ: вышли совершенно новые приложения под разные платформы, новый протокол, новые возможности и новый пользовательский интерфейс, открытый исходный код. В майской версии в этом году ICQ впервые в мире среди мессенджеров обзавелась сквозным шифрованием голосовых и видеозвонков. За это отвечает протокол ZRTP, он не позволяет расшифровывать данные ни на серверах ICQ, ни на стороне провайдера.

e8b9083bc48e47bcaff77be5b4808eda.png

Июль 2016 — появилась функция «Истории». Теперь можно делать крохотные видеоролики или подборки фотографий, которые ваши друзья и подписчики могут посмотреть в общей ленте в течение 24 часов после создания. Естественно, доступны репосты и комментарии.

В августе 2016 в Аське появился встроенный редактор, позволяющий добавлять различные эффекты в фотографии и видеоролики, включая тексты, узоры и стикеры. Более того, программа анализирует координаты при съёмке, и сама предлагает вариант тематического бейджа.

c96badc40a8b45acbb63ef363f18afc6.png

Также, впервые среди мессенджеров, ICQ интегрировали с нейросетями, которые позволяют в один клик обработать снятую фотографию в одном из пары десятков изобразительных стилей. Эта функциональность реализована с помощью API мобильного приложения Vinci.

141824d9ae82406292e49d0aee185ef3.jpg

6cba423169184fa39c2e1b9e31612c52.jpg

В сентябре этого года появилась функция наложения двух- и трёхмерных масок при общении в видеочате. Приложение в реальном времени анализирует изображение с вашей камеры и налету адаптирует маску под положение головы и мимику. За распознавание лиц отвечает технология компании VisionLabs.
027ba87418a64477bcc96734621bcfd7.jpg

Наконец, свежайшие новости из мира технологий ICQ: нейросети теперь позволяют обрабатывать не только фото, но и снятые вами видео. Это делается с помощью интеграции с одним нашим небезызвестным сервисом Artisto.
9b171f261afb46a3a368057177f8a15d.gif

Помимо всего перечисленного, на сегодняшний день в ICQ реализованы:
  • сквозная история переписки: все ваши сообщения доступны на всех устройствах и клиентах, куда вы залогинитесь;
  • неограниченные лайвчаты: вы можете создать или присоединиться к любому публичному чату, количество участников в них неограничено;
  • короткие голосовые сообщения с преобразованием в текст: вы можете сказать Аське какую-нибудь фразу, она её распознает и преобразует в текстовое сообщение, в основе этой функции лежит та же технология, что и в Siri.

Таков краткий обзор возможностей и технологий за 20 лет развития одного из первых в мире массовых мессенджеров. Надеемся, что ещё через 20 лет мы будем вспоминать что-нибудь совсем фантастическое.

Комментарии (7)

  • 15 ноября 2016 в 12:50

    +2

    Ей еще кто то пользуется? 126 мертвых контактов, специально зашел, проверить.
    • 15 ноября 2016 в 12:53

      0

      Ну вот я пользуюсь. Свои задачи выполняет. Претензий нет. Клиенты есть под разные платформы (мне одной винды мало).
      Некоторое время поддерживал ещё и свой jabber-сервер, но потом плюнул на это дело.
    • 15 ноября 2016 в 13:00

      0

      Недавно зашел в свою древюю jabber-учетку, в которой был подключен ICQ-транспорт и там пара контактов в онлайне висели… фиг знает что они там делают)

  • 15 ноября 2016 в 12:51 (комментарий был изменён)

    +3

    ICQ со своей огромной пользовательской базой и историей умудрилась проиграть гонку WhatsApp, Viber и остальным. И все потому, что в какой-то момент управленцы не смогли правильно выстроить вектор развития мессенджера: забили под завязкой рекламой официальный клиент, не вкладываясь в развитие.
    Теперь только и остается писать про историю.
  • 15 ноября 2016 в 12:56 (комментарий был изменён)

    0

    Спасибо, понастальгировал по эпохе ICQ 5
    Помниться, лет 10–12 назад у меня был сайт по украшениям всяким для ICQ (скины, звуковые схемы, смайлы и пр.).
    Казалось, что она будет вечной, но реклама, отсутствие банального функционала предлагаемого другими месседжерами в скором времени погубило ее.
    А вот, если бы во время спохватились — она бы мне кажется и была бы месседжером №1 и сейчас
    Сейчас, я даже UIN свой вспомнить не могу.
  • 15 ноября 2016 в 12:59 (комментарий был изменён)

    0

    Сижу все еще на своей крыске уже как лет 10:)
    админ andrq
  • 15 ноября 2016 в 13:01

    0

    Скайп всегда был монстром заточеным на «большого» брата. А с выкупом их MS вообще и ПК загибаются под гнетом высоких технологий и говнокода.
    ICQ проиграла по похожей причине. Viber изначально был для мобильного устройства, а ПК версия как дополнительная. ICQ иначе. Сейчас мобильный клиент ничего так, но время упущено, аудитории нет. Мне нравилось что ICQ можно было всегда выключить. А вайбер — это нужно постаратся. А потом привыкли.

© Habrahabr.ru