Модель OSI кажется простой: всего 7 уровней. Однако большинство статей просто пересказывают друг друга, упуская важные детали. В этом цикле статей мы разберём первоисточник — стандарт ISO/IEC 7498–1:1994, чтобы разобраться не только в уровнях, но и во всех тонкостях модели: как работают протоколы, как взаимодействуют уровни и какие принципы лежат в её основе. Ссылка на первую часть.
Это не дословный перевод. Это, скорее, ретроспектива плюс анализ и интерпретация. Берётся параграф и «выжимается» его суть.
⚔️ Так отмечены места, где мы будем использовать силу Рима: аналогия для быстрого понимания концепций.

Идентификаторы
На каждом уровне модели OSI предполагаются специальные метки — идентификаторы, которые помогают отличить одну сущность от другой. Латинское «identificare» означает устанавливать тождество, совпадение.
⚔️ Идентификаторы можно сравнить с военными знаками легионов (например, signum — символ подразделения). Каждый легион имел свой уникальный знак, чтобы его можно было легко идентифицировать на поле боя или в военных документах.
Адреса и точки доступа
(N)‑адрес — общее название, которое указывает на группу точек доступа (N‑SAP).
(N‑SAP‑адрес) — конкретный адрес одной точки доступа на уровне (N).
Функция отображения адресов (N‑address mapping) — связывает (N)‑адреса с (N-1)‑адресами на более низком уровне.

Точка доступа (N‑SAP) — это «дверь» в сеть, через которую устройства подключаются к сервису.
Если устройство (N+1) подключено — эта «дверь» закреплена за ним.
Если устройство отключается — «дверь» остаётся.
Другое устройство может «войти в сеть» через ту же дверь.
Пример. Wi‑Fi‑роутер в кафе. Подключился → телефон получил адрес, отключился и подключился другой посетитель → он получил тот же адрес. Если подключение стабильно и не изменяется, то (N)‑SAP‑адрес может идентифицировать устройство (N+1).
⚔️ В Риме существовала разветвлённая сеть дорог (viae), и каждая имела официальное название. К примеру, Via Appia — это как N‑SAP, указывающая на конкретную дорогу. Легионы могут её использовать, но не привязаны к одному и тому же месту.
(N)‑адрес известен только нижнему уровню:
Устройство (N)‑уровня знает, какие у него адреса и как их использовать.
Но (N+1)‑уровень не знает — он просто отправляет запрос, а сеть сама решает, куда его направить.
Пример. Браузер не знает IP‑адрес сервера. DNS находит IP, а ARP получает MAC‑адрес.
Функция отображения адресов (N‑address mapping) определяет соответствие между адресами уровня N и адресами уровня (N-1).
(N)‑сущности не знают, что взаимодействуют с одной и той же (N+1)‑сущностью. Иными словами, если у одного пользователя несколько подключений к сети, то сеть не понимает, что это одна и та же сущность — каждое подключение выглядит как отдельное.
Маршрутизация (routing)
Чтобы данные дошли по нужному пути, используется маршрутизация.
Маршрутизация (Routing) — функция внутри уровня (N), которая переводит название сущности или адрес точки доступа к сервису в путь, по которому можно достичь эту сущность.
(Имя сервиса) → (N‑адрес) → (N‑SAP‑адрес) → (Оптимальный маршрут)
(N+1)‑сущность (приложение) хочет отправить данные.
(N)‑уровень смотрит на (N)‑адрес, определяет, по какому пути передавать данные.
После этого данные отправляются через (N-1)‑уровень по выбранному маршруту.
Маршрутизация позволяет (N+1)‑сущности передавать данные, не задумываясь, как именно они дойдут до получателя.
⚔️ В Риме существовала государственная почтовая служба (cursus publicus), где курьеры передавали сообщения. Письма проходили через станции, как маршрут мог изменяться в зависимости от обстановки. Это похоже на маршрутизацию в сети: сообщение кому‑то адресовано, но путь до получателя определяется «динамически».
Идентификаторы соединений
Соединения устанавливают множество устройств, поэтому их нужно различать.
(N)‑connection‑endpoint‑identifier — идентификатор конечной точки соединения, различает соединения через одну и ту же (N)‑SAP.
(N)‑connection‑endpoint‑suffix — уникальная часть идентификатора конечной точки в пределах (N)‑SAP.
multi‑connection‑endpoint‑identifier — идентификатор конечной точки в многоточечном соединении.
(N)‑service‑connection‑identifier — определяет соединение в контексте взаимодействующих (N+1)‑сущностей.
(N)‑protocol‑connection‑identifier — определяет конкретное (N)‑соединение в рамках мультиплексированного (N-1)‑соединения.
(N)‑entity‑title — уникальное имя (N)‑сущности.

Когда две (N+1)‑сущности устанавливают соединение, их (N)‑уровень выдаёт им уникальные идентификаторы (N‑connection‑endpoint‑identifier), чтобы различать соединения через одну и ту же точку доступа (N‑SAP).
Пример: если по почте на адрес доставляются посылки, то каждой из них присваивается свой номер.
(N)‑connection‑endpoint‑identifier = (N)‑SAP‑адрес + (N)‑суффикс конечной точки
Пример: Endpoint‑ID = (IP: 192.168.1.1, Suffix: 001)
⚔️ В Риме были склады (horrea) в крупных портах, через которые проходили различные товары, их нужно было различать. Это похоже на N‑connection‑endpoint‑identifier, потому что товары могли маркироваться с указанием владельца, типа товара, даты поступления.
Многоточечное соединение — когда (N+1)‑сущность соединяется сразу с несколькими (N+1)‑сущностями через один (N)‑уровень. Чтобы сеть понимала, кому именно отправлять данные, используется многоточечный идентификатор конечных точек (multi‑connection‑endpoint‑identifier).
(N)‑service‑connection‑identifier — это уникальный идентификатор соединения сервиса, чтобы различать разные соединения между (N+1)‑сущностями, это позволит не смешивать трафик.
Пример: Сервер VoIP одновременно обрабатывает 99 звонков. (N)‑уровень даёт каждому звонку свой идентификатор соединения сервиса. Это разные звонки, даже если они проходят через один IP и порт.
⚔️ В Риме была сложная налоговая система. Чтобы сборы не смешивать, их маркировали, например, отдельные реестры для сенаторов (aurum coronarium) и простых граждан (tabulae publicae). Это похоже на уникальные идентификаторы соединения сервиса, чтобы казначеи не путали отчёты.
Заключение
1️⃣ Идентификаторы — зачем они нужны?
В модели OSI каждый уровень работает со своими объектами, и их нужно различать.
Идентификаторы помогают системе понять:
Кто подключился? (N‑SAP‑адрес)
Какой у него маршрут? (Routing)
Как его отличить от других? (N‑connection‑endpoint‑identifier)
2️⃣ Адресация и точки доступа?
(N)‑адрес → общий адрес, который может объединять несколько точек доступа (N‑SAP).
(N)‑SAP‑адрес → конкретная точка входа в сервис. Может быть использован разными устройствами в разное время.
Функция отображения адресов (N‑address mapping) сопоставляет (N)‑адреса с (N-1)‑адресами.
3️⃣ Маршрутизация (Routing) — как передавать данные?
(N)‑уровень использует маршрутные механизмы, чтобы найти путь к (N+1)‑сущности. Маршрут может изменяться динамически (как в IP‑сетях).
4️⃣ Как различаются соединения?
Разные потоки могут идти через одну точку доступа (N‑SAP), и их нужно разделять.
Что различаем? |
Как различаем? |
Пример |
---|---|---|
Разные соединения через одну точку доступа |
(N)‑connection‑endpoint‑identifier |
Два VPN‑подключения к одному серверу. |
Разные устройства одного пользователя |
(N)‑connection‑endpoint‑suffix |
Один человек зашёл с ПК и телефона. |
Несколько получателей в одном соединении |
multi‑connection‑endpoint‑identifier |
Видеозвонок с несколькими участниками. |
Разные сервисы на одном сервере |
(N)‑service‑connection‑identifier |
Один сервер обрабатывает VoIP и HTTP. |
Потоки данных внутри одного соединения |
(N)‑protocol‑connection‑identifier |
Аудио и видео внутри одного Zoom‑звонка. |
Важно:
Без идентификаторов невозможно управлять соединениями.
Каждый уровень OSI видит только свою часть адресации.
Маршрутизация определяет путь, но не меняет идентификаторы.
Разные соединения, сервисы и устройства должны различаться.
В сложных системах данные могут передаваться разными маршрутами, но идентификаторы дают возможность их точно доставить.
⚔️ Все дороги ведут в Рим, а без идентификаторов — в никуда.