stadium-proto/Сессия.md
shr3dd3r 550661e71f Начало разработки полной версии спецификации
Практически исчерпывающе описано понятие сессии.
2024-05-23 21:07:36 +03:00

16 lines
2.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Сессия
*Сессия* объединяет в себе несколько *потоков*, созданных одним *клиентом*. Все *пакеты*, отправленные в любом из *потоков* принадлежащих одной *сессии*, интерпретируются как *пакеты* от одного и того-же *клиента*.
*Сессия* создаётся в следствии *рукопожатия* определённого типа. При создании *сессии* всегда создаётся один принадлежащий ей *поток*. Создание *сессии* может быть провалено в следствие передачи некорректной версии *протокола*.
*Сессия* существует до тех пор, пока в её рамках существует хотя бы один *поток*, при уничтожении последнего *потока* в ней - *сессия* уничтожается. *Клиент* может явно запросить у *сервера* уничтожение *сессии*. При уничтожении *сессии* также уничтожаются все принадлежащие её *потоки*. Если *сервер* собирается уничтожить *сессию* по своей воле, то ему следует предупредить об этом *клиента*.
У каждой *сессии* есть собственный, независимый от других *сессий*, набор параметров, который задаётся *клиентом* во время её создания и не может быть изменён в последствии. *Сервер* должен отклонять некорректные конфигурации параметров. В набор параметров *сессии* входит версия *протокола*, которая требуется для обеспечения совместимости. Оба *узла* должны коммуницировать в рамках установленной версии и имеют право уничтожить *сессию*, в случае несоблюдения этого условия.
<!--
TODO:
1. указать где надо конкретные системные события
2. исключения?
-->