Что такое модель OSI? Компьютерные сети для начинающих
В этой статье вы узнаете об основных концепциях модели взаимосвязей открытых систем (OSI) - простым и понятным языком. Для разработчика это хорошая идея - узнать, как все работает "под капотом". Таким образом, вы поймете, что на самом деле делают ваш код и инструменты, которые вы используете.
Но может показаться, что проще полагаться на абстракцию черного ящика и игнорировать внутреннюю работу. Популярной абстракцией черного ящика является интернет. Конечно, многие из нас, вероятно, знают основы того, что такое интернет и как он работает. Есть клиент и сервер, и они просто "общаются" друг с другом, используя что-то, называемое HTTP или HTTPS? Но это предел знаний большинства людей. Я не говорю, что мы не должны использовать абстракции – я просто говорю, что у нас должно быть какое-то базовое представление о том, как все работает. Вот почему я пишу эту статью: чтобы демистифицировать этот черный ящик, чтобы помочь вам узнать, как компьютеры взаимодействуют друг с другом по сети.
Что такое модель OSI?
Модель взаимосвязи открытых систем или OSI - это, по сути, справочная система, которая описывает, как компьютеры взаимодействуют друг с другом по сети.
Она была создана в 1983 году представителями телекоммуникационных компаний и официально стандартизирована в 1984 году Международной организацией по стандартизации (ISO). Она разделена на семь слоев (уровней). Каждый слой имеет свой собственный домен и получает данные с предыдущего слоя, передавая данные на следующий слой.
Семь слоев - это:
- Прикладной уровень (Application Layer)
- Уровень представления (Presentation Layer)
- Уровень сеанса (Session Layer)
- Транспортный слой (Transport Layer)
- Сетевой уровень (Network Layer)
- Уровень канала передачи данных (Data Link Layer)
- Физический уровень (Physical Layer)
Эта модель "реальной жизни" называется моделью 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. С другой стороны, если мы хотим, чтобы наши данные передавались вниз по слою, мы бы перевели наш объект в простые структуры данных, которые можно было бы понять на нижних уровнях.
- Компрессия. Это несложно: чем меньше битов нужно отправить, тем быстрее будет запрос. Это также одна из основных функций уровня представления. Имейте в виду, что это сжатие без потерь, что означает, что никакая информация не будет потеряна в процессе.
Уровень сеанса
Уровень сеанса отвечает за открытие, закрытие и поддержание соединений между клиентом и сервером. Это немного сбивает с толку. И на самом деле, я не смог найти много вариантов его использования. Основной функцией уровня сеанса является управление соединениями между клиентом и сервером. Но что это на самом деле означает?
Итак, допустим, вы хотите отправиться в google.com. Для этого вам сначала нужно установить связь с google.com , поэтому вы говорите: "Привет, сервер, в чем дело, я хочу подключиться к google.com ". Сервер отвечает: "Да, конечно". Поздравляю, вы только что установили связь с google.com сервер и может свободно отправлять запрос GET для получения страницы. Короче говоря, этот слой используется для:
- Открытие соединений
- Поддержание соединений
- Закрытие соединений.
Транспортный слой
Вот тут-то и происходит самое интересное. Транспортный уровень обычно определяется на основе используемого протокола. Двумя наиболее популярными из них являются:
- Протокол управления передачей (TCP)
- Протокол пользовательских дейтаграмм (UDP)
Протокол TCP устраняет многие проблемы, возникающие при использовании IP, такие как потерянные пакеты, неупорядоченные пакеты, дубликаты пакетов и поврежденные пакеты. Вы бы использовали TCP в приложениях, которые требуют, чтобы все пакеты были безошибочными, например, для обмена текстовыми сообщениями.
С другой стороны, UDP не имеет состояния, то есть он не сохраняет никакого состояния между клиентом и сервером, а также очень легкий, что делает его быстрым. Но недостатком является то, что это ненадежно, пакеты могут пропасть без вести, быть повреждены и так далее.
UDP в основном используется, когда вам на самом деле все равно, потеряете ли вы несколько пакетов здесь и там, например, потоковое видео. Также имейте в виду, что данные в этом слое называются сегментами.
Короче говоря, TCP надежен, но медленен, в то время как UDP ненадежен, но быстр.
Сетевой уровень
Сетевой уровень отвечает за отправку пакетов из сети в сеть. Я действительно не знаю, почему это называется сетевым уровнем. Его следует назвать интернет–уровнем - потому что наиболее важным протоколом здесь является интернет-протокол (IP).
Что в основном делает IP, так это берет сегменты из транспортного протокола и добавляет метаданные, которые помогают определить, где находится ваш клиент в локальной сети.
Другой функцией сетевого уровня является пересылка сообщений, что означает, что он отправляет ваши пакеты из сети в сеть. Данные на этом уровне называются пакетами.
Уровень канала передачи данных
Этот уровень определяет, как данные передаются между двумя системами. Он заботится о таких вещах, как время, в течение которого две системы общаются друг с другом, сколько данных может быть отправлено, и что произойдет, если возникнут какие-либо ошибки. Все это обрабатывается на уровне канала передачи данных.
Уровень канала передачи данных разбит на два подуровня:
- Уровень логической связи (LLC) – Этот уровень обеспечивает управление потоком, подтверждение и обработку ошибок в случае, если что-то пойдет не так.
- Управление доступом к мультимедиа (MAC) – Этот уровень отвечает за присвоение уникального идентификационного номера на основе вашей сетевой карты, называемого MAC-адресом. Это означает, что никакие два устройства не имеют одинаковых MAC-адресов.
Физический уровень
Наконец, это физический уровень. Обратите внимание, что мы говорим не только о проводах. Данные могут передаваться множеством различных способов, таких как радиоволны или даже свет. К сожалению, эти способы транспортировки не знают "кадров", они знают только биты.
Функция этого слоя состоит в том, чтобы просто преобразовать кадры в байты (8 бит) и отправить их по какому-либо способу передачи (электричество, волны, свет и т. д.). Наконец, наш запрос будет передан на сервер, и сервер пройдет тот же процесс, но в обратном порядке.
Вывод
В этой статье вы узнали что модель OSI является эталонной моделью того, как две системы взаимодействуют друг с другом по сети. Мы не используем эту модель в реальной жизни. Вместо этого мы используем другую аналогичную модель, называемую моделью TCP/IP. Модель OSI состоит из семи частей, каждая из которых выполняет определённую функцию.
Я надеюсь, что сегодня вы кое-чему научились.
Автор этого материала - я - Пахолков Юрий. Я оказываю услуги по написанию программ на языках Java, C++, C# (а также консультирую по ним) и созданию сайтов. Работаю с сайтами на CMS OpenCart, WordPress, ModX и самописными. Кроме этого, работаю напрямую с JavaScript, PHP, CSS, HTML - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.
Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.