Сетевая модель OSI: 7 уровней, протоколы и устройства

Сетевая модель OSI: 7 уровней, протоколы и устройства Полезное

Сетевая модель OSI (Open Systems Interconnection, модель взаимодействия открытых систем) — это эталонная схема, которая делит передачу данных по сети на 7 уровней: от физического сигнала в кабеле (L1) до приложения, с которым работает пользователь (L7). Каждый уровень решает свою задачу и опирается на уровень ниже.

Важно сразу развести три вещи. Модель OSI — это способ описания и язык для разговора о сети. Протокол — конкретные правила обмена (Ethernet, IP, TCP, HTTP). Стек TCP/IP — набор протоколов, на котором реально работает интернет. OSI не «запускается» на компьютере, по ней раскладывают то, что работает.

Ниже — таблица всех уровней с протоколами и устройствами, путь одного HTTP-запроса по уровням с кодом на Python, сравнение OSI и TCP/IP и то, как модель помогает искать неисправности.

Мини-словарь

  • Уровень (layer) — группа функций с четкой задачей. Уровень N пользуется услугами уровня N-1 и предоставляет услуги уровню N+1.
  • PDU (Protocol Data Unit) — единица данных конкретного уровня: кадр, пакет, сегмент.
  • Инкапсуляция — при движении вниз каждый уровень добавляет свой заголовок (канальный еще и концевик) к данным верхнего уровня. На приемной стороне заголовки снимаются в обратном порядке.
  • SDU (Service Data Unit) — то, что уровень получил сверху для передачи. PDU уровня N становится SDU уровня N-1.

7 уровней модели OSI: сводная таблица

Уровни нумеруют снизу вверх. Протоколы и устройства в таблице — типичные примеры, а не исчерпывающий список.

№ Уровень Что делает PDU Примеры протоколов Устройства и ПО
7 Прикладной (Application) Сетевые сервисы для приложений Данные HTTP, DNS, SMTP, SSH, FTP Прокси, L7-балансировщик, WAF
6 Представления (Presentation) Формат, кодировка, сжатие, шифрование Данные Функции TLS, MIME, ASN.1 Реализуется в ПО, отдельных устройств нет
5 Сеансовый (Session) Установка, поддержание и завершение сеанса Данные NetBIOS, RPC Реализуется в ПО
4 Транспортный (Transport) Доставка между процессами (порты), надежность Сегмент (TCP), датаграмма (UDP) TCP, UDP, QUIC L4-балансировщик, stateful firewall
3 Сетевой (Network) Логическая адресация и маршрутизация между сетями Пакет IPv4, IPv6, ICMP Маршрутизатор, L3-коммутатор
2 Канальный (Data Link) Доставка кадра в пределах одного сегмента, MAC-адреса Кадр Ethernet, Wi-Fi (802.11), PPP, VLAN 802.1Q Коммутатор, мост, точка доступа
1 Физический (Physical) Передача битов сигналом по среде Биты Физические уровни Ethernet, DSL, оптика Кабель, концентратор (хаб), повторитель, трансивер

Сетевая карта работает на L1 и L2: формирует сигнал и знает свой MAC-адрес. Межсетевой экран в зависимости от класса смотрит L3-L4 (адреса, порты, состояние соединений) или доходит до L7, как NGFW и WAF.

Протоколы, которые не укладываются в один уровень

Реальные протоколы проектировали под TCP/IP, поэтому часть из них ложится на OSI с оговорками:

  • ARP связывает IP-адрес (L3) с MAC-адресом (L2); его относят то к L2, то к «L2/L3».
  • TLS работает поверх TCP и шифрует данные приложения; в учебниках его ставят на L6, на L5-L6 или «между L4 и L7».
  • QUIC работает поверх UDP, но сам обеспечивает надежность и шифрование, то есть берет на себя задачи L4-L6.
  • ICMP передается внутри IP, но служит для диагностики самого сетевого уровня (ping, traceroute), поэтому его относят к L3.
  • MPLS часто называют «уровень 2.5».

Спорить о «правильном» уровне для таких протоколов бессмысленно: модель — инструмент описания, а не классификатор с единственным ответом.

Как данные проходят по уровням: инкапсуляция

Возьмем браузер, который отправляет HTTP-запрос. Данные спускаются вниз:

  1. L7: браузер формирует текст запроса GET / HTTP/1.1.
  2. L4: TCP добавляет заголовок с портами (например, 50000 -> 80) и номерами последовательности, получается сегмент.
  3. L3: IP добавляет адреса отправителя и получателя, TTL, номер протокола (6 = TCP), получается пакет.
  4. L2: Ethernet добавляет MAC-адреса следующего узла и тип содержимого (0x0800 = IPv4), в конце — контрольную сумму FCS, получается кадр.
  5. L1: сетевая карта превращает кадр в сигнал.

Маршрутизатор на пути снимает L2-заголовок, смотрит IP-адрес назначения, выбирает маршрут и заворачивает пакет в новый кадр с другими MAC-адресами. IP-адреса при этом не меняются, если на пути нет NAT. Это главное различие L2 и L3: MAC-адрес действует в пределах сегмента, IP-адрес — от отправителя до получателя.

Пример на Python: собираем кадр вручную

Код ниже ничего не отправляет в сеть. Он собирает байты HTTP-запроса, оборачивает их в заголовки TCP, IPv4 и Ethernet и печатает размер на каждом уровне. Проверено на Python 3.14.7 и 3.9.6, сторонние библиотеки не нужны.

import struct

def checksum(data: bytes) -> int:
    if len(data) % 2:
        data += b"\x00"
    s = sum(struct.unpack(f"!{len(data) // 2}H", data))
    while s >> 16:
        s = (s & 0xFFFF) + (s >> 16)
    return ~s & 0xFFFF

# L7: прикладные данные (HTTP-запрос)
http = b"GET / HTTP/1.1\r\nHost: example.com\r\n\r\n"

# L4: TCP-заголовок 20 байт (порты, номера, флаги PSH+ACK)
tcp = struct.pack("!HHIIBBHHH", 50000, 80, 1, 1, 5 << 4, 0x18, 64240, 0, 0)
segment = tcp + http

# L3: IPv4-заголовок 20 байт (TTL 64, протокол 6 = TCP)
src, dst = bytes([192, 168, 1, 10]), bytes([203, 0, 113, 10])
ip = struct.pack("!BBHHHBBH4s4s", 0x45, 0, 20 + len(segment),
                 0, 0x4000, 64, 6, 0, src, dst)
ip = ip[:10] + struct.pack("!H", checksum(ip)) + ip[12:]
packet = ip + segment

# L2: Ethernet II - MAC-адреса и EtherType 0x0800 (IPv4)
eth = bytes.fromhex("aabbccddeeff") + bytes.fromhex("112233445566") + b"\x08\x00"
frame = eth + packet

print(f"L7 данные:   {len(http):3} байт")
print(f"L4 сегмент:  {len(segment):3} байт (+{len(tcp)} TCP)")
print(f"L3 пакет:    {len(packet):3} байт (+{len(ip)} IPv4)")
print(f"L2 кадр:     {len(frame):3} байт (+{len(eth)} Ethernet)")
print("IPv4 checksum верна:", checksum(ip) == 0)
print("Начало кадра:", frame[:16].hex(" "))
print("MSS при MTU 1500:", 1500 - len(ip) - len(tcp))

Результат прогона:

L7 данные:    37 байт
L4 сегмент:   57 байт (+20 TCP)
L3 пакет:     77 байт (+20 IPv4)
L2 кадр:      91 байт (+14 Ethernet)
IPv4 checksum верна: True
Начало кадра: aa bb cc dd ee ff 11 22 33 44 55 66 08 00 45 00
MSS при MTU 1500: 1460

Что видно из вывода:

  • 37 байт полезных данных обросли 54 байтами заголовков. Для маленьких запросов накладные расходы больше самих данных.
  • Кадр начинается с MAC-адреса получателя (aa bb cc dd ee ff), затем отправителя, затем 08 00 — знак, что внутри IPv4. Байт 45 — уже начало IP-заголовка: версия 4, длина заголовка 5 слов по 4 байта.
  • MTU 1500 — ограничение L2 для Ethernet. Из него вычитаются заголовки IP и TCP, остается 1460 байт данных на сегмент (MSS). Это верно для IPv4 без опций; у IPv6 заголовок 40 байт, и MSS меньше.

Границы примера: TCP checksum оставлена нулевой (ее считают по псевдозаголовку с IP-адресами), FCS в конце кадра не добавлена, опции TCP не заданы. Адрес 203.0.113.10 взят из диапазона для документации.

OSI и TCP/IP: сравнение

Модель TCP/IP описывает реальный стек интернета. В RFC 1122 у нее четыре уровня, в учебниках часто встречается вариант из пяти, где канальный и физический разделены.

OSI TCP/IP (RFC 1122) Что попадает
7 Прикладной, 6 Представления, 5 Сеансовый Прикладной (Application) HTTP, DNS, SSH, TLS, форматы данных
4 Транспортный Транспортный (Transport) TCP, UDP
3 Сетевой Межсетевой (Internet) IP, ICMP
2 Канальный, 1 Физический Канальный (Link) Ethernet, Wi-Fi, ARP
Критерий OSI TCP/IP
Происхождение Стандарт ISO и CCITT (сейчас ITU-T), 1984 Протоколы ARPANET, стандартизированы в RFC
Назначение сейчас Язык описания и обучения Рабочий стек интернета и локальных сетей
Число уровней 7 4 (или 5 в учебной версии)
Сеанс и представление Отдельные уровни Решаются внутри приложения
Собственные протоколы Протоколы стека OSI (например, X.400) почти не прижились IP, TCP, UDP используются повсеместно

Главный вывод: в работе инженеры используют протоколы TCP/IP, но говорят о них в терминах OSI. «Проблема на L2», «L4-балансировщик», «L7-правило» — это номера уровней OSI. Подробно стек TCP/IP разобран в статье TCP/IP простыми словами.

Как модель помогает искать неисправности

Самое практичное применение OSI — порядок диагностики. Сайт «не открывается», и проверять уровни снизу вверх быстрее, чем гадать:

Уровень Вопрос Чем проверить (Linux)
L1 Есть линк, горит индикатор, кабель цел? ip link (состояние UP/DOWN), ethtool eth0
L2 Видим ли соседей в сегменте? ip neigh (ARP-таблица)
L3 Есть адрес, шлюз, доходят пакеты? ip addr, ip route, ping, traceroute
L4 Открыт ли порт, слушает ли сервис? ss -tlnp на сервере, nc -zv host 443 с клиента
L6-L7 Сертификат, DNS, ответ приложения? dig, openssl s_client -connect host:443, curl -v

Если ping по IP-адресу проходит, а по имени нет, проблема выше L3 — скорее всего, в DNS. Если ping проходит, а nc на порт 443 не соединяется, важно, как именно. Мгновенный отказ (Connection refused, TCP RST) обычно значит, что порт никто не слушает, хотя так же отвечает и фаервол с правилом REJECT. Долгое ожидание до таймаута чаще говорит о фаерволе, который молча отбрасывает пакеты, или о проблеме маршрута на обратном пути. Учтите: ICMP часто закрыт, и неответ на ping сам по себе не доказывает, что узел недоступен.

Порядок «снизу вверх» — удобная эвристика, а не обязательное правило. Опытный инженер начинает с того уровня, на который указывают симптомы.

Выводы

  • Модель OSI делит сетевое взаимодействие на 7 уровней: физический, канальный, сетевой, транспортный, сеансовый, представления, прикладной.
  • Каждый уровень имеет свою единицу данных (биты, кадр, пакет, сегмент, данные); у нижних уровней есть типичные устройства (хаб на L1, коммутатор на L2, маршрутизатор на L3), а L5-L6 реализуются только в ПО.
  • При передаче данные инкапсулируются: HTTP-запрос из 37 байт превращается в Ethernet-кадр из 91 байта без учета FCS.
  • Реальные сети работают на стеке TCP/IP из 4 уровней, а OSI служит общим языком: L2, L4 и L7 в разговоре инженеров — номера уровней OSI.
  • Главная практическая польза модели — системная диагностика по уровням.

Где применяется / связь с практикой

Модель OSI нужна сетевому инженеру, системному администратору и DevOps-инженеру каждый день: при настройке VLAN и маршрутизации, при выборе L4 или L7 балансировки, при разборе дампа трафика в Wireshark, где заголовки разложены именно по уровням. На собеседованиях вопрос «что происходит на каждом уровне, когда открываешь сайт» задают постоянно.

Освойте тему на практике

Если хотите системно разобраться в коммутации, маршрутизации и диагностике на реальном оборудовании, посмотрите курс «Сетевой инженер. Базовый уровень». Начать можно с бесплатных открытых уроков Otus по сетям и администрированию.

FAQ

На каком уровне OSI работает коммутатор, а на каком маршрутизатор?
Классический коммутатор работает на L2 и пересылает кадры по MAC-адресам, маршрутизатор — на L3 и выбирает путь по IP-адресам. L3-коммутатор умеет и то и другое, поэтому граница между этими устройствами в современных сетях размыта.

Где в модели OSI находится HTTPS?
HTTP — прикладной уровень (L7), TLS обеспечивает шифрование и обычно соотносится с L6 или с границей L5-L6. HTTPS — это HTTP поверх TLS поверх TCP (L4); у HTTP/3 вместо TCP используется QUIC поверх UDP.

Устарела ли модель OSI?
Как стек протоколов OSI не прижился, но как эталонная модель используется повсеместно: в документации оборудования, в названиях классов устройств (L2-коммутатор, L7-балансировщик) и в диагностике.

Как быстро запомнить порядок уровней?
Англоязычная мнемоника снизу вверх — «Please Do Not Throw Sausage Pizza Away»: Physical, Data Link, Network, Transport, Session, Presentation, Application.

OTUS Журнал
Скидка 5% 12-19 октября на курсы (popup)
Бесплатные открытые уроки (поп-ап)