Взаимодействие открытых систем
2.1 Эталонная модель OSI
Обмен информацией между компьютерами, объединенными в сеть, очень сложная задача. Это связано с тем, что существует много производителей аппаратных и программных средств вычислительных систем. Единственный выход - унифицировать средства сопряжения систем, а именно использовать открытые системы. Открытая система взаимодействует с другими системами в соответствии с принятыми стандартами.
В 1984г. Международная Организация по Стандартизации (ISO) выпустила стандарт - семиуровневую эталонную модель взаимодействия открытых систем (Seven-layer Open System Interconnection Reference Model – OSI), чтобы помочь поставщикам создавать совместимые сетевые аппаратные и программные средства. Модель OSI представляет собой универсальный стандарт на взаимодействие двух систем (компьютеров) через вычислительную сеть.
Модель OSI описывает только системные средства взаимодействия, реализуемые операционной системой, системными утилитами, системными аппаратными средствами. Модель не включает средства взаимодействия приложений конечных пользователей. Свои собственные протоколы взаимодействия приложения реализуют, обращаясь к системным средствам. Поэтому необходимо различать уровень взаимодействия приложений и прикладной уровень.
Следует также иметь в виду, что приложение может взять на себя функции некоторых верхних уровней модели OSI. Например, некоторые СУБД имеют встроенные средства удаленного доступа к файлам. В этом случае приложение, выполняя доступ к удаленным ресурсам, не использует системную файловую службу; оно обходит верхние уровни модели OSI и обращается напрямую к системным средствам, ответственным за транспортировку сообщений по сети, которые располагаются на нижних уровнях модели OSI.
Эта модель описывает функции семи иерархических уровней и интерфейсы взаимодействия между уровнями. Каждый уровень определяется сервисом, который он предоставляет вышестоящему уровню, и протоколом - набором правил и форматов данных для взаимодействия между собой объектов одного уровня, работающих на разных компьютерах.
Каждый уровень поддерживает интерфейсы с выше- и нижележащими уровнями. Ниже перечислены (в направлении сверху вниз) уровни модели OSI и указаны их общие функции.
Уровень приложения (Application) - интерфейс с прикладными процессами.
Уровень представления (Presentation) - согласование представления (форматов, кодировок) данных прикладных процессов.
Сеансовый уровень (Session) - установление, поддержка и закрытие логического сеанса связи между удаленными процессами.
Транспортный уровень (Transport) - обеспечение безошибочного сквозного обмена потоками данных между процессами во время сеанса.
Сетевой уровень (Network) - фрагментация и сборка передаваемых транспортным уровнем данных, маршрутизация и продвижение их по сети от компьютера-отправителя к компьютеру-получателю.
Канальный уровень (Data Link) - управление каналом передачи данных, управление доступом к среде передачи, передача данных по каналу, обнаружение ошибок в канале и их коррекция.
Физический уровень (Physical) - физический интерфейс с каналом передачи данных, представление данных в виде физических сигналов и их кодирование.
Принципы выделения этих уровней таковы: каждый уровень отражает надлежащий уровень абстракции и имеет строго определенную функцию. Эта функция выбиралась, прежде всего, так, чтобы можно было определить международный стандарт. Границы уровней выбирались так, чтобы минимизировать поток информации через интерфейсы.
Два самых низших уровня - физический и канальный - реализуются аппаратными и программными средствами, остальные пять более высоких уровней реализуются, как правило, программными средствами (рисунок 30).
Рисунок 30 - Модель взаимодействия открытых систем ISO/OSI
При продвижении пакета данных по уровням сверху вниз каждый новый уровень добавляет к пакету свою служебную информацию в виде заголовка и, возможно, трейлера (информации, помещаемой в конец сообщения). Эта операция называется инкапсуляцией данных верхнего уровня в пакете нижнего уровня. Служебная информация предназначается для объекта того же уровня на удаленном компьютере, ее формат и интерпретация определяются протоколом данного уровня. Наконец, сообщение достигает нижнего, физического уровня, который, собственно, и передает его по линиям связи машине-адресату. К этому моменту сообщение "обрастает" заголовками всех уровней.
Когда сообщение по сети поступает на другую машину, оно последовательно перемещается вверх с уровня на уровень. Каждый уровень анализирует, обрабатывает и удаляет заголовок своего уровня, выполняет соответствующие данному уровню функции и передает сообщение вышележащему уровню. Тот в свою очередь рассматривает эти данные как пакет со своей служебной информацией и данными для верхнего уровня, и процедура повторяется, пока пользовательские данные, очищенные от всей служебной информации, не достигнут прикладного процесса.
Рисунок 31 – Вложенность сообщений различных уровней
Кроме термина "сообщение" (message) существуют и другие названия, используемые сетевыми специалистами для обозначения единицы обмена данными. В стандартах ISO для протоколов любого уровня используется такой термин как "протокольный блок данных" - Protocol Data Unit (PDU). Кроме этого, часто используются названия кадр (frame), пакет (packet), дейтаграмма (datagram).
Понятие интерфейса и протокола
Частным случаем декомпозиции задачи является многоуровневое представление, при котором все множество модулей, решающих подзадачи, разбивается на иерархически упорядоченные группы - уровни. Для каждого уровня определяется набор функций-запросов, с которыми к модулям данного уровня могут обращаться модули выше лежащего уровня для решения своих задач. Такой формально определенный набор функций, выполняемых данным уровнем для выше лежащего уровня, а также форматы сообщений, которыми обмениваются два соседних уровня в ходе своего взаимодействия, называется интерфейсом.
Интерфейс определяет совокупный сервис, предоставляемый данным уровнем выше лежащему уровню.
При организации взаимодействия компьютеров в сети каждый уровень ведет "переговоры" с соответствующим уровнем другого компьютера. При передаче сообщений оба участника сетевого обмена должны принять множество соглашений. Соглашения должны быть приняты для всех уровней, начиная от самого низкого уровня передачи битов, до самого высокого уровня, детализирующего, как информация должна быть интерпретирована.
Правила взаимодействия двух машин могут быть описаны в виде набора процедур для каждого из уровней. Такие формализованные правила, определяющие последовательность и формат сообщений, которыми обмениваются сетевые компоненты, лежащие на одном уровне, но в разных узлах, называются протоколами. Программные средства, реализующие некоторый протокол, также называют протоколом.
Протоколы реализуются не только программно-аппаратными средствами компьютеров, но и коммуникационными устройствами. В общем случае связь компьютеров в сети осуществляется не напрямую - "компьютер-компьютер", а через различные коммуникационные устройства такие, например, как концентраторы, коммутаторы или маршрутизаторы. В зависимости от типа устройства, в нем должны быть встроены средства, реализующие некоторый набор сетевых протоколов.
Стек OSI
Следует различать стек протоколов OSI и модель OSI. В то время как модель OSI концептуально определяет процедуру взаимодействия открытых систем, стек OSI - это набор вполне конкретных спецификаций протоколов, образующих согласованный стек протоколов. Это международный, независимый от производителей стандарт. По вполне очевидным причинам стек OSI в отличие от других стандартных стеков полностью соответствует модели взаимодействия OSI, он включает спецификации для всех семи уровней модели взаимодействия открытых систем (рисунок 34).
Рисунок 34 - Стек OSI
На физическом и канальном уровнях стек OSI поддерживает протоколы Ethernet, Token Ring, FDDI, а также протоколы LLC, X.25 и ISDN /1/.
Стек TCP/IP
Стек TCP/IP, называемый также стеком Internet, является одним из наиболее популярных и перспективных стеков коммуникационных протоколов.
Так как стек TCP/IP был разработан до появления модели взаимодействия открытых систем ISO/OSI, соответствие уровней стека TCP/IP уровням модели OSI достаточно условно.
Рисунок 35 – Соответствие стека протоколов TCP/IP модели OSI
Как и в модели OSI, данные более верхних уровней инкапсулируются в пакеты нижних уровней (рисунок 36).
Рисунок 36 - Пример инкапсуляции пакетов в стеке TCP/IP
Стек протоколов TCP/IP делится на 4 уровня: прикладной (application), транспортный (transport), межсетевой (internet) и уровень доступа к среде передачи (network access). Структура протоколов TCP/IP приведена на рисунке 37.
Рисунок 37 - Стек TCP / IP
Стек IPX/SPX
Этот стек является оригинальным стеком протоколов фирмы Novell, который она разработала для своей сетевой операционной системы NetWare еще в начале 80-х годов.
Протоколы Internetwork Packet Exchange (IPX) и Sequenced Packet Exchange (SPX), которые дали имя стеку, являются прямой адаптацией протоколов XNS фирмы Xerox.