27 lines
3.1 KiB
Markdown
27 lines
3.1 KiB
Markdown
# Пакет
|
||
|
||
Пакет это физическая единица информации протокола стадиум. Пакет состоит из идентификатора потока, заголовка и тела. Применимость шифрования как такового, криптографические алгоритмы и алгоритмы сжатия - определяются потоком, по которому передаётся пакет. В шифрованном потоке, заголовок шифруется вместе с телом.
|
||
|
||
В заголовке пакета находятся такие данные как: код аутентификации пакета (Packet Authentication Code), который представляет из себя хэш от обработанных данных и если пакет передаётся по шифрованному потоку, то он дополнительно подписан; флаги наличия сжатия, шумовых данных, идентификатора и флаг системного события; и идентификатор пакета, который присутствует лишь в случае, если в потоке включено подтверждение доставки и/или к данному пакету предполагается ответ.
|
||
|
||
В теле пакета содержутся произвольные данные и шум (если включен на уровне потока). Ограничения на максимальный размер тела пакета протокола стадиум нет, но оно может быть опционально задано на этапе рукопожатия и/или подстраиваться под максимальный размер пакета протокола транспортного уровня. В таком случае, если данные не помещаются в лимит транспорта - они разбивается на несколько стадиумных пакетов, которые представляют из себя пачку пакетов. При попытке отправки приложением данных, превышающих лимит размера тела пакета, на стороне отправляющего узла должна возникнуть ошибка. Узел-получатель не должен предполагать, что получает данные валидной длинны и должен производить проверки самостоятельно.
|
||
|
||
|
||
## Ориентировочная схема структуры пакета
|
||
|
||
```text
|
||
B: byte(s)
|
||
|
||
|-------------------------|
|
||
| StreamId: 4B |
|
||
|-------------------------|
|
||
| PAC: >=8B |
|
||
|-------------------------|
|
||
| Flags: 1B |
|
||
|-------------------------|
|
||
| PacketId (optional): 2B |
|
||
|-------------------------|
|
||
| Body: >0B |
|
||
|-------------------------|
|
||
```
|