Learning Platform
Глоссарий Troubleshooting
Урок 04.01 · 18 мин
Начальный
OSINetwork modelLayersAbstraction

Модель OSI — 7 слоёв и зачем нужны модели

Сети сложные. В одном TCP-соединении за секунду может пройти миллион пакетов через двадцать промежуточных узлов. Чтобы такая сложность вообще была управляемой, инженеры разделили её на слои. Каждый слой делает свою работу и не знает про работу других. Это позволяет специалистам по приложениям не разбираться в физике провода, а сетевым инженерам — не знать про CSS.

Модель OSI (Open Systems Interconnection) — классическая, академическая модель этого разделения. 7 слоёв, придумана ISO в 1984 году. На практике сейчас используется TCP/IP модель из 4 слоёв (об этом следующий урок), но OSI — лингва франка networking. Когда инженер говорит «Layer 7 load balancer», вы должны знать, какой слой имеется в виду. В этом уроке — именно про OSI.


Зачем вообще нужны модели

Прежде чем перечислять 7 слоёв, разберёмся, зачем они вообще нужны. Если есть HTTP, TCP, IP, Ethernet — зачем сверху ещё одна «модель»?

Зачем модели разделения по слоям
AbstractionКаждый слой скрывает сложность нижних. HTTP-разработчик не думает про электрические сигналы. Сетевой инженер не думает про HTML. Это огромное упрощение работы
ModularityСлои можно менять независимо. Перешли с медного кабеля на оптоволокно (физический слой) -- всё выше работает без изменений. Новый HTTP/3 -- не требует менять IP
InteroperabilityРазные производители могут делать оборудование для разных слоёв, и оно работает вместе, если соблюдает стандарт. Cisco router работает с Juniper switch'ем
TroubleshootingПри проблеме можно проверять слой за слоем. 'Cable connected -> link up?' (L1-L2); 'IP responds to ping?' (L3); 'TCP port open?' (L4); 'HTTP responds?' (L7). Систематический подход

Главная польза модели — разделение труда. В Cisco есть инженеры, которые проектируют hardware, и инженеры, которые пишут software для маршрутизации. В компании есть network team (L1-L4) и application team (L5-L7). Они общаются на стыках, но внутри своего слоя — свобода действий.

Аналогия: представьте письмо в почтовом конверте. Вы написали текст (application data). Запечатали в конверт с адресом (transport). Положили в большой мешок с городом-получателем (network). Загрузили в самолёт (link). Самолёт летит (physical). На той стороне всё разбирается в обратном порядке. Никто из участников не должен знать всю систему — каждый знает свой слой.


7 слоёв OSI — обзор

Запоминаем порядок — от низа (физика) к верху (приложение):

Семь слоёв OSI -- сверху вниз
L7: ApplicationПриложение пользователя. HTTP, SMTP, FTP, DNS, SSH. Это то, что видит конечный пользователь. Содержит смысл данных
L6: PresentationПредставление данных. Кодирование (ASCII, UTF-8), сжатие (gzip), шифрование (TLS -- хотя его относят и к L5/L6). На практике слой довольно условный -- в TCP/IP отдельно не выделяется
L5: SessionУправление сессиями. Установка, поддержание, завершение диалога. На практике мало где явно реализован -- TCP частично делает это в L4, частично приложение само
L4: TransportПередача между процессами. TCP (с гарантиями), UDP (без гарантий). Знает о портах. Сегментация данных, контроль потока, обработка ошибок
L3: NetworkМаршрутизация между сетями. IP (IPv4 / IPv6). Знает об IP-адресах. Routing tables, longest prefix match. Routers работают здесь
L2: Data LinkПередача внутри одной сети (LAN). Ethernet, Wi-Fi. Знает об MAC-адресах. Switches работают здесь. Кадры (frames)
L1: PhysicalФизическая передача битов. Медный провод, оптоволокно, радиоволны Wi-Fi. Электрические сигналы, кодирование bits в сигналы

Запомнить порядок помогают мнемоники:

  • All People Seem To Need Data Processing (сверху вниз: Application, Presentation, Session, Transport, Network, Data link, Physical)
  • Please Do Not Throw Sausage Pizza Away (снизу вверх: Physical, Data link, Network, Transport, Session, Presentation, Application)

Главное — запомнить именно номера для важных слоёв. Слышите «Layer 2 switch» — это data link, MAC-адреса. «Layer 3 routing» — network, IP. «Layer 4 load balancer» — TCP/UDP, порты. «Layer 7 application» — HTTP, gRPC.


Слои по одному

Пробежимся по слоям с примерами, что на каждом происходит.

L1: Physical

Физический слой. Это про передачу битов по проводу или эфиру. Электрические сигналы (медный кабель), световые импульсы (оптика), радиоволны (Wi-Fi, 5G).

Что определяет L1:

  • Среда передачи. Cat6-кабель, single-mode fiber, частота Wi-Fi.
  • Способ кодирования bits в сигналы. Например, NRZ (no return to zero), Manchester encoding, PAM4 для современных Ethernet.
  • Скорость. 1 Гбит/с, 10 Гбит/с, 100 Гбит/с.
  • Разъёмы. RJ-45, LC, SC, SFP+, QSFP28.

Что НЕ определяет L1: что значат эти биты. Для L1 — это просто поток. Смысл появляется на L2.

Junior DE с L1 почти не работает напрямую. Максимум — проверить, воткнут ли провод (link up / link down), или диагностировать «почему медленно» через ethtool (на Linux).

Канальный слой. Объединяет биты в кадры (frames) и передаёт их между соседними узлами внутри одной сети.

Примеры протоколов L2: Ethernet, Wi-Fi (802.11), PPP. Это самые распространённые в современных сетях.

Что определяет L2:

  • Адресация. MAC-адреса (48-битные, обычно записываются как aa:bb:cc:dd:ee:ff). Глобально уникальны.
  • Формат кадра. Кадр Ethernet: dst MAC + src MAC + EtherType + payload + CRC.
  • Контроль ошибок. CRC в конце кадра. Если не совпало — кадр дропается.
  • Доступ к среде. В Wi-Fi — CSMA/CA (carrier sense multiple access with collision avoidance). В современном Ethernet (через switches) — collision domain один на порт, тоже без проблем.

Switches работают на L2. Они принимают кадры на одном порту, смотрят dst MAC и пересылают на нужный порт.

L3: Network

Сетевой слой. Маршрутизация между разными сетями. Здесь главный протокол — IP (IPv4 и IPv6).

Что определяет L3:

  • Адресация. IP-адреса (32-битные IPv4, 128-битные IPv6). Иерархические — delimitируют сеть и хост.
  • Маршрутизация. Routing tables, longest prefix match, default gateway. Если получатель не в моей сети — отправлю на default gateway.
  • Фрагментация. Если пакет больше MTU — разделить на куски (в IPv4 на любом router; в IPv6 только на endpoint).
  • TTL. Time to live. Каждый router декрементирует TTL. При 0 — дропает.

Routers работают на L3. Они принимают пакеты, смотрят dst IP, ищут в routing table подходящий маршрут (longest prefix match), отправляют дальше.

# Посмотреть свою routing table:
ip route show 2>/dev/null || netstat -rn
# Увидите 'default' (куда идут все пакеты вне локальной сети)
# и подсети, в которые вы напрямую подключены

L4: Transport

Транспортный слой. Передача данных между процессами на разных host’ах. Главные протоколы — TCP и UDP.

Что определяет L4:

  • Адресация процессов. Порты (16-битные, 0-65535). IP + порт = адрес процесса.
  • Reliability (TCP). ACKs, retransmission, sequence numbers.
  • Flow control (TCP). Receive window.
  • Congestion control (TCP). Slow start, congestion avoidance.
  • Multiplexing. Один host может иметь много соединений на разные порты.

UDP — простой: датаграмма с src port, dst port, length, checksum, payload. Без гарантий.

TCP — сложный: полное соединение с handshake’ом, гарантиями доставки. Большая часть модуля 8 будет посвящена TCP.

# Посмотреть все TCP-соединения и слушающие порты на вашей машине:
ss -tnp 2>/dev/null || netstat -an | grep tcp | head
# Увидите состояния: LISTEN (порт слушает), ESTABLISHED (есть соединение)

L5: Session

Сессионный слой. По OSI отвечает за установку, поддержание и завершение «сессий» между приложениями. На практике в реальных протоколах TCP/IP отдельно не выделен — частично делается в TCP (L4), частично в приложении (L7).

Примеры функций, которые в OSI отнесены к L5: установление dialog (кто говорит, кто слушает), checkpointing (можно ли возобновить после обрыва), termination (graceful close).

В TCP/IP мире слой L5 концептуальный, поэтому его часто пропускают. Когда инженер говорит про «session» — обычно имеется в виду application-level concept (HTTP session, login session).

L6: Presentation

Презентационный слой. Тоже довольно условный. Отвечает за формат данных:

  • Кодирование. Перевод между ASCII, UTF-8, EBCDIC.
  • Сжатие. gzip, brotli (на самом деле обычно на L7 в HTTP).
  • Шифрование. TLS (классически относят к L6, но также к L5 или L7).

В реальных стэках L6 либо встроен в приложение (HTTP сам говорит про Content-Encoding), либо в библиотеки (TLS-библиотека между TCP и приложением).

L7: Application

Прикладной слой. Это то, что видит и потребляет пользователь или приложение. Все HTTP, SMTP, FTP, DNS, SSH, gRPC — L7.

Что определяет L7:

  • Семантика данных. Что значит «получить запрос», «вернуть ответ», «отправить email».
  • Формат сообщений. Как структурирован HTTP-запрос (request-line + headers + body), email (headers + body).
  • Workflow. Сколько round-trips, кто инициатор, какие промежуточные шаги.

Junior DE проводит 95% времени на L7. Когда вы пишете requests.get(url) — это L7. Когда дебажите API — это L7. Когда строите архитектуру микросервисов — это L7.


Что на каком слое — реальные примеры

Сводим в одну таблицу с примерами:

Протоколы по слоям OSI
L7Прикладные протоколы. То, что пользователь видит
HTTP/HTTPSWeb-протокол. Используется браузерами, API, мобильными приложениями
DNSРезолв имён в IP. UDP по умолчанию, TCP для больших ответов
SMTP/IMAPEmail-протоколы. SMTP для отправки, IMAP/POP3 для получения
SSHЗащищённый удалённый shell. Замена устаревшего Telnet
L6/L5Слои часто условны и встроены в приложение или библиотеки
TLSШифрование между приложением и транспортом. Классически L6, но на практике в библиотеках
ASN.1Стандарт кодирования данных. Используется в LDAP, X.509 сертификатах, SNMP
L4Транспортный слой. Главный слой для процесс-к-процессу коммуникации
TCPReliable, ordered, connection-oriented. 95% всего web-трафика
UDPConnectionless, без гарантий. DNS, video streaming, gaming
QUICСовременный transport поверх UDP. HTTP/3 в нём
L3Сетевой слой. Маршрутизация между сетями
IPv4Классический IP. 32-битные адреса. Большая часть интернета
IPv6Следующее поколение. 128-битные адреса. Растёт доля до 40%
ICMPControl messages. Ping, traceroute, Destination Unreachable, Time Exceeded
L2Канальный слой. Передача внутри одной сети
EthernetДоминантный wired LAN-протокол. 1/10/100 Гбит/с
Wi-Fi802.11 стандарты. Беспроводной LAN
PPPPoint-to-Point Protocol. Используется в dial-up, ADSL, серийные linki
L1Физический слой. Биты в сигналы
Cat6 / SFPМедные и оптические кабели для Ethernet
2.4/5 GHz radioЧастоты Wi-Fi

Где модель полезна на практике

Несколько случаев, когда OSI-терминология делает разговор продуктивнее.

Load balancer. «Нам нужен L4 LB или L7 LB?» — стандартный вопрос. L4 — работает с TCP-соединениями, не парсит HTTP. Дешёвый, быстрый, не понимает application-логики. L7 — парсит HTTP, может направлять запросы по URL, headers, методам. Дороже, но умнее.

kube-proxy: iptables, IPVS, nftables

Firewall. «У нас L3 firewall или L7?» L3 фильтрует по IP-адресам (правила вроде «блокировать всё с 1.2.3.4»). L4 — по портам и состоянию TCP («разрешить TCP-handshake к порту 443»). L7 — по содержимому HTTP («блокировать запросы с SQL-инъекцией в параметрах»).

Network namespace в Linux. При создании container в Docker создаётся отдельный network namespace — это изоляция на L3-L4. Container имеет свой IP, свои сокеты. На L2 он подключён к виртуальному bridge.

Capabilities и namespaces — разрезаем root на кусочки Namespaces и cgroups — основа изоляции контейнера

Encryption. В каком слое шифровать? VPN на L3 (IPsec), на L4 (DTLS), на L5 (SSH), на L6/L7 (TLS, application-level encryption). Выбор зависит от требований.

TIP

Когда вы дебажите сетевую проблему — идите по слоям снизу вверх. Cable connected? (L1) Link up? (L2) IP responds to ping? (L3) Port open via telnet/nc? (L4) Application responds correctly? (L7). Систематический подход экономит часы.


Где OSI неточная

Несмотря на полезность, OSI — это идеальная модель, которая не всегда отражает реальность.

  1. L5-L6 концептуальны. В реальных стэках TCP/IP мира этих слоёв отдельно нет. Все их функции либо в L4 (TCP), либо в L7 (приложение и библиотеки).

  2. TLS неоднозначно расположен. Где он? L5 (session keys), L6 (encryption), или L7 (вызывается из приложения)? Можно поставить аргументы за каждое. В реальности — библиотека между L4 и L7.

  3. HTTP/2 размывает границы. Бинарные фреймы, header compression — это уже больше L6/L7 особенностей внутри одного протокола.

  4. VPN путает иерархию. IPsec работает на L3 — но это IP внутри IP. WireGuard — transport-уровень over UDP. Не вписывается в чистые слои.

  5. QUIC — gibrid. Это transport (L4), но он сам делает TLS-handshake (L5-L6) и multiplexing streams (L7-like). Слои размыты.

Поэтому в TCP/IP мире чаще используют упрощённую 4-слойную модель — разберём её в следующем уроке.


Попробуй сам

Несколько команд, которые работают на разных слоях.

# L1 -- физика. Состояние интерфейса
ip link show eth0 2>/dev/null || ifconfig en0
# UP, LOWER_UP -- link есть. NO-CARRIER -- провод не воткнут

# L2 -- MAC-адреса
ip neigh show 2>/dev/null || arp -a
# Соседи в моей локальной сети -- IP и MAC каждого

# L3 -- IP, routing
ip addr show 2>/dev/null || ifconfig | grep 'inet '
ip route show 2>/dev/null || netstat -rn

# L3 -- ping (через ICMP, тоже L3)
ping -c 3 google.com

# L4 -- слушающие порты
ss -tlnp 2>/dev/null || netstat -anp tcp | grep LISTEN

# L4 -- проверка порта (TCP handshake)
nc -vz google.com 443

# L7 -- HTTP
curl -sI https://google.com | head -5

Запустите все шесть команд по очереди. Каждая работает на своём слое и говорит свою информацию. На реальной отладке вы будете комбинировать их — начиная с L1 и поднимаясь, пока не найдёте, где проблема.


Проверка знанийKnowledge check
Junior говорит коллеге: 'У нас работает Layer 7 load balancer, который терминирует TLS и направляет трафик на бэкенды по URL-pattern'. Объясни, какие слои OSI задействованы в этом утверждении, и что означает каждый.
ОтветAnswer
Утверждение касается нескольких слоёв OSI: (1) 'Layer 7 load balancer' -- L7 это Application слой по OSI. Это значит, что LB понимает HTTP-семантику: парсит request-line, headers, body. Может принимать решения о маршрутизации на основе URL (path, query), HTTP-методов, заголовков (Host, User-Agent, Cookie), даже body content. Это в отличие от L4 LB (transport), который видит только TCP-сегменты с src/dst IP и port -- понятия не имеет про HTTP. (2) 'Терминирует TLS' -- TLS концептуально относят к L5-L6 (по OSI). В практике TLS -- библиотека между TCP (L4) и приложением (L7). 'Терминирует' значит, что TLS-handshake происходит между клиентом и LB (не клиентом и backend). LB дешифрует трафик, видит HTTP в открытом виде, может анализировать (L7-операции). Между LB и backend -- либо чистый HTTP без шифрования (внутренняя сеть), либо новый TLS-сеанс. (3) 'Направляет трафик на бэкенды по URL-pattern' -- это L7-операция, основанная на parsed HTTP. Пример: '/api/*' идёт на api-cluster, '/static/*' идёт на CDN-cluster, '/' идёт на web-cluster. Невозможно сделать L4-балансировщику -- он не видит URL. (4) Под капотом тоже работают: L4 (TCP-соединения от клиента к LB, и от LB к backend), L3 (IP-маршрутизация), L2 (Ethernet внутри дата-центра), L1 (провода). Junior не упомянул нижние слои, потому что они для L7 LB абстрагированы -- работают сами по себе. Это и есть польза слоёв: L7-разработчик не думает про Ethernet. На реальной диагностике эта структура помогает: 'LB не отвечает' -- проверяй сверху вниз; L7 (curl directly to LB), L4 (nc -vz), L3 (ping), L2 (link up), L1 (физический cable).

Проверьте понимание

Результат: 0 из 0
Концептуальный
Вопрос 1 из 6. Какой главный практический повод существования модели OSI с её 7 слоями?

Закончили урок?

Отметьте его как пройденный, чтобы отслеживать свой прогресс

Войдите чтобы оценить урок

Прогресс модуля
0 из 4