Сетевая модель OSI

Dependences: none

Вступление

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

Что такое многоуровневая модель?


Если вы уже знакомы с многоуровневыми сетевыми моделями и имеете представление о преимуществах разбиения протоколов на уровни, то можете смело пролистывать данный раздел. Но если вы все же заинтересованы разобраться в этих понятиях, то предлагаю рассмотреть следующий сценарий: построим сильно упрощенную многоуровневую модель, которая описывает общение двух людей. Назовем этих людей Speaker и Listener, в зависимости от того говорит ли человек или слушает.
И так, чтобы людям общаться, они должны говорить на одном языке и понимать друг друга, иначе речь будет выглядеть как набор непонятных звуков. Поэтому первая задача — выбрать язык, на котором говорить. Это является ярким примером выбора одинаковых протоколов для общения. Далее Speaker разбивает свое предложение на слова, которые в свою очередь произносятся по звукам. Таким образом, мы разбили процесс произношения предложения на 3 логических уровня:

OSI Logical levels

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

Теперь пора описать функции каждого уровня нашей модели:
  1. Уровень передачи звуков описывает как нужно передать отдельные звуки через физическую среду. Примерами протоколов могут быть: передача звуков колебаниями воздуха, кодированием звуков (как азбука Морзе), телепатия.
  2. Уровень слов описывает формирование слов из звуков (правильное написание), нахождение части речи, нахождение значений слов.
  3. Уровень предложений описывает построение предложения из слов. Например, Speaker призносит предложение яблоко хочу, а Listener из услышанных слов яблоко и хочу понимает предложение хочу яблого.

Не будем придираться к лингвистике, так как модель представлена лишь для демонстации многоуровневой модели.

Как видно из описания уровней модели и их функций, мы выбираем протоколы какого-либо уровня, не влияя на другие уровни. Примером служит выбор протокола передачи звуков — неважно, передавать звуки по воздуху, кодами или телепатией, на формирование слов это не повлияет. Аналогично, как бы мы не выбрали граматику для построения предложения, это не повлияет на разбиение его на слова и передачу звуками.
Рассмотрим как проходит процесс произношения предложения Speaker'ом и восприятия его Listener'ом. Speaker хочет сказать предложение, для чего он разбивает его на слова и произносит звуками. Listener производит операции в обратном порядке: слышит звуки, из которых формирует слова, далее предложение. Значит процесс общения начинается на верхнем уровне модели для Speaker'а проходит вниз уровень за уровнем, затем подымается вверх по уровнях для Listener'а и заканчивается на высшем уровне. Можно сделать вывод, что общение собеседников происходит по вертикали модели.
Также следует заметить, что логически общение между уровнями собеседников проихожит горизонтально, это значит, что звуки уровня передачи звуков воспринимаются тем же уровнем собеседника; аналогичо, слова, передаваемые на уровне слов, воспримутся в таком же виде тем же уровнем собеседника; и, конечно, суть предложения без изменений воспримится (по крайней мере должна) уровнем предложения собеседника.

Теперь пришло время выделить приимущества разбиения процесса общения на уровни:
  • Выделение независимых задач на каждом уровне.
  • Упрощение описания всего процесса общения.
  • Упрощение дизайна отдельный протоколов, которые решают задачи отдельного уровня.
  • Упрощение взаимодействия (общения) собеседников.
  • Гибкость в выборе протокола отдельного уровня.

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

Эталонная сетевая модель OSI

Сетевая модель OSI расшифровывается как Open System Interconnection. В переводе — модель взаимосвязи открытых систем. Была разработана в 1980-е года. Проблема создания подобной модели появилась не моментально, а росла вместе с развитием компьютерных сетей. Раньше царствовало время проприетарных стеков протоколов, которые были несовместимы между собой. Поэтому появилась нерешаемая, или трудно решаемая, проблема — взаимодействие оборудования от разных производителей или взаимосвязь между разными операционными системами. Для ее решения была начата работа над созданием общей многоуровневой сетевой модели.
Прежде чем приступить к рассмотрению данной модели, нужно уточнить, что такое открытая система. За определением, что в большей мере нас удовлетворит, обратимся к русской википедии: «Открытая система — это система, которая реализует открытые спецификации на интерфейсы, сервисы (услуги среды) и поддерживаемые форматы данных, достаточные для того, чтобы дать возможность должным образом разработанному прикладному программному обеспечению быть переносимым в широком диапазоне систем с минимальными изменениями, взаимодействовать с другими приложениями на локальных и удаленных системах, и взаимодействовать с пользователями в стиле, который облегчает переход пользователей от системы к системе». Это определение можно расширить и на сетевые протоколы и технологии, от чего становится очевидным предназначение модели. Открытые системы (это и аппаратная часть, операционные системы, реализации стеков протоколов, программное обеспечение) могут взаимодействовать между собой.
Модель OSI состоит из семи уровней, каждый из которых решает определенные задачи. Уровни номеруются, начиная с самого нижнего, и могут именоваться как по номеру, так и названию. Сетевая модель OSI стала эталонной и в терминах компьютерных сетей часто можно встретить понятия, подобно протокол четвертого уровня, что автоматически понимается как протокол четвертого уровня сетевой модели OSI.

Модель имеет следующую структуру:

OSI Model

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

Уровень Приложений. Этот уровень еще называется Прикладной Уровень. Предоставляет службы программному обеспечению, которые находятся вне модели OSI.
Уровень Представлений. Задачей этого уровня является представление данных в понятном для прикладного уровня виде. Подзадачами являются шифрование, кодирование,сжатие данных.
Сеансовый уровень. Отвечает за установку, использование и завершение сеансов связи между приложениями, а также управляет диалогами между этими приложениями.
Управление диалогами означает, что на этом уровне определяется кто и в какой момент может/должен отправлять данные. Часто данный уровень является самым трудным для понимания, так как его сложно связать с практическими примерами.
За конкретными примерами сетевых протоколов обратимся к Википедии. Но стоит заметить, что протоколы отнесены по уровням модели OSI, соответственно к задачам, которые они решают. На самом деле большинство представленных протоколов являются частью стека протоколов TCP/IP. Это означает, что протоколы сеансового уровня и уровня представлений являются протоколами прикладного уровня модели TCP/IP (см. ниже). Может поэтому на той же Википедии протоколы SSH и SSL отнесены к разным уровням модели OSI на разных страницах. И, на мой взгляд, решение отнести протокол SSL к сенсовому уровню — явная ошибка, так как он решает задачи уровня представлений.
Транспортный уровень. Отвечает за конечную доставку, говорят еще end-to-end, подразумевая доставку от конкретного приложения одной системы к приложению другой системы. На этом уровне появляется адресация — порты. Рассматривая в контексте распространенных протоколов TCP и UDP, порт — это 16-битный адрес конкретного приложения. Также одной из важных задач данного уровня является сегментация данных уровня приложений. Сегментация — это разбиение потока данных на сегменты для отправки. На этом уровне PDU является сегментом.
Сетевой уровень. Решает проблему доставки между конечными системами (но не приложениями, как на транспортном уровне). Здесь происходит межсетевое общение.
Например, IP протокол решает проблему доставки наилучшем способом. На этом уровне PDU является пакетом.
Канальный уровень. Проект ieee802 разбивает логически этот уровень на два подуровня: управление доступ к среде передачи (MAC, Media Access Control) и логическое управление каналом (LLC, Logical Link Control).
На данном уровне обеспечивается передача кадров через установленный физический канал. Задачами уровня также являются: установка виртуальных каналов, контроль потока.
На этом уровне PDU является кадром.
Физический уровень. Данные представляются в виде электрических импульсов, пучков света, электромагнитных волн, что кодируют биты. Задача состоит в создании физического канала для отправки битов.

Сетевая модель DoD


Часто модель DoD называют еще моделью TCP/IP. Она состоит из четырех уровней:

DoD Model

Можно встретить такое сравнение моделей OSI и DoD:

DoD Model and OSI

Но любое приведение соответствия между уровнями моделей является в корне неверным. Модели OSI и DoD являются разными и независимыми сетевыми моделями. Так их и нужно рассматривать. Также стоит помнить, что на практике стек протоколов TCP/IP довольно распространен и протоколы соответствуют модели DoD, поэтому их не всегда можно корректно описать моделью OSI. При всем этом, модель OSI нашла применение как теоретическая основа описания функциональности сетей.

Стек протоколов

Нужно четко различать сетевую модель и стек протоколов. Особенно это замечание хочу отнести к стеку протоколов TCP/IP, так как на практике встречал обратное мнение.
Стек протоколов — это набор сетевых протоколов, которые взаимодействуют между собой и обеспечивают полный набор функций. В то время, как многоуровневая сетевая является теоретической основой, которая описывает задачи каждого уровня. Грубо говоря, стек протоколов — это практическая реализация многоуровневой сетевой модели, хотя
конкретный протокол может отличаться от описания уровня сетевой модели. Например, знакомый нам всем Ethernet является урезанной реализацией канального уровня сетевой модели OSI и чтобы лучше представить почему, вспомните Frame Relay, где присутствует управление потоком, установка виртуальных каналов.

Стек протоколов OSI имеет ряд недостатков, если сравнивать со стеком TCP/IP:
  • Сетевая модель DoD появилась раньше, хотя это и не назовешь недостатком...
  • Модель OSI имеет значительно больше уровней, чем модель TCP/IP
  • Распространение сети Internet
Благодарим за статью: Дмитрия Подгорного

Войти