Networking

Модель OSI

Open Systems Interconnection — эталонная модель, описывающая сетевое взаимодействие как семь уровней, от кабеля до приложения.

Что такое Модель OSI

OSI расшифровывается как Open Systems Interconnection — «взаимодействие открытых систем». Это эталонная сетевая модель: она разбивает передачу данных на семь уровней, где каждый решает свою задачу и пользуется услугами нижнего, не зная, как тот устроен.

Сразу о главном: OSI — не описание того, как работает интернет. Интернет построен на стеке TCP/IP, у которого четыре уровня. OSI создавалась как конкурирующий стандарт, проиграла — и осталась как общий словарь. Когда админ говорит «проблема на втором уровне» или «балансировщик L7», он ссылается именно на неё.

Семь уровней

Уровень Что делает Примеры
7 Прикладной интерфейс для приложений HTTP, DNS, SMTP
6 Представления кодировка, сжатие, шифрование TLS, JPEG
5 Сеансовый установка и поддержание сессий сокеты, RPC
4 Транспортный доставка между процессами TCP, UDP
3 Сетевой адресация и маршрутизация IP, ICMP, OSPF
2 Канальный передача кадров в сегменте Ethernet, VLAN, MAC
1 Физический биты в среде кабель, оптика, радио

Единицы данных на каждом уровне называются по-разному, и это встречается в выводе утилит: на L1 — биты, на L2 — кадры, на L3 — пакеты, на L4 — сегменты (TCP) или дейтаграммы (UDP).

Как это выглядит на практике

Каждый уровень добавляет свой заголовок к данным сверху — это инкапсуляция. На приёме заголовки снимаются в обратном порядке:

Отправитель                          Получатель
  L7  данные                            данные
  L4  [TCP|данные]                   [TCP|данные]
  L3  [IP|TCP|данные]             [IP|TCP|данные]
  L2  [ETH|IP|TCP|данные]  ───▶ [ETH|IP|TCP|данные]
  L1  10110100...                    10110100...

Заголовки — не абстракция, а именно то, что вы видите в tcpdump: MAC-адреса это L2, IP-адреса L3, порты L4, тело запроса L7.

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

Ценность OSI не в теории, а в том, что номер уровня стал профессиональным сокращением.

Диагностика идёт снизу вверх. Это единственный правильный порядок, и он экономит часы:

L1 — линк есть? кабель воткнут?          ip link show, ethtool eth0
L2 — MAC виден в сегменте?               ip neigh
L3 — адрес и маршрут есть? пинг идёт?    ip addr, ip route, ping
L4 — порт слушается? соединение встаёт?  ss -tlnp, nc -zv host 443
L7 — приложение отвечает корректно?      curl -v

Смысл в том, чтобы не искать причину в приложении, пока не проверены нижние уровни. Классика: разработчик третий час читает логи сервиса, а у сервера отвалился линк на коммутаторе.

Уровень определяет умения устройства. Коммутатор работает на L2 и знает MAC-адреса. Маршрутизатор — на L3, оперирует IP. Файрвол L3/L4 фильтрует по адресам и портам, а WAF — на L7, потому что видит содержимое HTTP-запроса.

L4 или L7 — практический выбор.Балансировщик на L4 просто раскидывает TCP-соединения: быстро, но он не знает, что внутри. На L7 он разбирает HTTP — умеет маршрутизировать по URL, вставлять заголовки, переиспользовать соединения, но платит за это процессором и должен терминировать TLS.

Где модель расходится с реальностью

Уровни 5 и 6 в жизни почти не выделяют: их функции разобрали прикладные протоколы и TLS. Сам TLS в модель ложится плохо — формально это L6, фактически он живёт между L4 и L7. Соответствие TCP/IP выглядит так:

OSI 7,6,5  →  прикладной   (HTTP, DNS, SSH)
OSI 4      →  транспортный (TCP, UDP)
OSI 3      →  межсетевой   (IP)
OSI 2,1    →  канальный    (Ethernet, Wi-Fi)

Отдельная шутка индустрии — «восьмой уровень», человеческий: большинство инцидентов случается именно там.

Связанные термины

Готовы запустить GPU-задачу?

Запустить GPU-сервер