1. Краткое описание модели OSI
Что такое модель OSI
Чтобы понять как работает сама сеть необходимо в первую очередь знать Эталонную Модель Взаимодействия OSI (Open System Interconnected). Модель состоит из 7 уровней. Каждый уровень описывает определенные действия и протоколы, которые необходимы для корректного функционирования сети. Таким образом, мы можем создать различные сетевые устройства, которые будут выполнять работу (следовать сетевому протоколу) конкретного уровня модели OSI, не заботясь о том, что происходит на других уровнях. Иными словами, одно устройство будет кодировать и преобразовывать передаваемые данные в нужный формат, а другое - будет передавать эти же данные по сети.
Кроме того, такой “раздельный” подход модели позволяет оборудованию разных производителей взаимодействовать друг с другом.
Чтобы лучше понять такой подход рассмотрим простой пример:
У каждого имеется компьютер. Чтобы пользоваться интернетом в первую очередь необходимо иметь сетевую карту (которая по умолчанию уже стоит на всех PC/ноутбуках), а также модем, который по кабелю подключен к провайдеру.
Так вот:
- Компьютер выполняет, например, показ изображений, видео, печатание текста.
- Сетевая карта выполняет подключение к модему и передачу данных.
- Модем осуществляет взаимодействие с провайдером.
Каждое из этих устройств работает на определенном уровне модели OSI и выполняет только те действия, которые предписаны ей уровнем (сетевым протоколом) и не больше и не меньше.
Почему не создать универсальное устройство, которое будет работать на всех уровнях?
Теоретически это можно сделать, но такое устройство будет очень дорогим и нестабильным в плане функциональности. Чем больше устройство поддерживает функций, тем чаще оно ломается. Кроме того, во многих случаях эффективнее использовать узкоспециализированное устройство.
Однако существуют устройства, которые поддерживают функции нескольких уровней OSI.
Так как же выглядит модель OSI?
Структура модели OSI
Вот как выглядит модель
Прикладной уровень - описывает пользовательские программы/приложения, которые в большинстве случаев взаимодействуют с пользователем. Например, сетевая игра World Of Tanks, Skype работают на прикладном уровне. Они предоставляют пользователю удобный интерфейс, с помощью которого он общается по сети с другими участниками.
Представительный уровень - все полученные данные преобразуются в определенные формат, код, форму, которые понятны самому компьютеру и остальным уровням. Например, играя в World Of Tanks нам необходимо преобразовать звук, картинки, видео и действия игрока в удобную для компьютера форму, код/сигнал.
Сеансовый уровень - на этом уровне устанавливается и поддерживается диалог с другим компьютером или сервером.
Транспортный уровень - здесь обеспечивается надежное взаимодействие твоего компьютера с другим компьютером. Если по каким-то причинам связь кратковременно оборвется или уменьшится скорость передачи данных, то этот уровень обеспечит нормальное функционирование и восстановление диалога с удаленным узлом. Кроме того, с помощью транспортного уровня обеспечивается многокальная связь с различными удаленными устройствами. Например, играя в тот же World Of Tanks ты сможешь просматривать почту на mail.ru, а также общаться по Skype. Все 3 приложения работают на прикладном уровне и именно транспортный уровень позволяет одновременную работу всех трех приложений.
Сетевой уровень - на этом уровне происходит поиск оптимального маршрута (маршрутизация) к удаленному устройству на основе его сетевого адреса - IP адреса. Зная адрес удаленного узла сетевой уровень найдет получателя среди множества других в бесконечном пространстве сети Internet.
Канальный уровень - на этом уровне обеспечивается взаимодействие 2-х разных сетевых устройств друг с другом. Например, твой компьютер подключен к модему, модем же подключается к сетевому оборудованию провайдера. Компьютер общается с модемом, используя один “язык” (технологию), в то время, как модем общается с провайдером на другом “языке”. Чтобы преобразовать данные в такой язык, понятный противоположному узлу и используется канальный уровень.
Зачем создавать столько разных технологий взаимодействий на канальном уровне? Не проще ли создать одну технологию и подключить компьютер к провайдеру напрямую?
Теоретически можно, но не всегда это возможно. Технологии канального уровня создавались исходя из возможностей устройств и самой сети. К тому же, разные технологии имеют различные возможности, такие как скорость передачи, максимальное расстояние передачи, задержки сигнала и другие. Поэтому и используются различные технологии и канальный уровень.
Физический уровень - это уровень представляет собой среду распространения сигнала. В качестве среды передачи может выступать электрический и оптический кабели, радио и спутниковые антенны. На этом уровне и происходит преобразование сигнала в соответствующую форму для передачи по физической среде.
На первый взгляд все выглядит сложно, поэтому рассмотрим работу модели на примере общения 2-х пользователей по Skype
Когда Алиса пишет сообщение Кате, то ее данные дробятся на блоки и передаются от верхнего прикладного уровня вниз на физический уровень. При этом каждый уровень добавляет свою служебную информацию в поступающие блоки данных от вышестоящего уровня. Данный процесс называется инкапсуляцией. На каждом уровне эти блоки данных имеют разные названия, как показано на рисунке
Когда переданные Алисой сообщения достигнут компьютера Катя, то произойдет обратный процесс - данные с нижнего физического уровня будут передаваться на верхний прикладной уровень, чтобы Катя увидела полученные сообщения. На этот раз на каждом уровне ранее добавленная служебная информация будет удаляться и на прикладном уровне все блоки соберутся в единый поток данных. Данный процесс называется декапсуляцией.
То же самое происходит, когда Катя передает данные Алисе.
Предлагаю рассмотреть весь процесс на представленной ниже анимации:
Как видишь универсальным устройством, работающим на всех уровнях является в нашем случае компьютер.
Однако модель OSI является лишь теоретической моделью, попыткой стандартизировать взаимодействие сетевых устройств с помощью создания своего рода стека протоколов для каждого уровня.