Pull to refresh
VK
Building the Internet

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

VK corporate blog Instant Messaging *

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

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



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

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


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

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



Протокол 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 2000b, была полностью переработана, шифрование усилили. Благодаря новому протоколу Аська научилась звонить на телефоны, отправлять SMS и пейджинговые сообщения. Также пользователи получили возможность отправлять запросы на добавление в список контактов к другим пользователям.



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

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



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



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



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



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



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

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

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



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



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

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


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




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

gif
image


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


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

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

Таков краткий обзор возможностей и технологий за 20 лет развития одного из первых в мире массовых мессенджеров. Надеемся, что ещё через 20 лет мы будем вспоминать что-нибудь совсем фантастическое.
Tags:
Hubs:
Total votes 87: ↑72 and ↓15 +57
Views 33K
Comments 168
Comments Comments 168

Posts

Information

Website
vk.com
Registered
Founded
Employees
5,001–10,000 employees
Location
Россия
Representative
Миша Берггрен