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

chto takoe model osi kompyuternye seti dlya nachinayushhih

В этой статье вы узнаете основные концепции модели взаимосвязей открытых систем (OSI) простым и легким способом.

Как разработчику, это хорошая идея узнать, как все работает под капотом. Таким образом, вы понимаете, что на самом деле делают ваш код и инструменты, которые вы используете.

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

Популярной абстракцией черного ящика Интернет.

Конечно, многие из нас наверняка знают основы того, что такое Интернет и как он работает. Есть ли клиент и сервер, и они просто «общаются» друг с другом с помощью чего-то, что называется HTTP или HTTPS?

Но это объем знаний большинства людей.

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

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

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

osi-модель-слои
Семь слоев OSI

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

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

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

Семь слоев:

  1. Уровень программы
  2. Слой презентации
  3. Уровень сеанса
  4. Транспортный уровень
  5. Сетевой уровень
  6. Канальный уровень данных
  7. Физический слой

Если рассматривать это в терминах кодирования, каждый уровень является классом с некоторыми основными функциональными возможностями и каждый класс взаимодействует только с классом выше или ниже.

Имейте в виду, что это a ссылки модель, то есть мы действительно не используем ее в реальной жизни. Существует еще одна модель, очень похожая на модель OSI, но она инкапсулирует первые три слоя и два последних.

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

osi-vs-tcpip-1
Диаграмма моделей OSI и TCP/IP

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

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

За последние 20 лет мир резко поменялся.

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

Но, вы должны помнить это:

Учите основы, учитесь на первых принципах.

Возьмем, например, Интернет, в стороне от всех этих изменений, которые мы наблюдали за последние 20 лет.

То, как работает Интернет, действительно не сильно изменилось.

Мы все еще используем протокол HTTP.

Это верно, что протокол HTTP обновлен, но не так сильно.

Даже если мы нарушим HTTP, он создан с TCP, который тоже не сильно изменился.

Мое мнение состоит в том, что вы должны перестать смотреть на новые блестящие вещи и сосредоточиться на основах, на которых построены эти блестящие новые вещи.

Например, я помню, когда веб-сокеты были популярной вещью.

Но если разобраться, они основаны на протоколе TCP.

Если вы знаете TCP, вы можете легко понять, как работают веб-сокеты, и вам не придется полагаться на абстракции черного ящика.

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

После этого давайте рассмотрим семь слоев модели OSI.

Семь слоев модели OSI

Уровень программы

3
Это слой, на котором существует конечный пользователь

На прикладном уровне работает большинство инженеров-программистов. И здесь живут ваши браузеры.

Но я не говорю о конкретных программах, таких как Chrome, Skype или Outlook.

Я говорю более фундаментальные вещи, например, протоколы.

Например:

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

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

Слой презентации

4

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

Этот уровень обрабатывает три основные функции:

Шифрование и дешифрование

Вы не хотите, чтобы ваши данные были публичными, поэтому разумные люди создали систему безопасности транспортного уровня (TLS). В сущности, он шифрует ваши данные.

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

Сериализация и десериализация

Это некоторые большие слова, но, по сути, они означают «перевод».

Мы хотим «перевести» наши данные в формы, которые понимает наша программа.

Например, простые структуры данных можно перевести в «объекты», которые понимает наше приложение JavaScript.

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

Сжатие

Это нетрудно: чем меньше битов будет отправлено, тем быстрее будет запрос.

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

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

Вот почему у модели TCP/IP уровень презентации является частью прикладного уровня.

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

5-1
Уровень сеанса отвечает за открытие, закрытие и поддержку соединений между клиентом и сервером

Это немного запутано. В самом деле, я не смог найти много вариантов использования для него.

Основной функцией уровня сеанса является управление подключениями между клиентом и сервером.

Но что это действительно значит?

Итак, предположим, что вы хотите перейти на google.com

Для этого сначала нужно установить соединение с google.com, чтобы сказать «Привет, сервер, что произошло, я хочу подключиться к google.com».

Сервер отвечает: «Да, конечно».

Приветствуем, что вы только что установили соединение с сервером google.com и можете отправить запрос GET для получения страницы.

Короче говоря, этот слой используется для:

  • Открытие соединений
  • Поддержка связей
  • Замыкание соединений.

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

Транспортный уровень

Транспортный уровень
Визуализация TCP и UDP

Вот здесь и происходят интересные вещи.

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

Наиболее популярны два:

  • Протокол управления передачей (TCP)
  • Протокол дейтаграмм пользователя (UDP)

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

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

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

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

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

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

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

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

Сетевой уровень-1
Сетевой уровень отвечает за отправку пакетов из сети в сеть

Я не знаю, почему это называется сетевым уровнем.

Его следует назвать Интернет-уровнем, потому что важнейшим протоколом здесь является Интернет-протокол (IP).

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

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

Данные на этом уровне называются пакетами.

Уровень связи данных
Канальный уровень данных состоит из двух частей: MAC и LLC

Этот уровень определяет способ передачи данных между двумя системами.

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

Канальный уровень данных разбит на два подслойных:

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

Пакеты извлекаются из сетевого уровня и инкапсулируются с добавлением новых заголовков для MAC-адреса клиента и сервера.

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

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

Физический слой

Физический уровень
Биты можно передавать с помощью электричества, радиоволн или даже света

Наконец это физический уровень.

Не путайте со словом физическим – мы говорим не только о проводах.

Данные могут передаваться разными способами, например радиоволнами или даже светом.

К сожалению, эти способы транспортировки не знают рамок, они знают только биты.

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

Наконец-то наш запрос будет передан на сервер, и сервер пройдет тот же процесс, но в обратном порядке.

Вывод

В этой статье вы узнали:

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

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

Я планирую публиковать фрагменты подобного содержимого в Twitter, поэтому если вам интересно, следите за мной @tamerlan_dev.

Добавить комментарий

Ваш адрес email не будет опубликован.