Архитектура СПО

 

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

Как правило, в СПО можно выделить группы модулей, отвечающих за выполнение различных подзадач: передачу данных по КПД, управление сетевыми адресами, управление пользователями и др. Для упрощения разработки и документирования СПО создан ряд моделей, представляющих разные точки зрения на то, из каких частей состоит СПО, и как они взаимодействуют между собой.

Базовым понятием для всех используемых моделей является понятие протокола. Под протоколом (protocol) понимается формально описанный набор правил, определяющий последовательность и формат сообщений, которыми обмениваются сетевые компоненты. Каждая модель, в соответствии с разновидностями выполняемых протоколами функций, выделяет группы протоколов, называемые уровнями (level), и описывает взаимосвязь уровней.

Общий подход, разделяемый всеми моделями, состоит в иерархическом упорядочении уровней. То есть, протоколы каждого уровня базируются на использовании протоколов группы, следующей по иерархии. Полный набор протоколов, включающий в себя протоколы всех уровней модели, обычно называется стеком протоколов(protocol stack).

Каждый уровень взаимодействует с соседними уровнями формально описанным способом. Говорят, что определен интерфейс (interface) между каждыми двумя уровнями. Интерфейс определяет набор услуг, служб или сервисов (service), которые нижележащий уровень предоставляет вышележащему. Каждый уровень состоит из сущностей (entities), выполняющих некие действия или активности (activities). Для получения услуги вышележащий уровень обращается к точке доступа к сервису(service access point, SAP).

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

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