Год назад мы вспоминали, как от релиза к релизу Аська подвергалась пластическим операциям и фейслифтингу. Но сегодня юбилей — 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.
Наконец, свежайшие новости из мира технологий ICQ: нейросети теперь позволяют обрабатывать не только фото, но и снятые вами видео. Это делается с помощью интеграции с одним нашим небезызвестным сервисом Artisto.
Помимо всего перечисленного, на сегодняшний день в ICQ реализованы:
- сквозная история переписки: все ваши сообщения доступны на всех устройствах и клиентах, куда вы залогинитесь;
- неограниченные лайвчаты: вы можете создать или присоединиться к любому публичному чату, количество участников в них неограничено;
- короткие голосовые сообщения с преобразованием в текст: вы можете сказать Аське какую-нибудь фразу, она её распознает и преобразует в текстовое сообщение, в основе этой функции лежит та же технология, что и в Siri.
Таков краткий обзор возможностей и технологий за 20 лет развития одного из первых в мире массовых мессенджеров. Надеемся, что ещё через 20 лет мы будем вспоминать что-нибудь совсем фантастическое.
Автор: Mail.Ru Group