Схема, которую придумали, чтобы договориться о терминах
Модель OSI, Open Systems Interconnection, разработана в конце 1970-х и закреплена стандартом ISO. Это не программа и не протокол, а способ разложить сложную задачу передачи данных на семь последовательных слоёв. У каждого слоя своя узкая обязанность, а соседние слои общаются только через чётко описанные границы.
Пользы от такого разделения две. Производитель сетевой карты может не думать о том, как устроен браузер, а разработчик сайта не обязан знать, по меди или по оптике идёт сигнал. Кроме того, специалисты получают общий словарь: когда инженер говорит «проблема на втором уровне», собеседник понимает, что речь о кадрах и MAC-адресах, а не о маршрутизации.
Все семь уровней снизу вверх
Первый, физический, отвечает за сигналы: напряжение в кабеле, свет в волокне, радиоволны. Второй, канальный, упаковывает биты в кадры и адресует их в пределах одного сегмента; здесь работают MAC-адреса и коммутаторы. Третий, сетевой, отвечает за логические адреса и выбор пути между сетями: это территория IP и маршрутизаторов.
Четвёртый, транспортный, доставляет данные между процессами на конечных машинах: TCP и UDP, порты. Пятый, сеансовый, в теории управляет диалогом между приложениями. Шестой, представления, занимается форматом данных, кодировкой и в некоторых описаниях шифрованием. Седьмой, прикладной, ближе всего к пользователю: HTTP, DNS, почтовые протоколы.
Стоит помнить, что границы между пятым, шестым и седьмым уровнями в реальных протоколах размыты, и отдельного сеанса или представления в стеке интернета обычно не видно.
Как данные проходят вниз и вверх
Отправляя запрос, приложение передаёт данные вниз по стеку. На каждом уровне к ним добавляется служебная информация: транспортный заголовок с номерами портов, сетевой заголовок с адресами, канальный заголовок и завершающая контрольная сумма. Этот процесс называется инкапсуляцией. На стороне получателя всё происходит в обратном порядке: каждый уровень читает свой заголовок, снимает его и передаёт остаток выше.
Промежуточные устройства заходят в стек не целиком. Коммутатор доходит до второго уровня, маршрутизатор до третьего, а межсетевой экран с проверкой содержимого может подниматься существенно выше.
Где модель применяют на практике
Чаще всего её используют при диагностике. Идти снизу вверх удобно: сначала убедиться, что кабель воткнут и индикатор порта горит, затем что устройство получило адрес, затем что пакеты доходят до шлюза, потом что нужный порт открыт, и только после этого разбираться с самим приложением. Такой порядок экономит время, потому что неполадка низкого уровня маскируется под десятки высокоуровневых симптомов.
Модель встречается и в описании оборудования и защитных средств. Фраза «коммутатор уровня 3» означает, что устройство умеет ещё и маршрутизировать, а «фильтрация на уровне 7» говорит об анализе содержимого прикладных протоколов.
Частые заблуждения: Модель OSI
Первое заблуждение: будто OSI описывает реальный интернет. На деле интернет вырос на стеке TCP/IP, который проще и содержит четыре уровня; OSI служит скорее учебной и справочной схемой. О соотношении двух подходов подробно написано на странице про модель TCP/IP.
Второе: будто каждый протокол однозначно относится к одному уровню. Например, TLS не влезает аккуратно ни в один слой: его описывают то как прослойку между транспортным и прикладным, то как часть представления. Третье: будто модель задаёт последовательность действий пользователя. Она про разделение обязанностей, а не про хронологию.
Пример: что скрывается за открытием страницы
Вы вводите адрес сайта. На прикладном уровне браузер формирует запрос HTTP, а перед этим резолвер спрашивает DNS. Транспортный уровень открывает TCP-соединение на порт 443 и нарезает данные на сегменты. Сетевой уровень подписывает каждый пакет адресом отправителя и получателя. Канальный уровень упаковывает его в кадр Ethernet или Wi-Fi с адресом ближайшего узла, а физический превращает биты в электрические импульсы, свет или радиосигнал.
Если ломается один слой, симптомы бывают самыми разными. Выдернутый кабель выглядит как «нет интернета», неверный шлюз как «сайты не открываются, но локальный принтер печатает», а сбой DNS как «пинг по адресу идёт, а по имени нет». Умение сопоставить симптом и уровень сокращает поиск причины до нескольких проверок.