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

«Что такое модель OSI?» — вопрос из категории Сети, который задают на 26% собеседований Node.js Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

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

7 уровней модели OSI:

  1. Физический (Physical): Передача битов (0 и 1) через физическую среду (кабель, Wi-Fi).
  2. Канальный (Data Link): Организация передачи данных между двумя непосредственно связанными узлами (например, по Ethernet). Работает с MAC-адресами.
  3. Сетевой (Network): Определение маршрута данных через сеть (маршрутизация). Основной протокол — IP.
  4. Транспортный (Transport): Обеспечение надёжной или ненадёжной доставки данных между конечными точками (хостами). Основные протоколы — TCP (надёжный) и UDP (быстрый).
  5. Сеансовый (Session): Управление сеансами связи (установление, поддержание, завершение).
  6. Уровень представления (Presentation): Преобразование данных (шифрование, сжатие, кодирование) в форму, понятную прикладному уровню.
  7. Прикладной (Application): Интерфейс для сетевых приложений (HTTP, FTP, SMTP, WebSockets).

Как это соотносится с Node.js? Разработчик на Node.js чаще всего работает на 7-м (Прикладном) уровне, используя модули типа http, https, ws (WebSockets). Однако для решения специфических задач можно опускаться ниже:

  • Транспортный уровень (4): Модуль net для работы с raw TCP-сокетами или создания своих протоколов.
  • Сетевой уровень (3): Модуль dgram для работы с UDP.

Пример трассировки HTTP-запроса в Node.js по уровням OSI:

const http = require('http');
// Уровень 7 (Прикладной): Создаём HTTP-сервер.
const server = http.createServer((req, res) => {
  res.end('Hello');
});
server.listen(3000);
// Уровень 4 (Транспортный): Под капотом модуль `http` использует модуль `net` (TCP).
// Уровень 3 (Сетевой): TCP использует IP для маршрутизации пакетов.
// Уровни 2 и 1: Драйверы ОС и сетевое оборудование реализуют канальный и физический уровни.