Ответ
Модель OSI (Open Systems Interconnection) — это эталонная модель, которая абстрактно описывает, как различные сетевые протоколы взаимодействуют для передачи данных. Она разделяет процесс коммуникации на 7 уровней, каждый из которых решает свою задачу, опираясь на услуги предыдущего.
7 уровней модели OSI:
- Физический (Physical): Передача битов (0 и 1) через физическую среду (кабель, Wi-Fi).
- Канальный (Data Link): Организация передачи данных между двумя непосредственно связанными узлами (например, по Ethernet). Работает с MAC-адресами.
- Сетевой (Network): Определение маршрута данных через сеть (маршрутизация). Основной протокол — IP.
- Транспортный (Transport): Обеспечение надёжной или ненадёжной доставки данных между конечными точками (хостами). Основные протоколы — TCP (надёжный) и UDP (быстрый).
- Сеансовый (Session): Управление сеансами связи (установление, поддержание, завершение).
- Уровень представления (Presentation): Преобразование данных (шифрование, сжатие, кодирование) в форму, понятную прикладному уровню.
- Прикладной (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: Драйверы ОС и сетевое оборудование реализуют канальный и физический уровни.