Эталонные модели: OSI и TCP/IP
Предпосылки: Ethernet и коммутация, IP и маршрутизация, TCP, HTTP.
← WebSocket | Протоколы маршрутизации →
Вы уже изучили четыре протокола: Ethernet передаёт кадры между соседними устройствами, IP маршрутизирует пакеты между сетями, TCP обеспечивает надёжную доставку, HTTP задаёт структуру запросов и ответов. Каждый решает свою задачу и не знает деталей остальных — Ethernet не понимает IP-адресов, TCP не разбирает HTTP-заголовки. Это не случайность, а архитектурный принцип: сетевое взаимодействие разбито на уровни (layers), каждый из которых решает узкую задачу и предоставляет сервис уровню выше.
Зачем это нужно: независимая разработка (улучшение Wi-Fi не требует изменений в HTTP), взаимозаменяемость (Ethernet и Wi-Fi — разные реализации одного уровня), упрощение понимания (проблему можно локализовать: «сеть не работает» → «роутер не видит маршрут» → проблема на уровне IP).
Две модели формализуют это деление: OSI и TCP/IP.
Модель OSI
OSI (Open Systems Interconnection) — эталонная модель из 7 уровней:
+------------------------------------------------------------------+
| Уровень 7: Прикладной (Application) |
| HTTP, DNS, SMTP, FTP, SSH |
+------------------------------------------------------------------+
| Уровень 6: Представления (Presentation) |
| Шифрование (TLS), сжатие, сериализация |
+------------------------------------------------------------------+
| Уровень 5: Сеансовый (Session) |
| Управление диалогом, RPC |
+------------------------------------------------------------------+
| Уровень 4: Транспортный (Transport) |
| TCP, UDP -- порты, надёжность |
+------------------------------------------------------------------+
| Уровень 3: Сетевой (Network) |
| IP -- маршрутизация между сетями |
+------------------------------------------------------------------+
| Уровень 2: Канальный (Data Link) |
| Ethernet, Wi-Fi -- MAC-адреса, кадры |
+------------------------------------------------------------------+
| Уровень 1: Физический (Physical) |
| Биты, сигналы, кабели, разъёмы |
+------------------------------------------------------------------+
Уровень 1: Физический — передача сырых битов по физической среде. Единица данных: бит. Спецификации кабелей, разъёмы RJ-45, оптика.
Уровень 2: Канальный (Data Link) — надёжная передача между непосредственно соединёнными устройствами. Единица данных: кадр (frame). Ethernet, Wi-Fi, MAC-адреса, коммутаторы.
Уровень 3: Сетевой (Network) — маршрутизация между разными сетями. Единица данных: пакет (packet). IP, роутеры, ICMP.
Уровень 4: Транспортный (Transport) — доставка данных между приложениями, надёжность. Единица данных: сегмент (TCP) / датаграмма (UDP).
Уровень 5: Сеансовый (Session) — управление диалогом. На практике редко выделяется отдельно.
Уровень 6: Представления (Presentation) — преобразование форматов, шифрование, сжатие. На практике интегрирован в прикладной уровень.
Уровень 7: Прикладной (Application) — протоколы для конечных приложений. HTTP, DNS, SMTP, SSH.
Уровни 5 и 6 — теоретическое разделение, которое в реальных реализациях не встречается как отдельные компоненты. TLS формально “уровень 6”, но на практике это просто часть стека приложения.
Модель TCP/IP
Практическая модель из 4 уровней, описывающая реальный интернет:
OSI TCP/IP
+---------------------+ +---------------------+
| 7. Application | | |
+---------------------+ | |
| 6. Presentation | --------- | 4. Application |
+---------------------+ | |
| 5. Session | | |
+---------------------+-----------+---------------------+
| 4. Transport | --------- | 3. Transport |
+---------------------+-----------+---------------------+
| 3. Network | --------- | 2. Internet |
+---------------------+-----------+---------------------+
| 2. Data Link | | |
+---------------------+ --------- | 1. Network Interface|
| 1. Physical | | |
+---------------------+ +---------------------+
OSI — теоретическая модель для обучения и терминологии (“проблема на L2”, “L7 балансировщик”). TCP/IP — практическая, описывающая реальный интернет.
Инкапсуляция по уровням
При отправке данных каждый уровень добавляет свой заголовок — спуск по стеку:
flowchart TB L7["HTTP-данные"] L4["TCP | HTTP-данные"] L3["IP | TCP | HTTP-данные"] L2["Eth | IP | TCP | HTTP-данные | CRC"] L1["биты"] L7 --> L4 --> L3 --> L2 --> L1
При получении — подъём по стеку, каждый уровень убирает свой заголовок и передаёт данные выше.
PDU: единицы данных по уровням
| Уровень | Название единицы данных (PDU) |
|---|---|
| Прикладной | Данные, сообщение (message) |
| Транспортный | Сегмент / датаграмма |
| Сетевой | Пакет (packet) |
| Канальный | Кадр (frame) |
| Физический | Биты (bits) |
Устройства по уровням
| Уровень | Устройства |
|---|---|
| L1 | Репитер, хаб |
| L2 | Коммутатор (switch), мост (bridge) |
| L3 | Роутер (router) |
| L4+ | Файрвол, балансировщик нагрузки, прокси |
L7 load balancer понимает HTTP и принимает решения на основе URL, заголовков, cookies. Подробнее о балансировке см. в материалах по system design.
Принцип песочных часов
В середине стека — только IP. Это обеспечивает универсальность:
flowchart TB HTTP & SMTP & DNS & etc1["..."] --> TCP & UDP TCP & UDP --> IP["IP ← узкое место"] IP --> Ethernet & WiFi["Wi-Fi"] & LTE & etc2["..."]
Любое приложение работает поверх IP. IP работает поверх любой физической сети. Добавление нового приложения (HTTP/3, gRPC) не требует изменений в сетевой инфраструктуре. Добавление новой физической среды (5G, Starlink) не требует изменений в приложениях.
Сквозной принцип (End-to-End)
Умная логика — на концах (в приложениях). Сеть — “глупая”, просто доставляет пакеты. Надёжность, шифрование, проверка ошибок — обязанность конечных точек, а не промежуточных узлов. Это позволяет сети оставаться простой и универсальной.
Мнемоника уровней OSI
Сверху вниз: All People Seem To Need Data Processing.
Снизу вверх: Please Do Not Throw Sausage Pizza Away.