1.3. Модель OSI

OSI и TCP/IP — две самые широко используемые сетевые модели для построения маршрута. В этой и следующих статьях мы будем рассматривать их подробно.

OSI (Open Systems Interconnection) — это не протокол, а модель, основанная на концепции многоуровневости. Она разработана Международной организацией по стандартизации. Имеет вертикальный набор слоёв, каждый из которых выполняет свои функции.

Основная цель модели OSI — провести проектирование и разработку оборудования, устройств и программного обеспечения таким образом, чтобы они могли максимально эффективно взаимодействовать.

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

Понимание путей передачи и процессов во время передачи позволяет создать более эффективную архитектуру.

Говоря простыми словами, OSI — это модель процесса передачи данных, который разделён на семь частей. Визуально это выглядит так:

Путь данных по модели OSI

В каждой из этих частей используются свои протоколы, которые добавляют к полезной информации собственные данные или преобразуют их. Дополнения нужны, чтобы информация дошла до получателя. Такой процесс можно сравнить с курьерской доставкой из Москвы в Санкт-Петербург. Доставка должна пройти через курьера, который заберёт посылку по адресу. Затем на сортировочном пункте посылка попадёт на распределение на поезд или самолёт. И так далее, пока пакет не поступит получателю. В процессе этой передачи на каждой точке есть собственные стандарты, необходимые для передачи информации, проверки безопасности и многого другого.

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

Рассмотрим каждый уровень отдельно.

07 Прикладной уровень (Application)

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

Это единственный уровень, который напрямую взаимодействует с данными пользователей. При этом сами приложения не являются частью уровня. На этом уровне обрабатывается информация из приложений.

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

На этом уровне работают протоколы HTTP, EMAIL/POP, FTP, SMTP.

Модель OSI

06 Уровень представления (Presentation)

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

В одной из серий «Южного парка» Smart TV начал сжигать дома вместо переключения на другой канал. Как раз на этом уровне обеспечивается понимание между разными устройствами, чтобы Smart TV правильно понял получаемую им информацию. Также здесь происходит кодирование и декодирование, шифрование и дешифрование. Чтобы всё было передано и преобразовано в понятном для принимающего устройства виде.

Например, протокол RDP обеспечивает удалённое подключение к компьютеру с другой операционной системой. Та операционная система, которая отправляет, должна точно передать данные. А принимающая ОС должна точно их принять.

Здесь же протокол SSL с безопасным соединением между компьютером и сервером.

05 Сеансовый уровень (Session)

Здесь происходит открытие и закрытие связи между двумя компьютерами (сеанс — это период между открытием и закрытием). Этот уровень отвечает за поддержание сеанса связи между устройствами и их синхронизации.

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

  • Есть соединение?
  • Нет.
  • Есть соединение?
  • Нет.
  • Есть соединение?
  • Да, продолжаем сеанс связи.

Здесь же происходит управление токенами и синхронизация.

Протоколы: TCP.

04 Транспортный уровень (Transport)

Отвечает за надёжность передачи данных, при этом могут быть разные степени надёжности. Здесь же решается порядок передачи данных. Например, для видеотрансляции максимально важна скорость доставки. Её пропустят, как скорый поезд. А какая-нибудь картинка может доставляться долго и будет пропускать «другие поезда».

Протоколы: TCP, UDP.

03 Сетевой уровень (Network)

Образует единую транспортную систему из сетей, построенных по разным сетевым технологиям. Обеспечивает маршрутизацию — куда какой поток данных направить. Даёт адрес. Есть протоколы, которые обеспечивают информацию, насколько нагружена сеть.

Протоколы: IP, RIP, OSPF.

02 Канальный уровень (Data link)

В глобальных сетях обеспечивает доставку между двумя соседними узлами. В локальных сетях, где многие уровни OSI отсутствуют, на этом уровне возложена доставка данных от начала до конца. Работает за счёт «железа».

На втором уровне проверяются и исправляются ошибки передачи. Здесь мы оперируем понятиями «фрейм» или «кадр». Это полезные данные, которым добавлена дополнительная служебная информация, например адрес отправителя и получателя. Нам также нужно сообщать, от кого и кому предназначаются пересылаемые данные.

Здесь появляются первые идентификаторы MAC-адреса. MAC-адрес — это уникальный номер сетевого оборудования или сетевого порта, то есть физический адрес. Он нужен, чтобы идентифицировать устройство в одной сети. То есть MAC-адрес — это адрес устройства на канальном уровне. На этом уровне обитают такие устройства, как коммутаторы — переключатели, которые нужны для соединения узлов компьютерной сети.

Протоколы: Ethernet (проводная связь), PPP (протокол «точка-точка», который транспортирует IP пакеты).

01 Физический уровень (Physical)

Передаются данные в сеть, не вникая в смысл передаваемой информации. Проще говоря, это уровень проводов. Управляется канальным уровнем.

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

Среди технологий, которые живут на первом уровне, можно выделить основной стандарт — Ethernet, он находится на нескольких уровнях, а также Bluetooth, WI-FI, USB, инфракрасный порт и другие.

Все сетевые устройства работают по модели OSI. Некоторые используют все семь уровней, а другие — меньше. Например, компьютер или смартфон используют все уровни, маршрутизатор (он же роутер, сетевое устройство, которое перенаправляет пакеты данных) — три нижних уровня, коммутатор — только два нижних уровня.

Маршрут по OSI с маршрутизатором и коммутатором

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

Таким образом, пакет данных дополняется или преобразовывается в пути:

Преобразование пакета данных в пути

Мы разобрали, какой путь проходит информация при отправке. Эти знания очень важны. Без них сложно или даже невозможно справиться со сбоями или оптимизировать производительность веб-приложения.

Основные моменты

  1. Модель OSI — это теоретическая эталонная модель.
  2. Передача между уровнями определена протоколами.
  3. При переходе с уровня на уровень данные дополняются или преобразовываются.
  4. Уровни могут сочетать похожие функции.

В следующей статье мы рассмотрим стек протоколов TCP/IP.