Компьютерные сети

Модель OSI: 7 уровней

Цели урока

  • Объяснить назначение каждого из 7 уровней OSI
  • Понимать инкапсуляцию и декапсуляцию данных
  • Правильно называть PDU на каждом уровне
  • Использовать модель OSI для диагностики сетевых проблем

Октябрь 2021 года. Facebook падает на 6 часов. Не сайт - вся инфраструктура: WhatsApp, Instagram, внутренние инструменты. Инженеры не могут попасть в здание потому что карточки доступа тоже через их же сеть. Причина: BGP-анонсы пропали. Один инцидент на L3 парализовал 3.5 млрд пользователей. Знание модели OSI - это знание, на каком этаже горит.

  • **Диагностика**: «ping работает, сайт не открывается» - значит, проблема выше L3. Это сужает поиск с 7 уровней до 4
  • **Cloudflare Workers** работают на L7 - HTTP-обработка без доступа к нижним уровням. Именно поэтому Worker не видит реальный IP через CGNAT
  • **Kubernetes CNI** (Calico, Cilium, Flannel) - это решение проблемы L2/L3 маршрутизации между pod-ами. Разные CNI работают на разных уровнях OSI
  • **Wireshark** - главный инструмент сетевого инженера - показывает пакеты именно через призму уровней OSI
  • **TLS/HTTPS** живёт между L4 и L7 - TCP-соединение на L4, HTTP на L7, шифрование в промежутке. Истёкший сертификат - проблема L5-L6, а не L3

Charles Bachman и рождение OSI

В 1977 году Чарльз Бахман - создатель первой СУБД и будущий лауреат премии Тьюринга - возглавил рабочую группу ISO по сетевым стандартам. Задача была политической не меньше, чем технической: IBM, DEC, Honeywell и Siemens тянули в разные стороны. За 7 лет итераций появилась OSI 1984. Ирония истории: сама OSI проиграла конкурентную войну TCP/IP, который был проще и уже работал в ARPANET. Но терминология OSI - 7 уровней, PDU, инкапсуляция - стала универсальным языком индустрии на 40 лет вперёд.

Предварительные знания

  • Зачем нужны сети

Зачем нужна модель OSI

1970-е. Каждый производитель - свои протоколы. IBM не говорила с DEC. DEC не говорила с Honeywell. Корпоративная сеть из оборудования двух вендоров - гарантированный провал. Именно тогда ISO взялась за задачу, которая казалась невозможной: создать единый язык для всего сетевого взаимодействия. Результат появился в 1984 году - **модель OSI** (Open Systems Interconnection).

OSI - это **эталонная модель**, а не конкретная технология. Она описывает «что должно происходить», а не «как именно это реализовать». Реальные протоколы (TCP/IP) могут отступать от неё - и отступают.

Каждый уровень решает одну задачу и предоставляет сервис вышестоящему. Физический передаёт биты, канальный - фреймы между соседями, сетевой - пакеты через весь интернет. Cloudflare Workers работают на L7. Anycast-маршрутизация Cloudflare - на L3. Когда в 2021 году у Facebook упал BGP и пропала треть интернета - это был инцидент именно на L3. Понимать, на каком уровне сломалось - значит сузить поиск в 7 раз.

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

Абстракция уровней

Главная идея OSI - **разделение ответственности**. Каждый уровень «не знает» о деталях работы других. Он просто использует сервисы нижнего и предоставляет сервисы верхнему. Это и есть та самая абстракция, которая позволяет Kubernetes pod-у в дата-центре Google отправлять данные через 15 промежуточных роутеров и подводный кабель - не зная об этих 15 роутерах ничего.

Абстракция позволяет **заменять компоненты** без переписывания всего стека. Ethernet заменяется на Wi-Fi 6E - приложение не замечает. Оптика заменяется на 5G - снова ничего. HTTP/3 меняет транспорт с TCP на QUIC - браузер принимает это автоматически. Это следствие чистого разделения уровней.

Это то же самое, что API в программировании: вызывается `send(data)`, а как именно данные пройдут по сети - не забота вызывающего кода. Может через оптику, может через спутник Starlink, может через MPLS-туннель корпоративной сети. Абстракция держит эту сложность внутри.

Почему абстракция уровней полезна?

Инкапсуляция данных

Когда данные спускаются по уровням OSI, каждый уровень **добавляет свой заголовок**. Это называется **инкапсуляция** - упаковка данных в «конверты» с адресами и служебной информацией. На принимающей стороне происходит обратное: **декапсуляция** - каждый уровень снимает свой заголовок и отдаёт данные выше.

Инкапсуляция - матрёшка наоборот: каждый следующий уровень не видит, что внутри предыдущего. Для Ethernet-коммутатора TCP-сегмент - просто «данные», которые нужно доставить дальше. Коммутатор никогда не открывает IP-пакет, а тем более TCP. Это принципиально важно для понимания того, как работают VPN и VXLAN - они добавляют ещё один слой инкапсуляции поверх уже существующего.

Заголовки содержат критическую информацию: MAC-адреса (L2), IP-адреса (L3), номера портов (L4), контрольные суммы, флаги управления. Wireshark при захвате пакета показывает именно этот стек заголовков - раскрывая каждый уровень отдельно. Размер накладных расходов (overhead) реален: на 1500-байтном Ethernet-фрейме минимум 54 байта уходит только на заголовки L2/L3/L4 TCP.

Что происходит с данными на каждом уровне OSI при отправке?

PDU: данные на каждом уровне

На каждом уровне OSI данные называются по-разному. **PDU** (Protocol Data Unit) - это общее название для «порции данных» на конкретном уровне. Путаница в терминах - верный признак неглубокого понимания на собеседовании. Wireshark, tcpdump, любой сетевой инструмент использует эту терминологию.

УровеньPDUПример протоколаРеальный инструмент
L7 ApplicationData / MessageHTTP/2, gRPC, WebSocketcurl, Postman
L4 TransportSegment (TCP) / Datagram (UDP)TCP, UDP, QUICnetstat, ss
L3 NetworkPacketIPv4, IPv6, ICMPtraceroute, ping
L2 Data LinkFrameEthernet, Wi-Fi 802.11tcpdump, Wireshark
L1 PhysicalBits1000BASE-T, 802.11axoscilloscope, cable tester

Размеры PDU ограничены. Ethernet-фрейм не может быть больше 1518 байт (или 9000 для Jumbo Frames). Если IP-пакет больше - он фрагментируется. Именно поэтому MTU Path Discovery критична для производительности: фрагментация увеличивает задержку и нагружает CPU. В облачных средах (AWS, GCP) MTU 1500 между инстансами часто вызывает проблемы с VXLAN-туннелями, у которых MTU 1450.

Модель OSI точно описывает реальные сети

OSI - эталонная модель, реальные протоколы (TCP/IP) её упрощают

TCP/IP объединяет уровни 5-7 OSI в один Application layer, а уровни 1-2 - в Network Access. На практике чаще используют 4-уровневую модель TCP/IP.

Как называется PDU на канальном уровне (L2)?

Ключевые идеи

  • **Модель OSI** - эталонная схема из 7 уровней, создана ISO в 1984 году для стандартизации несовместимых сетей
  • **Абстракция уровней**: каждый уровень видит только интерфейс соседнего - поэтому Wi-Fi заменяет Ethernet без изменений в браузере
  • **Инкапсуляция** - каждый уровень добавляет свой заголовок при отправке, снимает при получении
  • **PDU по уровням**: биты (L1), фреймы (L2), пакеты (L3), сегменты (L4) - терминология важна на собеседованиях и в Wireshark
  • **Реальные сети** используют 4-уровневую модель TCP/IP, но OSI-терминология остаётся стандартом диагностики
  • **MTU 1500 байт** - ограничение Ethernet-фрейма, определяет фрагментацию пакетов в реальных сетях

Что дальше

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

  • Физический уровень — L1 - как биты превращаются в электрические сигналы, оптику и радиоволны
  • Канальный уровень — L2 - MAC-адреса, Ethernet-коммутация и как данные путешествуют внутри сегмента
  • TCP: основы — L4 - надёжная доставка, три рукопожатия и flow control

Вопросы для размышления

  • Если ping до сервера работает, но сайт не открывается - на каких уровнях OSI может быть проблема?
  • Почему замена сетевого кабеля на Wi-Fi не требует изменений в браузере?
  • Как понимание инкапсуляции помогает понять, как работает VPN?

Связанные уроки

  • net-01-intro — Базовые понятия сети и причины её существования
  • net-03-physical — Физический уровень - первый из семи, детальный разбор
  • net-15-tcp-basics — TCP живёт на транспортном уровне (L4) модели OSI
  • net-23-https-tls — TLS реализует функции уровней L5-L6 в реальном стеке
  • alg-01-big-o — Слоистая абстракция - та же идея разделения ответственности
  • bt-02-osi-tcp
Модель OSI: 7 уровней

0

1

Войти