Введение

Слой в стандартной модели компьютерных сетей. В семислойной модели OSI компьютерных сетей, слой сеансов является пятым слоем. Слой сеансов предоставляет механизм для установления, завершения и управления сеансом между процессами прикладных программ конечных пользователей, то есть полупостоянным диалогом. Сеансы связи состоят из запросов и ответов, происходящих между приложениями. Услуги слоя сеансов обычно используются в прикладных средах, использующих удалённые вызовы процедур (RPC). Примером протокола слоя сеансов является протокол слоя сеансов стека протоколов OSI, также известный как X.225 или ISO 8327. В случае потери соединения этот протокол может попытаться восстановить соединение. Если соединение не используется в течение длительного времени, протокол слоя сеансов может закрыть его и повторно открыть. Он поддерживает как полнодуплексный, так и полудуплексный режимы работы и обеспечивает точки синхронизации в потоке обмениваемых сообщений. Другие примеры реализации слоя сеансов включают протокол Zone Information Protocol (ZIP) – протокол AppleTalk, координирующий процесс связывания имён, и протокол Session Control Protocol (SCP) – протокол слоя сеансов DECnet Phase IV. В рамках семантики слоёв сетевой архитектуры OSI, слой сеансов отвечает на запросы от уровня представления и отправляет запросы на обслуживание транспортному уровню.

Установление соединения и отпуск

В минимальном случае, уровень сеанса позволяет обеим сторонам устанавливать и использовать соединение, называемое сеансом, и обеспечивает его упорядоченное завершение. В модели OSI транспортный уровень не отвечает за упорядоченное освобождение соединения; эту функцию выполняет уровень сеанса. Однако в современных сетях TCP/IP протокол TCP уже обеспечивает упорядоченное закрытие соединений на транспортном уровне. После завершения сеансового соединения, базовое транспортное соединение может быть повторно использовано для другого сеансового соединения. Кроме того, сеансовое соединение может использовать несколько последовательных транспортных соединений. Например, если во время сеанса происходит сбой базового транспортного соединения, уровень сеанса может попытаться восстановить транспортное соединение для продолжения сеанса.

Контроль диалога

Уровень сеанса может обеспечивать три различных типа диалога: двусторонний одновременный (полный дуплекс), двусторонний попеременный (полудуплекс) и односторонний (симплекс). Он также предоставляет механизмы для согласования типа диалога и контролирует, какая сторона имеет право ("очередь" или "токен") на отправку данных или выполнение некоторых управляющих функций. Управление диалогом не реализовано в TCP/IP и остается за прикладным уровнем, если это необходимо. В широко используемом протоколе HTTP/1.1 клиент и сервер обычно работают в режиме полудуплекса. HTTP/1.1 также поддерживает конвейеризацию HTTP (HTTP pipelining) для работы в полном дуплексе, но многие серверы и прокси-серверы не могли корректно его обрабатывать, и отсутствовал механизм согласования диалога для проверки возможности использования полного дуплекса, поэтому большинство браузеров в конечном итоге отказались от его поддержки.

Точки синхронизации и ресинхронизации

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

Сравнение с моделью TCP/IP

Референтная модель TCP/IP не рассматривает детали семантики приложений или транспортных протоколов модели OSI и, следовательно, не включает уровень сеанса. Управление сеансами в OSI, в отношении типичных транспортных протоколов (TCP, SCTP), реализуется в протоколах транспортного уровня или относится к области протоколов прикладного уровня. Уровни TCP/IP описывают области функционирования (прикладной, межхостовой, сетевой, канальный), а не детальные процедуры работы или семантику данных.