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

в 9:44, , рубрики: ICQ, mail.ru, Блог компании Mail.Ru Group, Системы обмена сообщениями, технологии, эволюция
ICQ: 20 лет — не предел - 1

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

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

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

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

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

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

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

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

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

Протокол 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 и порты друг друга клиенты получали от сервера.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Помимо всего перечисленного, на сегодняшний день в ICQ реализованы:

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

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

Автор: Mail.Ru Group

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js