ICQ: 20 років — не межа


Рік тому ми згадували, як від релізу до релізу Аська піддавалася пластичних операцій і фейслифтингу. Але сьогодні ювілей — ICQ виповнюється 20 років, це не кіт чхнув! Ось вже ціле покоління виросло разом з прародителькою месенджерів. І в честь такої події ми вирішили подивитися в ретроспективі, які технології застосовувалися в ICQ протягом двох десятиліть.

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



Через рік, до грудня 1997 року, були клієнтські додатки для Windows 3.1 x, 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 user client 
4 Bytes - four These 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. Найближчий родич сучасного мобільного Аськи.



З 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 років ми будемо згадувати щось зовсім фантастичне.
Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.