Что такое модель OSI? Компьютерные сети для начинающих


В этой статье вы узнаете об основных концепциях модели взаимосвязей открытых систем (OSI) - простым и понятным языком. Для разработчика это хорошая идея - узнать, как все работает "под капотом". Таким образом, вы поймете, что на самом деле делают ваш код и инструменты, которые вы используете.



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

Что такое модель OSI?

Семь слоев OSI

Модель взаимосвязи открытых систем или OSI - это, по сути, справочная система, которая описывает, как компьютеры взаимодействуют друг с другом по сети.

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

Семь слоев - это:

  • Прикладной уровень (Application Layer)
  • Уровень представления (Presentation Layer)
  • Уровень сеанса (Session Layer)
  • Транспортный слой (Transport Layer)
  • Сетевой уровень (Network Layer)
  • Уровень канала передачи данных (Data Link Layer)
  • Физический уровень (Physical Layer)
Если мы думаем об этом в терминах кодирования, то каждый слой представляет собой класс с некоторой базовой функциональностью, и каждый класс взаимодействует только с классом выше или ниже него. Имейте в виду, что это эталонная модель, а это означает, что мы фактически не используем ее в реальной жизни. Существует еще одна модель, которая очень похожа на модель OSI, но она инкапсулирует первые три слоя и последние два.

Эта модель "реальной жизни" называется моделью TCP/IP, на которой работает интернет.

Схема модели OSI vs TCP/IP

Но прежде чем мы перейдем к рассмотрению каждого слоя по очереди, давайте рассмотрим, почему вы должны изучать модель OSI, если она даже не используется в реальной жизни.

Зачем изучать модель OSI

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

Давайте возьмем, к примеру, интернет, помимо всех этих изменений, которые мы наблюдали за последние 20 лет. То, как работает интернет, на самом деле не сильно изменилось. Мы по-прежнему используем протокол HTTP. Это правда, что протокол HTTP был обновлен, но не так сильно. Даже если мы сломаем HTTP, он сделан из TCP, который также не сильно изменился.

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

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

Прикладной уровень

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

  • Ваш браузер отправляет запрос на веб-сервер с использованием протокола HTTP.
  • Ваше почтовое приложение использует протокол SMTP для отправки и получения электронных писем.
  • Без протокола DNS вам пришлось бы ввести 142.250.150.138 вместо google.com.
В двух словах, уровень приложений обрабатывает основу, которую используют почти все приложения конечных пользователей.

Уровень представления

Как только клиент делает HTTP-запрос, сам запрос передается на уровень представления (также называемый синтаксическим уровнем). Этот слой выполняет три основные функции:

  • Шифрование и дешифрование. Вы не хотите, чтобы ваши данные были общедоступны, поэтому умные люди создали безопасность транспортного уровня (TLS). Это, по сути, шифрует ваши данные. Он также отвечает за расшифровку запросов, поступающих с других серверов, которые будут использоваться прикладным уровнем.
  • Сериализация и десериализация. Это несколько громких слов, но по сути они означают "перевод". Мы хотим "перевести" наши данные в формы, понятные нашему приложению. Например, простые структуры данных могут быть переведены в "объекты", которые понимает наше приложение JavaScript. С другой стороны, если мы хотим, чтобы наши данные передавались вниз по слою, мы бы перевели наш объект в простые структуры данных, которые можно было бы понять на нижних уровнях.
  • Компрессия. Это несложно: чем меньше битов нужно отправить, тем быстрее будет запрос. Это также одна из основных функций уровня представления. Имейте в виду, что это сжатие без потерь, что означает, что никакая информация не будет потеряна в процессе.
Ну, чтобы быть справедливым, в реальном мире большинство из этих вещей выполняется на прикладном уровне. Вот почему в модели TCP/IP уровень представления является частью прикладного уровня.

Уровень сеанса

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

Итак, допустим, вы хотите отправиться в google.com. Для этого вам сначала нужно установить связь с google.com , поэтому вы говорите: "Привет, сервер, в чем дело, я хочу подключиться к google.com ". Сервер отвечает: "Да, конечно". Поздравляю, вы только что установили связь с google.com сервер и может свободно отправлять запрос GET для получения страницы. Короче говоря, этот слой используется для:

  • Открытие соединений
  • Поддержание соединений
  • Закрытие соединений.
Теперь наступает проверка реальности: в реальной жизни этого в значительной степени не существует и является частью транспортного уровня, о котором мы поговорим далее.

Транспортный слой

Вот тут-то и происходит самое интересное. Транспортный уровень обычно определяется на основе используемого протокола. Двумя наиболее популярными из них являются:

  • Протокол управления передачей (TCP)
  • Протокол пользовательских дейтаграмм (UDP)
TCP является одним из основных протоколов в пакете internet suite. Он используется поверх IP (интернет-протокола) для обеспечения надежной передачи пакетов.

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

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

UDP в основном используется, когда вам на самом деле все равно, потеряете ли вы несколько пакетов здесь и там, например, потоковое видео. Также имейте в виду, что данные в этом слое называются сегментами.

Короче говоря, TCP надежен, но медленен, в то время как UDP ненадежен, но быстр.

Сетевой уровень

Сетевой уровень отвечает за отправку пакетов из сети в сеть. Я действительно не знаю, почему это называется сетевым уровнем. Его следует назвать интернет–уровнем - потому что наиболее важным протоколом здесь является интернет-протокол (IP).

Что в основном делает IP, так это берет сегменты из транспортного протокола и добавляет метаданные, которые помогают определить, где находится ваш клиент в локальной сети.

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

Уровень канала передачи данных

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

Уровень канала передачи данных разбит на два подуровня:

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

Физический уровень

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

Функция этого слоя состоит в том, чтобы просто преобразовать кадры в байты (8 бит) и отправить их по какому-либо способу передачи (электричество, волны, свет и т. д.). Наконец, наш запрос будет передан на сервер, и сервер пройдет тот же процесс, но в обратном порядке.

Вывод

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

Я надеюсь, что сегодня вы кое-чему научились.
Автор этого материала - я - Пахолков Юрий. Я оказываю услуги по написанию программ на языках Java, C++, C# (а также консультирую по ним) и созданию сайтов. Работаю с сайтами на CMS OpenCart, WordPress, ModX и самописными. Кроме этого, работаю напрямую с JavaScript, PHP, CSS, HTML - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.



тегистатьи IT, интернет, сети, теория программирования




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



Наши услуги
Урок 9. Ожидание завершения параллельных задач C#
Урок 9. Логические побитовые операторы C#