Служба общения ICQ ХГТУ
Windows koi-8 iso dos
Что такое ICQ
Новости
Получение/установка
Регистрация
Настройка клиента
Как пользоваться ICQ
WWW пэйджинг
Техническая информация
Частые вопросы
[Unix]
Гостевая книга



1.1. Принципы работы системы ICQ (клиент-сервер)

Служба общения ICQ состоит из двух частей - клиента и сервера. Соединение между ними устанавливается при помощи стека протоколов TCP/IP. Используются UDP соединение и TCP соединение. Связь между сервером и клиентом осуществляется при помощи UDP пакетов по протоколу компании Mirabilis Vx, где x - номер версии протокола. Между собой (передача сообщений, файлов, ссылок) клиенты работают по протоколу TCP.

1.2. Связь клиент-сервер

В университетской службе общения ICQ в основном используется протокол компании Мирабилис V3 (а также протоколы v5 и OSCAR v7/v8/v9) и в дальнейшем речь будет идти именно о нем. В настоящее время последней версией протокола является OSCAR/V9 - информацию о нем можно получить здесь.

Информацию по устаревшей версии v5 (а также о версиях 2,4) вы можете найти в следующих документах, взятых на сервере разработчиков клонов icq (http://www.mscom.ru/~sophocles/icq/): icq091.txt (eng), icqcurs.htm (rus), v5-encryption.txt (eng). А также фрагмент текста программы, расшифровывающей UDP пакет версии V4: decode-v4.c

V-протокол состоит из 2-ух частей: ответы сервера и запросы клиента. В целом схема выглядит следующим образом: При запуске клиент посылает UDP пакет, содержащий номер пользователя, пароль, IP адрес и порт TCP а также информацию о версии клиента, сервер в ответ высылает пакет подтверждения. Если все данные, указанные в пакете, верны, то сервером создается пакет успешной регистрации. Кроме того всем пользователям, у которых пользователь с таким номером есть в списке высылается уведомление о регистрации в сети ICQ. Далее клиент должен передать серверу свой список пользователей. После того как это сделано, сервер будет сообщать обо всех изменениях статуса этих пользователей. Клиент ДОЛЖЕН каждые 45 секунд высылать пакет "PING" сигнализируя о присутствии в сети. На каждый полученный пакет ДОЛЖЕН высылаться пакет подтверждения. Если сервер не получает подтверждения, то через некоторое время он повторяет передачу. Также обстоит дело и с клиентом. После установления соединения требуется лишь регулярно отсылать пакет присутствия в сети.

1.3. Формат пакета UDP протокола V3

03 00// Версия протокола
xx xx// Команда (идентификатор пакета)
xx xx// Номер пакета (используется при подтверждении)
xx xx// Номер команды (в команде PING = 0)
xx xx xx xx// Intranet UIN (номер) пользователя
00 00 00 00// Зарезервировано (скорее всего для "двойных" клиентов под Internet UIN)
xx*n// Данные (зависит от иентификатора пакета) Переменная длинна

Форматы пакетов клиента и сервера совпадают.

1.4. Команды (запросы) клиента (список не полный)

E8 03 - Запрос на регистрацию в сети ICQ 
0a 00 - Подтверждение приема пакета
4с 04 - Запрос на получение отложенных системных сообщений
04 06 - Закончить посылку отложенных системных сообщений
28 05 - Неизвестный пакет (отсылается клиентом нерегулярно)
06 04 - Передать на сервер список контактов (contact list)
2e 04 - Уведомление сервера о присутствии в сети (ping)
38 07 - Послать системное текстовое сообщение 
	(обычно при отключении)
fa 05 - Запросить информацию о пользователе
0e 01 - Послать системное сообщение online версия (сообщение 
        посланное через сервер; ссылка, посланная через сервер, 
        уведомление о добавлении в список контактов, авторизация)
c8 05 - Поиск пользователя в базе данных сервера.
3c 05 - Добавление пользователя в список контактов.
d8 04 - Сменить свой статус.
5e 01 - Неизвестный пакет.
aa 05 - Получить адрес/порт пользователя.

1.4.1. (E8 03) Запрос на регистрацию в сети ICQ

xx xx 00 00		// Порт клиента (2 байта расширяются до 4)
xx xx		// Длина пароля (включая 00)
Пароль + 00	// Пароль + 00 (ASCIIZ переменной длинны)
7A 00 02 00		// Константа - версия клиента
xx xx xx xx		// IP адрес клиента
04		// Заполнитель
xx xx xx xx		// Статус пользователя
02 00 00 00		// Константа
00 00 00 00		// Константа
03 00 7A 00		// Версия клиента.

1.4.2. (0a 00) Подтверждение приема пакета (полностью весь пакет)

03 00		// Версия протокола
xx xx		// Номер подтверждаемого пакета
00 00		// Константа
xx xx xx xx		// UIN Пользователя
00 00 00 00 	// Резерв

1.4.3. (4c 04) Запрос на получение отложенных системных сообщений

Поле данных отсутствует.

1.4.4. (04 06) Закончить посылку отложенных системных сообщений

Поле данных отсутствует.

1.4.5. (2e 04) Уведомление сервера о присутствии в сети (ping)

Поле данных отсутствует (должна посылаться на сервер каждые 45 секунд При задержке сервер принудительно переводит пользователя в режим offline. Для смены статуса требуется повторная регистрация).

1.4.6. (28 05) Неизвестный пакет (отсылается клиентом нерегулярно)

01 или ff		// Назначение неизвестно

1.4.7. (38 07) Послать системное текстовое сообщение

Нет данных.

1.4.8. (fa 05) Запросить информацию о пользователе

xx xx xx xx		// Вероятно случайное значение.
xx xx xx xx		// UIN пользователя по которому  
		// запрашивается информация.

В ответ сервер посылает 4 пакета. В первом содержится базовая информация. В остальных расширенная - Адрес, Работа и пр.

1.4.9. (0e 01) Послать системное сообщение, online версия

Эта команда используется для посылки системных сообщений (таких как сигнал о добавлении пользователя в список контактов), тестовых сообщений и ссылок через сервер (при невозможности прямого соединения). В пакете содержится двубайтовая поле для распознавания различных видов команды:

0x0001 - Сообщение, посылаемое через сервер.
0x0004 - Ссылка, посылаемая через сервер.
0x0006 - Запрос на авторизацию.
0x0008 - Авторизация пользователя.

Формат поля данных - общий для всех подкоманд:

   
3b 04		// Неизвестно - константа
00 00		// Резерв
xx xx 		// Подкоманда (см выше)

При посылке сообщений и ссылок следующие поля такие:

 
xx xx 		// Длина сообщения
xx*n 		// Само сообщение

При авторизации или запросе - следующие 4 байта - UIN пользователя.

1.4.10. (3c 05) Добавление пользователя в список контактов

Информирует сервер о добавлении пользователя в список контактов. Поле данных содержит UIN добавляемого пользователя. (4 байта)

1.4.11. (d8 04) Сменить свой статус

Поле данных содержит новый статус (4 байта) возможные варианты статуса такие:

00 00 00 00 - online    (пользователь доступен)
01 00 00 00 - away	   (пользователь отошел от компьютера)
11 00 00 00 - DND	   (не беспокоить)
00 01 00 00 - Invisible (пользователь в скрытом режиме)

1.4.12. (aa 05) Получить адрес/порт пользователя

Поле данных содержит UIN этого пользователя. (4 байта)

1.4.13. (c8 05) Поиск пользователя в базе данных сервера

ff xx 00 xx		// Вид поиска.
xx xx		// Длина строки (включая 0)
xx*n		// Строка ASCIIZ (именно по ней 
		// и ведется поиск)

Вид поиска: во втором байте указывается тип поиска. Варианты такие:

0x00 	Поиск по UIN (строка в поле данных 
	представляет собой искомый номер)
0x01	Поиск по NickName (прозвище)
0x02	Поиск по First Name (Имя)
0x03	Поиск по Last Name (Фамилия)
0x04	Поиск по Email (почтовый адрес)
0x05	Поиск по Age (возраст)
0x06	Поиск по Bisness City (город по месту работы)
0x07	Поиск по B State (штат)
0x08	Поиск по B Country (страна)
0x09	Поиск по названию компании
0x0a	Поиск по должности
0x0b	Поиск по депертаменту
0x0c	Поиск по Home City (город по месту проживания)
0x0d	Поиск по H State (штат)
0x0e	Поиск по H Country (страна)

Режим поиска: 4-ый байт (как использовать данную строку для поиска):

0x00 Режим вхождения (содержит ли имеющаяся строка искомую строку)
0x01 Режим невхождения (обратный)
0x02 Режим равенства (Is)
0x03 Режим неравенства (Isn't)
0x04 Текущая строка начинается с искомой строки
0x05 Текущая строка кончается на искомую строку

В ответ на запрос сервер отсылает столько пакетов с базовой информацией о пользователе сколько пользователей будет найдено.

1.5. Ответы сервера (список не полный)

Вверх

Что такое ICQ  |  Новости  |  Получение/установка  |  Регистрация
Настройка клиента  |  Как пользоваться ICQ  |  WWW пэйджинг
Техническая информация  |  Частые вопросы  |  [Unix]  |  Гостевая книга

Предпочтительное разрешение: 800х600
Дата последнего изменения: 06-Jun-2017 11:26:20
Эскиз, скрипты: А. Шутко; Дизайн: П. Долин.
Email: AVShutko.mail.khstu.ru


Состояние сервера
Состояние сервера:
Дата запуска:
Время запуска:
Всего пользователей:
Online пользователей:
Порт сервера:

Unknown
Unknown
[an error occurred while processing this directive]
[an error occurred while processing this directive]
4000

Восстановление пароля
 

Администрирование
Список администраторов
Стр. администраторов





Настройки пользователя
Изменить свои данные
Разрегистрироваться