diff options
| author | Anton <anton@picapica> | 2016-06-24 22:29:04 +0400 |
|---|---|---|
| committer | Anton <anton@picapica> | 2016-06-24 22:29:04 +0400 |
| commit | 4c9c3beee4bc540d592d7be1c332bb68827f97f0 (patch) | |
| tree | bce03aca8a962c5926e99512ab812a5be745f0a1 /doc | |
| parent | d6ac2d840a6f0a18ee41065db9926b585445c19c (diff) | |
| download | pica-pica-4c9c3beee4bc540d592d7be1c332bb68827f97f0.tar.gz pica-pica-4c9c3beee4bc540d592d7be1c332bb68827f97f0.zip | |
updated protocol spec
Diffstat (limited to 'doc')
| -rwxr-xr-x | doc/proto.txt | 30 |
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 найден среди локальных клиентов либо в кэше |
