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

В этой статье вы узнаете об основных понятиях модели Open Systems Interconnections (OSI) в простой и доступной форме. Многие, вероятно, знают основы того, что такое интернет и как он работает. Есть клиент и сервер, и они «общаются» друг с другом с помощью чего-то, называемого HTTP или HTTPS?

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

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

6dfb8093ac77973d5665a6702d3ce096.png

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

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

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

Семь уровней:

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

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

  • Сеансовый уровень

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

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

  • Канальный уровень

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

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

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

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

Модели OSI и TCP/IP

Модели OSI и TCP/IP

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

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

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

И я думаю, что изучить основы будет хорошей идеей. Возьмем, к примеру, веб, не считая всех этих изменений, которые мы наблюдали в течение последних 20 лет. То, как работает веб, на самом деле не сильно изменилось. Мы по-прежнему используем протокол HTTP. Правда, протокол HTTP был обновлен, но не так уж сильно. Даже если мы разберем HTTP, он сделан на основе TCP, который также не сильно изменился. Я хочу сказать, что прежде чем смотреть на новые технологии, лучше изучить основы.Например, когда — то были популярны веб-сокеты. Но если разобраться, они основаны на протоколе TCP. Если вы знаете TCP, вы легко поймете, как работают веб-сокеты, и вам не придется полагаться на абстракции. Надеюсь, я убедил вас в том, что учиться лучше изучить основы. Это относится не только к программной инженерии, но и ко многим другим областям.

Тут понятно, давайте рассмотрим семь уровней модели OSI.

Семь уровней модели OSI

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

Application Layer

Application Layer

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

Но это не конкретные приложения, такие как Chrome, Tik-Tok или Telegram. Это более фундаментальные вещи, такие как протоколы.

Например:

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

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

360fa37279ecbb5087cb5e61a8471915.png

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

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

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

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

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

Сжатие

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

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

c4d60cdef751b402777a7d6c823e440a.png

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

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

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

  • открытия соединений

  • поддержания соединений

  • закрытия соединений.

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

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

TCP и UDP

TCP и UDP

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

Два наиболее популярных из них:

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

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

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

Сетевой уровень отвечает за передачу пакетов из сети в сеть. Логичнее было если бы он назывался интернет-уровнем — потому что самый важный протокол здесь — это интернет-протокол (IP). В основном IP берет сегменты из транспортного протокола и добавляет метаданные, которые помогают определить, где находится ваш клиент в локальной сети. Еще одной функцией сетевого уровня является пересылка сообщений, то есть он пересылает ваши пакеты из сети в сеть. Данные на этом уровне называются пакетами.

4b75a80117f610f3c41b4636fd702a11.png

Канальный уровень (Data-Link Layer)

1491cbd1a8928fddd2d3b2fe1a8e43eb.png

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

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

  • Logical Link Layer (LLC) — этот уровень обеспечивает управление потоком, подтверждение и обработку ошибок в случае, если что-то пошло не так.

  • Media Access Control (MAC) — этот уровень отвечает за присвоение уникального идентификационного номера, основанного на вашей сетевой карте, называемого MAC-адресом. Это означает, что ни одно устройство не имеет одинакового MAC-адреса.

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

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

f146ba463e90423a417eab144e675743.png

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

Когда мы говорим «физический» — мы говорим не только о проводах. Данные могут передаваться самыми разными способами, например радиоволнами или даже светом. К сожалению, эти способы передачи не знают «кадров», они знают только биты. Функция этого уровня заключается в том, чтобы просто преобразовать кадры в байты (8 бит) и отправить их по какому-либо способу транспортировки (электричество, волны, свет и так далее).

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

Заключение

  • Что модель OSI — это модель того, как две системы общаются друг с другом в сети.

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

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

© Habrahabr.ru