1.3.5. Сеансовый уровень

В большинстве сетей, перед тем как выполнить то или иное приложение, требуется зарегистрироваться, введя имя и пароль пользователя. Каждый такой ввод запускает отдельный сеанс. Любой пользователь, вошедший в сеть, создает отдельный сеанс. Один и тот же пользователь может запустить одновременно несколько сеансов, войдя в сеть несколько раз. Запуск нового сеанса (или вход в сеть) активизирует сеансовый уровень, который, в свою очередь, устанавливает соединение между процессами или приложениями на удаленных друг от друга сетевых компьютерах.

Процесс активизации сеанса (установления связи между двумя компьютерами) называется связыванием.

Управление соединениями

Непосредственно до установления соединения оба конца должны договориться о таких параметрах соединения, как скорость передачи, контроль ошибок, ожидаемый тип передачи данных (симплексный, полудуплексный или дуплексный). Любой из участников переговоров может запросить изменить тот или иной параметр. Сеансовый уровень должен обработать любой запрос на изменение параметров соединения, который может возникнуть в любой момент в течение процесса входа в сеть. Сеансовый уровень обязан идентифицировать личность входящего в сеть пользователя. Пользователь должен доказать, что он имеет право сделать это. Способ авторизации доступа выбирается на усмотрение сеансового уровня.

Взаимодействие с транспортным уровнем

Любой участник сеанса может запросить изменения в параметрах соединения. Такая необходимость часто возникает в связи с проблемами транспортного уровня. Например, если соединение транспортного уровня ненадежно, сеансовый уровень должен устранить возможность потери данных приложением. Предположим, вы эксплуатируете распределенную базу данных, основывающуюся на транзакциях. Если на транспортном уровне происходит сбой, и данные теряются, сеансовый уровень при этом обязан прекратить текущую транзакцию и откатиться назад, то есть отменить все внесенные до сбоя частичные изменения.

Для обеспечения такой возможности сеансовый уровень должен группировать относящиеся к одной транзакции сообщения и либо передавать приложению всю группу целиком, либо не передавать ничего. Таким образом, база данных предохраняется от сбоев на транспортном уровне и прерывания работы посередине транзакции. Если транспортный уровень не обеспечивает правильной последовательности передачи данных, сеансовый уровень обязан сделать это за него, разумеется, когда приложение нуждается в правильной последовательности.

Сеансовый уровень иногда устраняется из сетевой модели. Например, когда сеть не нуждается в доставке сообщений от приложения к приложению. Сеансовый уровень в Интернет вообще отсутствует. Несмотря на необходимость процедуры входа в Интернет, программы, проверяющие права доступа пользователя, не являются составляющими сетевой модели. Чаще всего они представляют собой отдельные продукты, работающие на уровне приложения. Протоколы транспортного уровня Интернет выполняют почти все функции сеансового уровня сетевой модели.

Сеансовый уровень преобразует формат данных, подготовленных для передачи по сети, в формат, годный для передачи приложениям. В дополнение он обрабатывает запросы на изменение таких параметров соединения, как скорость передачи и контроль ошибок. Также он проверяет достаточность полномочий пользователя на установление соединения или использование сетевого процесса. Таким образом, сеансовый уровень является сетевым интерфейсом пользователя, служащим для установления и управления соединением между ним и сетевыми приложениями. Сетевые разработчики часто объединяют сеансовый уровень с транспортным. В большинстве случаев, с исчезновением сеансового уровня, функции, выполняемые им, переходят в ведение другого программного обеспечения, работающего как на транспортном, так и на прикладном уровнях.