summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xPICA_proto.h28
-rwxr-xr-xdoc/proto.txt44
2 files changed, 37 insertions, 35 deletions
diff --git a/PICA_proto.h b/PICA_proto.h
index 5062be9..d6b26bf 100755
--- a/PICA_proto.h
+++ b/PICA_proto.h
@@ -5,7 +5,7 @@
#define PICA_PROTO_VER_HIGH 0
-#define PICA_PROTO_VER_LOW 3
+#define PICA_PROTO_VER_LOW 4
#define PICA_PROTO_VER_STRING PICA_STRINGIFY2(PICA_PROTO_VER_HIGH, PICA_PROTO_VER_LOW)
#define PICA_STRINGIFY2(H, L) PICA_STRINGIFY(H, L)
@@ -55,15 +55,15 @@
#define PICA_PROTO_INITRESPOK_SIZE 4
#define PICA_PROTO_VERDIFFER_SIZE 4
-#define PICA_PROTO_CONNREQOUTG_SIZE 6
-#define PICA_PROTO_CONNREQINC_SIZE 6
-#define PICA_PROTO_NOTFOUND_SIZE 6
-#define PICA_PROTO_CONNALLOW_SIZE 6
-#define PICA_PROTO_FOUND_SIZE 6
-#define PICA_PROTO_CONNDENY_SIZE 6
+#define PICA_PROTO_CONNREQOUTG_SIZE 30
+#define PICA_PROTO_CONNREQINC_SIZE 30
+#define PICA_PROTO_NOTFOUND_SIZE 30
+#define PICA_PROTO_CONNALLOW_SIZE 30
+#define PICA_PROTO_FOUND_SIZE 30
+#define PICA_PROTO_CONNDENY_SIZE 30
#define PICA_PROTO_CLNODELISTREQ_SIZE 4
-#define PICA_PROTO_CONNID_SIZE 10
+#define PICA_PROTO_CONNID_SIZE 58
#define PICA_PROTO_MSGOK_SIZE 4
@@ -81,13 +81,13 @@
#define PICA_PROTO_NODELISTREQ_SIZE 4
-#define PICA_PROTO_SEARCH_SIZE 6
-#define PICA_PROTO_N2NFOUND_SIZE 6
-#define PICA_PROTO_N2NCONNREQOUTG_SIZE 10
-#define PICA_PROTO_N2NALLOW_SIZE 10
-#define PICA_PROTO_N2NNOTFOUND_SIZE 10
+#define PICA_PROTO_SEARCH_SIZE 30
+#define PICA_PROTO_N2NFOUND_SIZE 30
+#define PICA_PROTO_N2NCONNREQOUTG_SIZE 58
+#define PICA_PROTO_N2NALLOW_SIZE 58
+#define PICA_PROTO_N2NNOTFOUND_SIZE 58
-#define PICA_PROTO_N2NMSG_MAXDATASIZE 65524
+#define PICA_PROTO_N2NMSG_MAXDATASIZE 65476
#define PICA_PROTO_C2CMSG_MAXDATASIZE 65532
diff --git a/doc/proto.txt b/doc/proto.txt
index 1390698..cc4fa71 100755
--- a/doc/proto.txt
+++ b/doc/proto.txt
@@ -3,6 +3,8 @@
[Хвост] - остальная часть пакета. Может быть пустым. Имеет либо фиксированную длину, заданную для данного сообщения,
либо содержит в начале 1 или 2 байта, содержащих размер (в виде целого беззнакового числа, порядок байт-младший байт по младшему адресу) остальной части, не включая байты размера
+UH - user hash - SHA224 хэш от сертификата пользователя в DER формате, 28 байт, является идентификатором пользователя
+
Протокол авторизации и пересылки данных (между сервером и клиентом)
+++[запрос на подключение] -клиент
@@ -25,24 +27,24 @@
|КЛИЕНТ-СЕРВЕР|
+++[запрос на установление соединения с собеседником] - клиент, по установленному защищенному соединению
-0x03 0x03 (UIN вызываемого пользователя, в формате little-endian)
+0x03 0x03 (UH вызываемого пользователя)
+++[запрос на разрешение соединения] - сервер, по установленному защищенному соединению
-0x04 0x04 (UIN инициатора, в формате little-endian)
+0x04 0x04 (UH инициатора)
-+++[пользователь с данным UIN не найден (в оффлайне, отказался от разговора)]
++++[пользователь с данным UH не найден (в оффлайне, отказался от разговора)]
- сервер, по установленному защищенному соединению
-0x05 0x05 (UIN вызываемого пользователя, в формате little-endian)
+0x05 0x05 (UH вызываемого пользователя)
+++[разрешение соединения от вызываемого пользователя] -вызываемый клиент, по установленному защищенному соединению
-0x06 0x06 (UIN вызывающего пользователя, в формате little-endian)
+0x06 0x06 (UH вызывающего пользователя)
после отправки данного сообщения вызваемый клиент осуществляет подключение к серверу на порт обмена данными (_DATA_PORT) и отправляет через это соединение сообщение 0x20 -идентификация нового соединения
-+++[пользователь с данным UIN найден и готов общаться] - сервер вызывающему клиенту
-0x07 0x07 (UIN вызываемого пользователя, в формате little-endian)
++++[пользователь с данным UH найден и готов общаться] - сервер вызывающему клиенту
+0x07 0x07 (UH вызываемого пользователя)
+++[отказ от общения]-вызываемый клиент
-0x08 0x08 (UIN вызывающего пользователя, в формате little-endian)
+0x08 0x08 (UH вызывающего пользователя)
+++[запрос списка узлов] - клиент
0x09 0x09 (2 случайных байта)
@@ -53,9 +55,9 @@
Нижеследующие сообщения передаются через соединение сервера с клиентом для передачи данных
+++[идентификация нового соединения] - клиент
-0x20 0x20 (UIN вызывающего пользователя) (UIN вызываемого пользователя)
+0x20 0x20 (UH вызывающего пользователя) (UH вызываемого пользователя)
-сервер при получении данного сообщения проверяет UINы. При несовпадении соединение разрывается. После проверки сервер переходит в режим пересылки данных между двумя клиентами. Вызывающий клиент инициирует установку соединения по протоколу TLS
+сервер при получении данного сообщения проверяет UH-ы. При несовпадении соединение разрывается. После проверки сервер переходит в режим пересылки данных между двумя клиентами. Вызывающий клиент инициирует установку соединения по протоколу TLS
@@ -111,30 +113,30 @@
0x90 0x90 (2 случайных байта)
-+++[поиск клиента] - отправляется всем узлам. Узел-получатель отвечает на это сообщение, только если искомый UIN найден среди локальных клиентов либо в кэше
-0xA5 0xA5 (UIN вызываемого пользователя, в формате little-endian)
++++[поиск клиента] - отправляется всем узлам. Узел-получатель отвечает на это сообщение, только если искомый UH найден среди локальных клиентов либо в кэше
+0xA5 0xA5 (UH вызываемого пользователя)
-+++[результат поиска клиента-клиент найден ] - отправляется узлом, получившим 0xA5, если искомый UIN найден среди локальных подключенных клиентов
-0xA8 0xA8 (UIN вызываемого пользователя, в формате little-endian)
++++[результат поиска клиента-клиент найден ] - отправляется узлом, получившим 0xA5, если искомый UH найден среди локальных подключенных клиентов
+0xA8 0xA8 (UH вызываемого пользователя)
-+++[результат поиска клиента-клиент найден в кэше ] - отправляется узлом, получившим 0xA5, если искомый UIN найден в кэше (т.е есть информация о подключении искомого клиента к другому узлу)
-0xA9 0xA9 (размер - два байта, [13-263] )(UIN вызываемого пользователя, в формате little-endian) (адрес узла, на котором может быть искомый UIN, в формате A0|A1|A2 см. описание 0xA4)
++++[результат поиска клиента-клиент найден в кэше ] - отправляется узлом, получившим 0xA5, если искомый UH найден в кэше (т.е есть информация о подключении искомого клиента к другому узлу)
+0xA9 0xA9 (размер - два байта, [32-287] )(UH вызываемого пользователя) (адрес узла, на котором может быть искомый UH, в формате A0|A1|A2 см. описание 0xA4)
+++[запрос на разрешение соединения c клиентом узла-получателя]
-0xAA 0xAA (UIN инициатора, в формате little-endian) (UIN вызываемого пользователя, в формате little-endian)
+0xAA 0xAA (UH инициатора) (UH вызываемого пользователя)
+++[разрешение соединения от вызываемого пользователя]-отправляется после того, как вызываемый локальный клиент ответил сообщением 0x06 и создал новое соединение для обмена сообщениями
-0xAB 0xAB (UIN инициатора, в формате little-endian) (UIN вызываемого пользователя, в формате little-endian)
+0xAB 0xAB (UH инициатора) (UH вызываемого пользователя)
+++[клиент не найден (в оффлайне, отказался от разговора)]
-отправляется узлом в ответ на сообщение 0xD0, адресованное данному UIN-у,
+отправляется узлом в ответ на сообщение 0xD0, адресованное данному UH-у,
если данный пользователь уже отключился или его нету в списке локальных клиентов,
либо в ответ на 0xAA, если вызываемый клиент отказался от соединения.
-0xB8 0xB8 (UIN инициатора, в формате little-endian)(UIN вызываемого пользователя, в формате little-endian)
+0xB8 0xB8 (UH инициатора)(UH вызываемого пользователя)
+++[сообщение, передаваемое клиентами между узлами]
-0xD0 0xD0 (длина вложенного сообщения в байтах [8 - 65532] , - 2 байта в формате little-endian) (UIN локального пользователя-отправителя) (UIN пользователя на другом узле) вложенные данные
+0xD0 0xD0 (длина вложенного сообщения в байтах [56 - 65532] , - 2 байта в формате little-endian) (UH локального пользователя-отправителя) (UH пользователя на другом узле) вложенные данные
вложенные данные - данные передаваемые через соединение КЛИЕНТ-КЛИЕНТ