Сетевая модель 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-запрос. Данные спускаются вниз:
- L7: браузер формирует текст запроса
GET / HTTP/1.1. - L4: TCP добавляет заголовок с портами (например, 50000 -> 80) и номерами последовательности, получается сегмент.
- L3: IP добавляет адреса отправителя и получателя, TTL, номер протокола (6 = TCP), получается пакет.
- L2: Ethernet добавляет MAC-адреса следующего узла и тип содержимого (0x0800 = IPv4), в конце — контрольную сумму FCS, получается кадр.
- 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.



