Таки нужна поддержка нескольких потоков событий
This commit is contained in:
parent
812465ec2e
commit
0c4e6cfcd1
3
.gitignore
vendored
3
.gitignore
vendored
@ -1,7 +1,8 @@
|
||||
Data types/DATA TYPES.md
|
||||
SPX/
|
||||
_something.md
|
||||
Sessions.md
|
||||
LBM.md
|
||||
Reserved LBM keys.md
|
||||
Reserved events/
|
||||
Sessions.md
|
||||
Streams.md
|
12
Events.md
12
Events.md
@ -18,26 +18,26 @@
|
||||
|
||||
## Содержание и структура
|
||||
|
||||
Все _события_ содержат идентификатор серверной сессии размером 4 байта. Подробнее про сессии - в [Sessions.md](Sessions.md).
|
||||
Все _события_ содержат идентификатор _потока_ размером 4 байта. Подробнее - в [Streams.md](Streams.md).
|
||||
|
||||
_События_ в _шифрованном соединении_ содержат хэш, применённый к зашифрованному блобу (см. ниже). Этот хэш имеет размер равно или более 16 байт и подписан с помощью закрытого ключа подписи отправляющего. Он гарантирует достоверность содержания _события_ на уровне прямого подключения между двумя _узлами_. Используемые алгоритмы подписи и хэширования определяются на этапе рукопожатия.
|
||||
|
||||
Все _события_ содержат асинхронный идентификатор _события_, который является двухбайтным целым числом без знака и предназначен для определения отношения запросов к ответам при асинхронном обмене _событиями_.
|
||||
Все _события_ содержат асинхронный идентификатор _события_, который является двухбайтным целым числом без знака и предназначен для определения отношения запросов к ответам при асинхронном обмене _событиями_ в конкретном _потоке_.
|
||||
|
||||
Все _события_ содержат тип (см. выше раздел "Категории и типы").
|
||||
|
||||
_События_ могут содержать полезную нагрузку, либо один нулевой байт, свидетельствующий о её отсутствии. Данная версия протокола не накладывает ограничений на формат полезной нагрузки, за исключением базовых событий, которые представлены данными в формате _LBM_. Описание всех предопределённых в базовом протоколе ключей ячеек _LBM_ доступно в [Reserved LBM keys.md](Reserved%20LBM%20keys.md). При использовании формата _LBM_, в полезную нагрузку могут добавляться шумовые данные. Неизвестные ключи при обработке полезной нагрузки игнорируются.
|
||||
|
||||
_События_ в _шифрованном соединении_ содержат блоб, зашифрованный с помощью актуального ключа сессии и утверждённого алгоритма симметричного шифрования. Этот блоб содержит асинхронный идентификатор, тип события и полезную нагрузку. В нешифрованном соединении, указанные поля находятся в "сыром" виде.
|
||||
_События_ в _шифрованном соединении_ содержат блоб, зашифрованный с помощью актуального ключа _потока_ и утверждённого алгоритма симметричного шифрования. Этот блоб содержит асинхронный идентификатор, тип события и полезную нагрузку. В нешифрованном _соединении_, указанные поля находятся в "сыром" виде.
|
||||
|
||||
Исходя из всего вышеописанного, минимальный размер сериализованного в бинарный вид _события_ в нешифрованном соединении составляет 9 байт, а его итоговая структура выглядит следующим образом:
|
||||
Исходя из всего вышеописанного, минимальный размер сериализованного в бинарный вид _события_ в нешифрованном _соединении_ составляет 9 байт, а его итоговая структура выглядит следующим образом:
|
||||
|
||||
`[Session ID: 4B][Async ID: 2B][Event Type: 2B][Payload: >0B]`
|
||||
`[Stream ID: 4B][Async ID: 2B][Event Type: 2B][Payload: >0B]`
|
||||
|
||||
В свою очередь, _события_ в _шифрованном соединении_ имеют размер не менее 25-и байт и следующую структуру:
|
||||
|
||||
```text
|
||||
[Session ID: 4B][Signed Hash: >=16B][Encrypted Blob: >=5B]
|
||||
[Stream ID: 4B][Signed Hash: >=16B][Encrypted Blob: >=5B]
|
||||
/ | \
|
||||
[Async ID: 2B][Event Type: 2B][Payload: >0B]
|
||||
```
|
||||
|
@ -143,3 +143,5 @@ ASCII: S t a d i u m P
|
||||
- _Тип:_ `char[]`
|
||||
- _Обязательна:_ нет
|
||||
- Строка в кодировке ASCII, описывающая ошибку в человекочитаемом виде.
|
||||
|
||||
<!--TODO: стартовый SID-->
|
||||
|
14
Overview.md
14
Overview.md
@ -4,7 +4,7 @@
|
||||
|
||||
## Терминология
|
||||
|
||||
Здесь перечислены используемые в данной документации термины, значение которых может быть не очевидно и/или не соответствует тому, которое подразумевается обычно.
|
||||
Здесь перечислены используемые в данной спецификации термины, значение которых может быть не очевидно и/или не соответствует тому, которое подразумевается обычно.
|
||||
|
||||
### Узел
|
||||
|
||||
@ -18,9 +18,17 @@
|
||||
|
||||
Выполняющий роль клиента _узел_ в многоранговой сети.
|
||||
|
||||
### Шифрованное соединение/сессия
|
||||
### Соединение/поток
|
||||
|
||||
Соединение между двумя _узлами_, все _события_ в котором шифруются с помощью оговорённого симметричного алгоритма и ключа, а также подписываются с помощью известного приватного ключа подписи отправителя.
|
||||
Канал обмена _событиями_ между двумя _узлами_, имеющий свой идентификатор (Stream ID/SID, см. [Streams.md](Streams.md)) и набор настроек.
|
||||
|
||||
### Шифрованное соединение/поток
|
||||
|
||||
_Соединение_ между двумя _узлами_, все _события_ в котором шифруются с помощью оговорённого симметричного алгоритма и ключа, а также подписываются с помощью приватного ключа отправителя.
|
||||
|
||||
### Сессия
|
||||
|
||||
То, что устанавливается при создании первого _соединения_ между двумя _узлами_, с чем ассоциированы конкретные _потоки_ и прочие параметры.
|
||||
|
||||
### Событие
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user