Учебник для вузов в. Олифер Н. Олифер Компьютерные Принципы, технологии, протоколы
Скачать 22.28 Mb.
|
ГЛАВА 4 Архитектура и стандартизация сетей Архитектура подразумевает представление сети в виде системы элементов, каждый т которых выполняет определенную частную функцию, при этом все элементы вместе согласованно решают общую задачу взаимодействия компьютеров. Другими словами, архитектура сети отражает деком позицию общей задачи взаимодействия компьютеров на отдельные подзадачи, которые должны решаться отдельными элементами сети. Одним из важных элементов архитектуры сети является коммуникационный протокол — формализованный набор правил взаимодействия узлов сети. Прорывом в стандартизации архитектуры компьютерной сети стала разработка модели взаимодей ствия открытых систем (Open System Interconnection, OSI), которая в начале 80-х годов обобщила накопленный к тому времени опыт. Модель OSI является международным стандартом и определяет способ декомпозиции задачи взаимодействия «по вертикали», поручая эту задачу коммуникаци онным протоколам семи уровней. Уровни образуют иерархию, известную как стек протоколов, где каждый вышестоящий уровень использует нижестоящий в качестве удобного инструмента для решения своих задач. Существующие сегодня (или существовавшие еще недавно) стеки протоколов в целом отражают архитектуру модели OSI. Однако в каждом стеке протоколов имеются свои особенности и отличия от архитектуры OSI. Так, наиболее популярный стек TCP/IP состоит из четырех уровней. Стандартная архитектура компьютерной сети определяет также распределение протоколов между элементами сети — конечными узлами (компьютерами) и промежуточными узлами (коммутаторами и маршру тизаторами). Промежуточные узлы выполняют только транспортные функции стека протоколов, передавая трафик между конечными узлами. Конечные узлы поддерживают весь стек протоколов, предоставляя информационные услуги, например веб-сервис. Такое распределение функций озна чает смещение «интеллекта» сети на ее периферию. Декомпозиция задачи сетевого взаимодействия 109 Декомпозиция задачи сетевого взаимодействия Организация взаимодействия между устройствами сети является сложной задачей. Для решения сложных задач используется известный универсальный прием — декомпозиция, то есть разбиение одной сложной задачи на несколько более простых задач-модулей. Де композиция состоит в четком определении функций каждого модуля, а также порядка их взаимодействия (то есть межмодульных интерфейсов). При таком подходе каждый модуль можно рассматривать как «черный ящик», абстрагируясь от его внутренних механизмов и концентрируя внимание на способе взаимодействия этих модулей. В результате такого логического упрощения задачи появляется возможность независимого тестирования, раз работки и модификации модулей. Так, любой из показанных на рис. 4.1 модулей может быть переписан заново. Пусть, например, это будет модуль Л, и если при этом разработчики сохранят без изменения межмодульные связи (в данном случае интерфейсы А-В и Л-С), то это не потребует никаких изменений в остальных модулях. Рис. 4.1 . Пример декомпозиции задачи Многоуровневый подход Еще более эффективной концепцией, развивающей идею декомпозиции, является много уровневый подход. После представления исходной задачи в виде множества модулей эти модули группируют и упорядочивают по уровням, образующим иерархию. В соответствии с принципом иерархии для каждого промежуточного уровня можно указать непосредствен но примыкающие к нему соседние вышележащий и нижележащий уровни (рис. 4.2). Рис. 4.2. Многоуровневый подход — создание иерархии задач 110 Глава 4. Архитектура и стандартизация сетей С одной стороны, группа модулей, составляющих каждый уровень, для решения своих задач должна обращаться с запросами только к модулям соседнего нижележащего уров ня. С другой стороны, результаты работы каждого из модулей, отнесенных к некоторому уровню, могут быть переданы только модулям соседнего вышележащего уровня. Такая иерархическая декомпозиция задачи предполагает четкое определение функций и интер фейсов не только отдельных модулей, но и каждого уровня. Межуровневый интерфейс, называемый также интерфейсом услуг, определяет набор функций, которые нижележащий уровень предоставляет вышележащему (рис. 4.3). К уровню к+2 К уровню к - 1 Рис. 4.3. Концепция многоуровневого взаимодействия Такой подход дает возможность проводить разработку, тестирование и модификацию от дельного уровня независимо от других уровней. Иерархическая декомпозиция позволяет, двигаясь от более низкого уровня к более высокому, переходить ко все более и более аб страктному, а значит, более простому представлению исходной задачи. ПРИМЕР Рассмотрим задачу считывания логической записи из файла, расположенного на локальном диске. Ее (очень упрощенно) можно представить в виде следующей иерархии частных за дач. 1. Поиск по символьному имени файла его характеристик, необходимых для доступа к данным: информации о физическом расположении файла на диске, размер и др. Поскольку функции этого уровня связаны только с просмотром каталогов, представления о файловой системе на этом уровне чрезвычайно абстрактны: файловая система имеет вид графа, в узлах которого находятся каталоги, а листьями являются файлы. Никакие детали физической и логической организации данных на диске данный уровень не интересуют. Декомпозиция задачи сетевого взаимодействия 111 2. Определение считываемой части файла. Д ля реш ения этой задачи необходимо снизить степень абстракции ф айловой системы. Ф ункции данного уровня оперирую т файлом как совокупностью определенным образом связанных физических блоков диска. 3. Считывание данных с диска. После определения номера физического блока файловая система обращ ается к системе ввода-вывода для выполнения операции чтения. Н а этом уровне уже ф игурируют такие детали устройства ф айловой системы, как номера цилиндров, дорожек, секторов. Среди ф ункций, которые может запросить прикладная программа, обращ аясь к верхнему уровню файловой системы, может быть, например, такая: ПРОЧИТАТЬ гг ЛОГИЧЕСКУЮ з а п и с ь ф а й л а d i r i / m y / f i l e t x t Верхний уровень не может выполнить этот запрос «только своими силами», определив по символьному имени DIR1/MY/FILE.TXT физический адрес файла, он обращается с запросом к нижележащему уровню: ПРОЧИТАТЬ 2 2 ЛОГИЧЕСКУЮ ЗАПИСЬ ИЗ ФАЙЛА, ИМЕЮЩЕГО ФИЗИЧЕСКИЙ АДРЕС 1 7 4 И РАЗМЕР 2 3 5 В ответ на запрос второй уровень определяет, что ф айл с адресом 174 занимает на диске пять несмежных областей, а искомая запись находится в четвертой области в физическом блоке 345. После этого он обращ ается к драйверу с запросом о чтении требуемой логической записи. В соответствии с этой упрощенной схемой взаимодействие уровней файловой системы было однонаправленным — сверху вниз. Однако реальная картина существенно сложнее. Действительно, чтобы определить характеристики файла, верхний уровень должен «рас крутить» его символьное имя, то есть последовательно прочитать всю цепочку каталогов, указанную в имени файла. А это значит, что для решения свой задачи он несколько раз обратится к нижележащему уровню, который, в свою очередь, несколько раз «попросит» драйвер считать данные каталогов с диска. И каждый раз результаты будут передаваться снизу вверх. Задача организации взаимодействия компьютеров в сети тоже может быть представлена в виде иерархически организованного множества модулей. Например, модулям нижнего уровня можно поручить вопросы, связанные с надежной передачей информации между двумя соседними узлами, а модулям следующего, более высокого уровня — транспорти ровку сообщений в пределах всей сети. Очевидно, что последняя задача — организация связи двух любых, не обязательно соседних, узлов — является более общей и поэтому ее решение может быть получено путем многократных обращений к нижележащему уровню. Так, организация взаимодействия узлов А и В может быть сведена к поочередному взаи модействию пар промежуточных смежных узлов (рис. 4.4). А В Рис. 4.4. Взаимодействие произвольной пары узлов 112 Глава 4. Архитектура и стандартизация сетей Протокол и стек протоколов Многоуровневое представление средств сетевого взаимодействия имеет свою специфику, связанную с тем, что в процессе обмена сообщениями участвуют, по меньшей мере, две стороны, то есть в данном случае необходимо организовать согласованную работу двух иерархий аппаратных и программных средств на разных компьютерах. Оба участника сетевого обмена должны принять множество соглашений. Например, они должны согла совать уровни и форму электрических сигналов, способ определения размера сообщений, договориться о методах контроля достоверности и т. п. Другими словами, соглашения должны быть приняты на всех уровнях, начиная от самого низкого — уровня передачи битов, и заканчивая самым высоким, реализующим обслуживание пользователей сети. На рис. 4.5 показана модель взаимодействия двух узлов. С каждой стороны средства взаимодействия представлены четырьмя уровнями. Каждый уровень поддерживает интер фейсы двух типов. Во-первых, это интерфейсы услуг с выше- и нижележащим уровнями «своей» иерархии средств. Во-вторых, это интерфейс со средствами взаимодействия другой стороны, расположенными на том же уровне иерархии. Этот тип интерфейса называют протоколом. Таким образом, протокол всегда является одноранговым интерфейсом. Интерфейс ЗВ-4В Интерфейс 2В-ЗВ Интерфейс 1В-2В Рис. 4.5. Взаимодействие двух узлов ПРИМЕЧАНИЕ-------------------------------------------------------------------------------------------------- В сущности, термины «протокол» и «интерфейс» выражают одно и то же понятие — формализованное описание процедуры взаимодействия двух объектов, но традиционно в сетях за ними закрепили разные области действия: протоколы определяют правила взаимодействия модулей одного уровня в разных узлах, а интерфейсы — правила взаимодействия модулей соседних уровней в одном узле. Иерархически организованный набор протоколов, достаточный для организации взаимодействия узлов в сети, называется стеком протоколов. Протоколы нижних уровней часто реализуются комбинацией программных и аппаратных средств, д протоколы верхних уровней, как правило, программными средствами. Узел А Узел В Модель OSI 113 Программный модуль, реализующий некоторый протокол, называют протокольной сущ ностью, или, для краткости, тоже протоколом. Понятно, что один и тот же протокол может быть реализован с разной степенью эффективности. Именно поэтому при сравнении про токолов следует учитывать не только логику их работы, но и качество программной реа лизации. Более того, на эффективность взаимодействия устройств в сети влияет качество всей совокупности протоколов, составляющих стек, в частности то, насколько рационально распределены функции между протоколами разных уровней и насколько хорошо опреде лены интерфейсы между ними. Протокольные сущности одного уровня двух взаимодействующих сторон обмениваются сообщениями в соответствии с определенным для них протоколом. Сообщения состоят из заголовка и поля данных (иногда оно может отсутствовать). Обмен сообщениями явля ется своеобразным языком общения, с помощью которого каждая из сторон «объясняет» другой стороне, что необходимо сделать на каждом этапе взаимодействия. Работа каждого протокольного модуля состоит в интерпретации заголовков поступающих к нему сообще ний и выполнении связанных с этим действий. Заголовки сообщений разных протоколов имеют разную структуру, что соответствует различиям в их функциональности. Понятно, что чем сложнее структура заголовка сообщения, тем более сложные функции возложены на соответствующий протокол. Модель OSI Из того что протокол является соглашением, принятым двумя взаимодействующими узлами сети, совсем не следует, что он обязательно является стандартным. Но на практике при реализации сетей стремятся использовать стандартные протоколы. Это могут быть фирменные, национальные или международные стандарты. В начале 80-х годов ряд международных организаций по стандартизации, в частно сти International Organization for Standardization (ISO), часто называемая International Standards Organization, а также International Telecommunications Union (ITU) и некоторые другие, разработали стандартную модель взаимодействия открытых систем (Open System Interconnection, OSI). Эта модель сыграла значительную роль в развитии компьютерных сетей. Общая характеристика модели OSI К концу 70-х годов в мире уже существовало большое количество фирменных стеков ком муникационных протоколов, среди которых можно назвать, например, такие популярные стеки, как DECnet, T C P/IP и SNA. Подобное разнообразие средств межсетевого взаимо действия вывело на первый план проблему несовместимости устройств, использующих разные протоколы. Одним из путей разрешения этой проблемы в то время виделся все общий переход на единый, общий для всех систем стек протоколов, созданный с учетом недостатков уже существующих стеков. Такой академический подход к созданию нового стека начался с разработки модели OSI и занял семь лет (с 1977 по 1984 год). Назначение модели OSI состоит в обобщенном представлении средств сетевого взаимодействия. Она разрабатывалась в качестве своего рода универсального языка сетевых специалистов, именно поэтому ее называют справочной моделью. 114 Глава 4. Архитектура и стандартизация сетей В Н И М А Н И Е------------------------------------------------------------------------------------------------------------------- Модель OSI определяет, во-первых, уровни взаимодействия систем в сетях с коммутацией пакетов, во-вторых, стандартные названия уровней, в-третьих, функции, которые должен выполнять каждый уровень. Модель OSI не содержит описаний реализаций конкретного набора протоколов. В модели OSI средства взаимодействия делятся на семь уровней: прикладной, представле ния, сеансовый, транспортный, сетевой, канальный и физический (рис. 4.6). Каждый уро вень имеет дело с совершенно определенным аспектом взаимодействия сетевых устройств. Компьютер 1 Компьютер 2 Сообщение І І 7 | 6 | 5 | 4 | 3 | 2 1 1 І J Передача по сети J \ - — — -7 Полезная Заголовки со служебной информация информацией Рис. 4.6. Модель взаимодействия открытых систем ISO/OSI В Н И М А Н И Е------------------------------------------------------------------------------------------------------------------- Модель OSI описывает только системные средства взаимодействия, реализуемые операционной си стемой, системными утилитами, системными аппаратными средствами. Модель не включает средства взаимодействия приложений конечных пользователей. Важно различать уровень взаимодействия приложений и прикладной уровень семиуровневой модели. Модель OSI 115 Приложения могут реализовывать собственные протоколы взаимодействия, используя для этих целей многоуровневую совокупность системных средств. Именно для этого в распоря жение программистов предоставляется прикладной программный интерфейс (Application Program Interface, API). В соответствии с идеальной схемой модели OSI приложение может обращаться с запросами только к самому верхнему уровню — прикладному, однако на прак тике многие стеки коммуникационных протоколов предоставляют возможность програм мистам напрямую обращаться к сервисам, или службам, расположенных ниже уровней. Например, некоторые СУБД имеют встроенные средства удаленного доступа к файлам. В этом случае приложение, выполняя доступ к удаленным ресурсам, не использует систем ную файловую службу; оно обходит верхние уровни модели OSI и обращается непосред ственно к ответственным за транспортировку сообщений по сети системным средствам, которые располагаются на нижних уровнях модели OSI. Итак, пусть приложение узла Л хочет взаимодействовать с приложением узла В. Для это го приложение А обращается с запросом к прикладному уровню, например к файловой службе. На основании этого запроса программное обеспечение прикладного уровня фор мирует сообщение стандартного формата. Но для того чтобы доставить эту информацию по назначению, предстоит решить еще много задач, ответственность за которые несут нижележащие уровни. После формирования сообщения прикладной уровень направляет его вниз по стеку уровню представления. Протокол уровня представления на основании информации, полученной из заголовка сообщения прикладного уровня, выполняет требуемые действия и добавляет к сообщению собственную служебную информацию — заголовок уровня представления, в котором содержатся указания для протокола уровня представления машины-адресата. Полученное в результате сообщение передается вниз сеансовому уровню, который, в свою очередь, добавляет свой заголовок и т. д. (Некоторые реализации протоколов помещают служебную информацию не только в начале сообщения в виде заголовка, но и в конце в виде так называемого концевика.) Наконец, сообщение достигает нижнего, физического, уровня, который собственно и передает его по линиям связи машине-адресату. К этому моменту сообщение «обрастает» заголовками всех уровней (рис. 4.7). Сообщение 3-го уровня Заголовок 3[ |