stadium-proto/Пакет.md
shr3dd3r 8f13e6854d Множественные правки и добавления
Добавлено упоминание генерации шума на уровне транспортного адаптера; уточнения касательно разбиения пакетов; у шума можно настроить его характер, т.е. статистические характеристики не касающиеся его количества; формат LBM теперь формат KLV; у транспортных адаптеров теперь есть кодовое имя, определён базовый интерфейс и добавлено перечисление обязательных и рекомендуемых к имплементации видов адаптеров.
2024-06-06 23:58:25 +03:00

3.3 KiB
Raw Blame History

Пакет

Пакет это логическая единица информации протокола стадиум. Пакет состоит из идентификатора потока, заголовка и тела. Применимость шифрования как такового, криптографические алгоритмы и алгоритмы сжатия - определяются потоком, по которому передаётся пакет. В шифрованном потоке, заголовок шифруется вместе с телом.

В заголовке пакета находятся такие данные как: код аутентификации пакета (Packet Authentication Code), который представляет из себя хэш от обработанных данных и если пакет передаётся по шифрованному потоку, то он дополнительно подписан; флаги наличия сжатия, шумовых данных, идентификатора и флаг системного события; и идентификатор пакета, который присутствует лишь в случае, если в потоке включено подтверждение доставки и/или к данному пакету предполагается ответ.

В теле пакета содержутся произвольные данные и шум (если включен на уровне потока). Ограничения на максимальный размер тела пакета в рамках протокола нет, но оно может быть опционально задано на этапе рукопожатия, в том числе оно может быть подстроено под максимальный размер пакета транспортного адаптера. Таким-же образом может быть опционально задано максимально количество суб-пакетов. Если данные не помещаются в лимит адаптера - они разбиваются на несколько суб-пакетов, которые представляют из себя пачку и логически являются одним пакетом протокола стадиум. При попытке отправки приложением данных, превышающих лимит размера тела пакета, на стороне отправляющего узла должна возникнуть ошибка. Узел-получатель не должен предполагать, что получает данные валидной длинны/допустимое число суб-пакетов и должен производить проверки самостоятельно.

Ориентировочная схема структуры пакета

B: byte(s)

|-------------------------|
| StreamId: 4B            |
|-------------------------|
| PAC: >=8B               |
|-------------------------|
| Flags: 1B               |
|-------------------------|
| PacketId (optional): 2B |
|-------------------------|
| Body: >0B               |
|-------------------------|