Модель сетевого взаимодействия OSI

Модель сетевого взаимодействия OSI

Современные сети построены по многоуровневому принципу. Сетевое взаимодействие компьютеров в сети описывается с помощью эталонной модели взаимодействия открытых систем  OSI (Open System Interconnect). Она была разработана в начале 80-х годов  международной организацией по стандартизации  ISO как архитектурная модель передачи информации по сети. Модель регламентирует взаимодействие локальных и глобальных сетей, создает основу для стандартизации программных и аппаратных средств. Такой подход обеспечивает возможности передачи информации между различными типами локальных и глобальных сетей, позволяет устройствам одного производителя взаимодействовать с устройствами других производителей.  Не все разработчики сетевого оборудования  и программного обеспечения в точности следуют этой модели, однако она дает основы для понимания способов взаимодействия сетевых компонент. 

Модель описывает структуру уровней сети,  каждый из которых обеспечивает выполнение определенной части сетевых функций при обмене данными между компьютерами. Модель подразделяет работающее оборудование и процессы, происходящие при объединении компьютеров в сеть, в соответствии с логикой их работы. Каждый из уровней выполняет свою специфическую задачу, тем самым, обеспечивая  функционирование всей системы в целом.

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

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

Нормативы OSI описывают следующие моменты функционирования сети:

	взаимодействие сетевых устройств, в том числе устройств, использующих разные протоколы;

	принципы действия и способы  физического соединения сетевых устройств;

	методы обеспечения правильности передачи данных;

	способы поддержания непрерывного потока данных в сетевых устройствах;

	способы представления данных в виде электрических сигналов при передаче по сетевой среде.

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

Потоки информации в модели организованы так, что каждый уровень предполагает, что он напрямую взаимодействует с одноименным уровнем другого узла. Как показано на рис.1., сетевой уровень компьютера 1 считает, что он взаимодействует с сетевым уровнем компьютера 2. Между одноименными уровнями компьютеров сети существует виртуальная (логическая) связь. Реальную же, физическую связь (кабель, радиоканал) абоненты одной сети имеют только на самом нижнем,  физическом уровне. В передающем компьютере информация проходит все уровни, начиная с верхнего и заканчивая нижним. В принимающем компьютере полученная информация совершает обратный путь: от нижнего уровня к верхнему.

Иерархически организованный набор протоколов, достаточный для организации взаимодействия узлов в сети, называется стеком коммуникационных протоколов.

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

Согласно модели, средства взаимодействия делятся на семь уровней: прикладной, представительный, сеансовый, транспортный, сетевой, канальный и физический. Каждый уровень имеет дело с одним определенным аспектом взаимодействия сетевых устройств. Взаимодействие компонентов модели OSI можно проиллюстрировать на следующем примере. Пусть приложение обращается с запросом к прикладному уровню, например к файловой службе. На основании этого запроса программное обеспечение прикладного уровня формирует сообщение стандартного формата. Обычное сообщение состоит из заголовка и поля данных. Заголовок содержит служебную информацию, которую необходимо передать через сеть прикладному уровню машины-адресата, чтобы сообщить ему, какую работу надо выполнить. В рассматриваемом  случае заголовок должен содержать служебную информацию о месте нахождения файла и о типе операции, которую необходимо над ним выполнить. Поле данных сообщения может быть пустым или содержать данные, которые необходимо записать в удаленный файл. Для того чтобы доставить эту информацию по назначению, необходимо пройти ряд этапов, выполняемых  нижележащими  уровнями.

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

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

Физический уровень описывает  физические среды  передачи данных (коаксиальный кабель, витая пара, оптоволоконный кабель), преобразует данные в передаваемый сигнал (биты), соответствующий среде. Этот уровень распознает физическую структуру сети, учитывает характеристики физических сред: полосу пропускания, помехозащищенность, волновое сопротивление и другие, определяет  уровни напряжения или тока передаваемого сигнала, тип кодирования, скорость передачи сигналов. Кроме этого, здесь стандартизуются типы разъемов и назначение каждого контакта. Функции физического уровня реализуются во всех устройствах, подключенных к сети. Со стороны компьютера функции физического уровня выполняются сетевым адаптером.

Одной из задач канального уровня  является проверка доступности среды передачи в том случае, если используются разделяемые линии связи. Другой задачей является реализация механизмов обнаружения и коррекции ошибок. Для этого биты группируются в наборы, называемые кадрами (frames), содержащие поля с адресной и управляющей информацией. Фрейм содержит признак начала кадра, адрес устройства или передающего узла, отправляющего кадр ( адрес источника), адрес устройства или принимающего узла, получающего кадр (адрес назначения), управляющую информацию для контроля коммуникационного процесса, данные, информацию для обнаружения ошибок (контрольные данные), трейлер (концевик) или признак конца кадра.  Канальный уровень обеспечивает корректность передачи каждого кадра, помещая специальную последовательность битов в начало и конец каждого кадра. При этом путем обработки всех байтов кадра вычисляется контрольная сумма и добавляется к нему. Когда кадр приходит по сети, получатель снова вычисляет контрольную сумму полученных данных и сравнивает результат с контрольной суммой из кадра. Если они совпадают, кадр считается правильным и принимается. Если же контрольные суммы не совпадают, то фиксируется ошибка. Канальные уровни двух устройств связаны логически благодаря используемым протоколам. Протоколы канального уровня обеспечивают доставку кадра между любыми двумя узлами локальной сети той топологии, для которой они разработаны. Они используются компьютерами, коммутаторами и маршрутизаторами. В компьютерах функции канального уровня реализуются сетевыми адаптерами. Они реализуют различные протоколы локальных сетей, в зависимости от этого делятся на адаптеры Ethernet, Token Ring, FDDI и т.д.

Канальный уровень содержит два важных подуровня: более высокий – управление логическим соединением (logical link control, LLC) и более низкий – протокол управления доступом к передающей среде (media access control, MAC). Подуровень LLC обеспечивает надежность коммуникаций путем установки канала передачи данных между двумя узлами поддержки устойчивости этого канала. Подуровень MAC распознает физический адрес (адрес устройства), называемый MAC-адресом, содержащийся в каждом кадре. Например, на каком-либо компьютере подуровень МАС проверяет каждый кадр, поступающий на него, и передает его более высокому уровню только в том случае, если адрес совпадает. В противном случае кадр отбрасывается.  

Для обеспечения качественной транспортировки сообщений в сетях любых топологий и технологий возможностей канального уровня оказывается недостаточно, поэтому в модели OSI решение этой задачи возлагается на два следующих уровня – сетевой и транспортный.

	Сетевой уровень служит для доставки данных между сетями,  которые могут использовать различные принципы передачи сообщений между конечными узлами и обладать произвольной структурой связей, например, отличаться технологией. Функции сетевого уровня достаточно разнообразны. Одной из главных является задача  выбора наилучшего пути передачи сообщений между сетями – задача маршрутизации. Выбор маршрута может осуществляться как по суммарной длине пути передачи, так и по другим критериям, например надежности передачи. Решаются также задачи согласования разных технологий, упрощения адресации в крупных сетях и защита от нежелательного трафика между сетями.

На сетевом уровне определяется два вида протоколов: сетевые (routed protocols), реализующие продвижение пакетов через сеть, и протоколы маршрутизации (routing protocols). Протоколы сетевого уровня реализуются программными модулями операционной системы, а также программными и аппаратными средствами маршрутизаторов.

	На пути от отправителя к получателю пакеты могут быть искажены или утеряны. Транспортный уровень  обеспечивает приложениям или верхним уровням стека – прикладному и сеансовому – передачу данных с той степенью надежности, которая им требуется. Модель OSI определяет пять классов сервиса, предоставляемых транспортным уровнем. Эти виды сервиса отличаются качеством предоставляемых услуг: срочностью, возможностью восстановления прерванной связи, наличием средств мультиплексирования нескольких соединений между различными прикладными протоколами через общий транспортный протокол, а главное – способностью к обнаружению и исправлению ошибок передачи, таких как искажение, потеря и дублирование пакетов.



Рис.1. Модель взаимодействия открытых систем OSI.

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

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

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

Уровень представления связан с формой передаваемой по сети информации, содержание остается неизменным. Средства этого уровня позволяют протоколам прикладного уровня  преодолеть различия в представлении текста,  данных или   кодах символов, например кодов ASCII. Функции уровня гарантируют, что информация, передаваемая прикладным уровнем одной системы, будет прочитана прикладным уровнем другой системы. На этом уровне может выполняться шифрование и дешифрование данных, благодаря которому обеспечивается секретность обмена данными, а также сжатие, распаковка, кодирование. Примером одного из протоколов является протокол Secure Socket Layer (SSL), который обеспечивает секретный обмен сообщениями для протоколов прикладного уровня. 

Прикладной уровень - это набор разнообразных протоколов, с помощью которых пользователи сети получают доступ к разделяемым ресурсам, таким как файлы, принтеры или гипертекстовые Web-страницы, а также сетевым службам, таким как передача файлов (протокол FTP),  электронная почта (протокол SMTP) и  др.