Расскажите про модель OSI. На каких уровнях работают балансировщики L4 и L7?
Короткий ответ
- OSI — семиуровневая эталонная модель от физики до приложения
- На практике используется стек TCP/IP из четырёх уровней
- L4-балансировщик смотрит на IP и порты, не видит содержимое
- L7-балансировщик разбирает HTTP: пути, заголовки, cookie
- Каждому уровню соответствуют свои протоколы и инструменты отладки
- Модель нужна как общий язык при локализации проблем
OSI — это карта для локализации сетевых проблем, а L4/L7 — два практических уровня балансировки.
Как сказать вслух
пример ответаOSI — это модель из семи уровней, от физического кабеля до приложения. На практике мы чаще мыслим стеком TCP/IP, но OSI удобна как общий язык. Балансировщик четвёртого уровня распределяет трафик по IP-адресам и портам, а седьмого — уже понимает HTTP и может маршрутизировать по URL или заголовкам. Я использую модель, чтобы при отладке идти по слоям снизу вверх.
Подробный ответ
Основной ответ
Уровни OSI: физический, канальный (Ethernet, MAC), сетевой (IP, маршрутизация), транспортный (TCP/UDP, порты), сеансовый, представления и прикладной (HTTP, DNS, TLS условно относят к 5–6). В реальности применяется модель TCP/IP: канальный, сетевой, транспортный и прикладной. L4-балансировщик (например, режим TCP в haproxy, NLB в AWS) принимает решение по пятёрке «протокол, IP и порты источника и назначения» — он быстрый, но не видит запросов. L7-балансировщик (nginx, Ingress-контроллер, ALB) терминирует HTTP и маршрутизирует по пути, хосту, заголовкам, умеет retry, sticky sessions и переписывание запросов.
Ключевые моменты
- OSI vs TCP/IP. OSI — теоретическая модель для рассуждений, TCP/IP — то, что реально реализовано в сети.
- L4-балансировка. Работает с TCP/UDP-соединениями, дешёвая по ресурсам, подходит для не-HTTP трафика и высокой пропускной способности.
- L7-балансировка. Разбирает прикладной протокол: маршрутизация по URL, канареечные веса, аутентификация, кэширование.
- Отладка по уровням. ping/traceroute — сетевой, ss и tcpdump — транспортный, curl — прикладной; идти по слоям, а не наугад.
Практический контекст
Вопрос звучит почти на каждом собеседовании уровня junior и middle. На практике понимание уровней нужно при выборе балансировщика (gRPC и WebSocket требуют внимания к L7), при настройке Ingress в Kubernetes и при разборе проблем вида «соединение устанавливается, но ответа нет». Интервьюер проверяет не зубрёжку семи уровней, а способность привязать их к реальным протоколам и инструментам.
Частые ошибки
- Перечисляют уровни по зубрёжке, но не могут привести протоколы-примеры
- Говорят, что L4-балансировщик может маршрутизировать по URL
- Не могут объяснить, зачем модель вообще нужна на практике