summaryrefslogtreecommitdiffstats
path: root/doc
diff options
context:
space:
mode:
Diffstat (limited to 'doc')
-rwxr-xr-xdoc/proto.txt30
1 files changed, 20 insertions, 10 deletions
diff --git a/doc/proto.txt b/doc/proto.txt
index e8a99ad..53c13c5 100755
--- a/doc/proto.txt
+++ b/doc/proto.txt
@@ -47,7 +47,7 @@ UH - user hash - SHA224 хэш от сертификата пользоватеÐ
0x08 0x08 (UH вызывающего пользователя)
+++[запрос списка узлов] - клиент
-0x09 0x09 (2 случайных байта)
+0x09 0x09 (2 псевдослучайных байта)
+++[список узлов] - сервер
0x0A 0x0A -- см формат 0xA4
@@ -67,27 +67,37 @@ UH - user hash - SHA224 хэш от сертификата пользоватеÐ
0xCC 0xCC Ver_major Ver_minor - версия протокола клиента
варианты ответа - 0x01,0x02
-+++[анонс адреса клиента]
++++[список прямых адресов клиента]
+0x0B 0x0B -- см формат A4
0xA0, 0xA1, 0xA1 - аналогично сообщениям n2n
-Если клиент настроен для приёма входящих прямых соединений между клиентами (минуя ноду), он может послать анонс своего
-адреса. Получив анонс, другой клиент может создать соединение с этим адресом и закрыть соединение через ноду
+Если клиент настроен для приёма входящих прямых соединений между клиентами (минуя ноду), он может послать список своих адресов.
+Первыми в списке должны идти адреса локальной сети (если они есть) из подсетей 192.168.0.0/16, 172.16.0.0/12, 10.0.0.0/8,
+чтобы клиенты, находящиеся в одной локальной сети могли соединиться напрямую. Далее следуют публичные адреса интернета.
+Если клиент находится за NAT и пробрасывает открытый порт на свой локальный адрес, в адресе должен быть указан внешний порт.
+ Получив анонс, другой клиент может создать соединение с этим адресом и закрыть соединение через ноду
+
++++[попытки прямого соединения провалились]
+0x0C 0x0C (2 псевдослучайных байта)
+отправляется инициатором, если он получил от вызываемого клиента список прямых адресов и все попытки подключения к полученным адресам оказались неуспешны.
+После получения этого сообщения вызываемый клиент начинает попытки подключения к прямым адресам инициатора, если от инициатора был получен список прямых
+адресов и прямые подключения разрешены настройками вызываемого
+++[сообщение - текст в кодировке UTF8]
0x30 0x30 (длина сообщения в байтах- 2 байта в формате little-endian) сообщение в кодировке UTF8
+++[отчет о доставке предыдущего сообщения]
-0x40 0x40 (2 случайных байта)
+0x40 0x40 (2 псевдослучайных байта)
+++ [запрос на отправку файла]
0x50 0x50 (длина сообщения - 2 байта, 9..263) (размер файла - 8 байт) имя файла в UTF-8, 1 - 255 байт
+++ [подтверждение принятия файла]
-0x51 0x51 (2 случайных байта)
+0x51 0x51 (2 псевдослучайных байта)
после получения этого сообщения отправитель начинает отправку файла
+++ [отказ от приёма файла]
-0x52 0x52 (2 случайных байта)
+0x52 0x52 (2 псевдослучайных байта)
+++ [фрагмент файла]
0x53 0x53 (длина фрагмента - 2 байта, 0 - 65532) фрагмент файла
@@ -100,10 +110,10 @@ UH - user hash - SHA224 хэш от сертификата пользоватеÐ
Пинг
+++[пинг-запрос] - может быть отправлен любой стороной, как по управляющему соединению, так и по межклиентскому
-0x68 0x68 (2 случайных байта)
+0x68 0x68 (2 псевдослучайных байта)
+++[пинг-ответ]
-0x69 0x69 (2 случайных байта)
+0x69 0x69 (2 псевдослучайных байта)
@@ -137,7 +147,7 @@ UH - user hash - SHA224 хэш от сертификата пользоватеÐ
Размер всего пакета не превышает 64кб
+++[запрос списка узлов] @@@
-0x90 0x90 (2 случайных байта)
+0x90 0x90 (2 псевдослучайных байта)
+++[поиск клиента] - отправляется всем узлам. Узел-получатель отвечает на это сообщение, только если искомый UH найден среди локальных клиентов либо в кэше