|
1.3.1.
Многоуровневый подход. Протокол. Интерфейс. Стек
протоколов
Организация взаимодействия между устройствами
в сети является сложной задачей. Как известно,
для решения сложных задач используется
универсальный прием - декомпозиция, то есть
разбиение одной сложной задачи на несколько
более простых задач-модулей (рис. 1.20). Процедура
декомпозиции включает в себя четкое определение
функций каждого модуля, решающего отдельную
задачу, и интерфейсов между ними. В результате
достигается логическое упрощение задачи, а кроме
того, появляется возможность модификации
отдельных модулей без изменения остальной части
системы.
Рис. 1.20. Пример декомпозиции
задачи
При декомпозиции часто используют
многоуровневый подход. Он заключается в
следующем. Все множество модулей разбивают на
уровни. Уровни образуют иерархию, то есть имеются
вышележащие и нижележащие уровни (рис. 1.21).
Множество модулей, составляющих каждый уровень,
сформировано таким образом, что для выполнения
своих задач они обращаются с запросами только к
модулям непосредственно примыкающего
нижележащего уровня. С другой стороны,
результаты работы всех модулей, принадлежащих
некоторому уровню, могут быть переданы только
модулям соседнего вышележащего уровня. Такая
иерархическая декомпозиция задачи предполагает
четкое определение функции каждого уровня и
интерфейсов между уровнями. Интерфейс
определяет набор функций, которые нижележащий
уровень предоставляет вышележащему. В
результате иерархической декомпозиции
достигается относительная независимость
уровней, а значит, и возможность их легкой замены.
Рис. 1.21. Многоуровневый подход
- создание иерархии задач
Средства сетевого взаимодействия, конечно,
тоже могут быть представлены в виде иерархически
организованного множества модулей. При этом
модули нижнего уровня могут, например, решать все
вопросы, связанные с надежной передачей
электрических сигналов между двумя соседними
узлами. Модули более высокого уровня организуют
транспортировку сообщений в пределах всей сети,
пользуясь для этого средствами упомянутого
нижележащего уровня. А на верхнем уровне
работают модули, предоставляющие пользователям
доступ к различным службам - файловой, печати и т.
п. Конечно, это только один из множества
возможных вариантов деления общей задачи
организации сетевого взаимодействия на частные
подзадачи.
Многоуровневый подход к описанию и реализации
функций системы применяется не только в
отношении сетевых средств. Такая модель
функционирования используется, например, в
локальных файловых системах, когда поступивший
запрос на доступ к файлу последовательно
обрабатывается несколькими программными
уровнями (рис. 1.22). Запрос вначале анализируется
верхним уровнем, на котором осуществляется
последовательный разбор составного символьного
имени файла и определение уникального
идентификатора файла. Следующий уровень находит
по уникальному имени все основные
характеристики файла: адрес, атрибуты доступа и
т. п. Затем на более низком уровне осуществляется
проверка прав доступа к этому файлу, а далее,
после расчета координат области файла,
содержащей требуемые данные, выполняется
физический обмен с внешним устройством с помощью
драйвера диска.
Рис. 1.22. Многоуровневая модель
файловой системы
Многоуровневое представление средств сетевого
взаимодействия имеет свою специфику, связанную с
тем, что в процессе обмена сообщениями участвуют
две машины, то есть в данном случае необходимо
организовать согласованную работу двух
«иерархий». При передаче сообщений оба участника
сетевого обмена должны принять множество
соглашений. Например, они должны согласовать
уровни и форму электрических сигналов, способ
определения длины сообщений, договориться о
методах контроля достоверности и т. п. Другими
словами, соглашения должны быть приняты для всех
уровней, начиная от самого низкого - уровня
передачи битов - до самого высокого, реализующего
сервис для пользователей сети.
На рис. 1.23 показана модель взаимодействия двух
узлов. С каждой стороны средства взаимодействия
представлены четырьмя уровнями. Процедура
взаимодействия этих двух узлов может быть
описана в виде набора правил взаимодействия
каждой пары соответствующих уровней обеих
участвующих сторон. Формализованные правила,
определяющие последовательность и формат
сообщений, которыми обмениваются сетевые
компоненты, лежащие на одном уровне, но в разных
узлах, называются протоколом.
Рис. 1.23. Взаимодействие двух
узлов
Модули, реализующие протоколы соседних уровней
и находящиеся в одном узле, также
взаимодействуют друг с другом в соответствии с
четко определенными правилами и с помощью
стандартизованных форматов сообщений. Эти
правила принято называть интерфейсом.
Интерфейс определяет набор сервисов,
предоставляемый данным уровнем соседнему
уровню. В сущности, протокол и интерфейс выражают
одно и то же понятие, но традиционно в сетях за
ними закрепили разные области действия:
протоколы определяют правила взаимодействия
модулей одного уровня в разных узлах, а
интерфейсы - модулей соседних уровней в одном
узле.
Средства каждого уровня должны отрабатывать,
во-первых, свой собственный протокол, а во-вторых,
интерфейсы с соседними уровнями.
Иерархически организованный набор протоколов,
достаточный для организации взаимодействия
узлов в сети, называется стеком
коммуникационных протоколов.
Коммуникационные протоколы могут быть
реализованы как программно, так и аппаратно.
Протоколы нижних уровней часто реализуются
комбинацией программных и аппаратных средств, а
протоколы верхних уровней - как правило, чисто
программными средствами.
Программный модуль, реализующий некоторый
протокол, часто для краткости также называют
«протоколом». При этом соотношение между
протоколом - формально определенной процедурой и
протоколом - программным модулем, реализующим
эту процедуру, аналогично соотношению между
алгоритмом решения некоторой задачи и
программой, решающей эту задачу.
Понятно, что один и тот же алгоритм может быть
запрограммирован с разной степенью
эффективности. Точно так же и протокол может
иметь несколько программных реализации. Именно
поэтому при сравнении протоколов следует
учитывать не только логику их работы, но и
качество программных решений. Более того, на
эффективность взаимодействия устройств в сети
влияет качество всей совокупности протоколов,
составляющих стек, в частности, насколько
рационально распределены функции между
протоколами разных уровней и насколько хорошо
определены интерфейсы между ними.
Протоколы реализуются не только компьютерами,
но и другими сетевыми устройствами -
концентраторами, мостами, коммутаторами,
маршрутизаторами и т. д. Действительно, в общем
случае связь компьютеров в сети осуществляется
не напрямую, а через различные коммуникационные
устройства. В зависимости от типа устройства в
нем должны быть встроенные средства, реализующие
тот или иной набор протоколов.
Чтобы еще раз пояснить понятия «протокол» и
«интерфейс», рассмотрим пример, не имеющий
отношения к вычислительным сетям, а именно
обсудим взаимодействие двух предприятий А и В;
связанных между собой деловым сотрудничеством.
Между предприятиями существуют многочисленные
договоренности и соглашения, такие, например, как
регулярные поставки продукции одного
предприятия другому. В соответствии с этой
договоренностью начальник отдела продаж
предприятия А регулярно в начале каждого месяца
посылает официальное сообщение начальнику
отдела закупок предприятия В о том, сколько и
какого товара может быть поставлено в этом
месяце. В ответ на это сообщение начальник отдела
закупок предприятия В посылает в ответ заявку
установленного образца на требуемое количество
продукции. Возможно, процедура взаимодействия
этих начальников включает дополнительные
согласования, в любом случае существует
установленный порядок взаимодействия, который
можно считать «протоколом уровня начальников».
Начальники посылают свои сообщения и заявки
через своих секретарей. Порядок взаимодействия
начальника и секретаря соответствует понятию
межуровневого интерфейса «начальник -
секретарь». На предприятии А обмен документами
между начальником и секретарем идет через
специальную папку, а на предприятии В начальник
общается с секретарем по факсу. Таким образом,
интерфейсы «начальник - секретарь» на этих двух
предприятиях отличаются.
После того как сообщения переданы секретарям,
начальников не волнует, каким образом эти
сообщения будут перемещаться дальше - обычной
или электронной почтой, факсом или нарочным.
Выбор способа передачи - это уровень компетенции
секретарей, они могут решать этот вопрос, не
уведомляя об этом своих начальников, так как их
протокол взаимодействия связан только с
передачей сообщений, поступающих сверху, и не
касается содержания этих сообщений. На рис. 1.24
показано, что в качестве протокола
взаимодействия «секретарь-секретарь»
используется обмен письмами. При решении других
вопросов начальники могут взаимодействовать по
другим правилам-протоколам, но это не повлияет на
работу секретарей, для которых не важно, какие
сообщения отправлять, а важно, чтобы они дошли до
адресата. Итак, в данном случае мы имеем дело с
двумя уровнями - уровнем начальников и уровнем
секретарей, и каждый из них имеет собственный
протокол, который может быть изменен независимо
от протокола другого уровня. Эта независимость
протоколов друг от друга и делает
привлекательным многоуровневый подход.
Рис. 1.24. Пример
многоуровневого взаимодействия предприятий
|