Модель OSI
| Полное название | Open Systems Interconnection Basic Reference Model |
|---|---|
| Разработчик | ISO и CCITT (ныне ITU-T) |
| Стандарт | ISO/IEC 7498-1, ITU-T X.200 |
| Первая редакция | 1984 |
| Число уровней | 7 |
| Альтернатива | модель TCP/IP (4 уровня) |
Модель OSI (англ. Open Systems Interconnection — «взаимодействие открытых систем») — эталонная модель, которая делит сетевое взаимодействие на семь уровней, от передачи битов по проводу до прикладных программ. Каждый уровень решает свою задачу, пользуется услугами нижележащего и предоставляет услуги вышележащему. Модель утверждена Международной организацией по стандартизации (ISO) в 1984 году.[2]
Сами протоколы OSI почти не прижились — интернет построен на стеке TCP/IP. Но модель осталась общим языком сетевых инженеров: выражения «проблема на втором уровне», «балансировщик L4» или «файрвол L7» отсылают именно к её нумерации.
История
В конце 1970-х сети разных производителей (IBM SNA, DECnet) были несовместимы друг с другом. ISO и международный консультативный комитет по телеграфии и телефонии CCITT (ныне ITU-T) взялись создать открытую архитектуру, в которой любая система сможет общаться с любой. Эталонная модель вышла как стандарт ISO 7498 (1984) и рекомендация X.200; действующая редакция — ISO/IEC 7498-1:1994.[1]
Параллельно развивался стек TCP/IP, уже работавший в ARPANET и бесплатно распространявшийся вместе с BSD Unix. Протоколы OSI оказались сложными, а их реализации — запоздавшими и дорогими; к середине 1990-х так называемая «война протоколов» закончилась победой TCP/IP. Из мира OSI в широком употреблении остались модель уровней, служба каталогов X.500 (из неё вырос формат сертификатов X.509) и протокол маршрутизации IS-IS.
Семь уровней
| № | Уровень | Что делает | Единица данных | Примеры |
|---|---|---|---|---|
| 7 | Прикладной (application) | сетевые функции для приложений | сообщение | HTTP, DNS, SMTP, SSH |
| 6 | Представления (presentation) | кодирование, сжатие, шифрование | TLS (частично), MIME, ASN.1 | |
| 5 | Сеансовый (session) | установление и поддержание сеансов | RPC, NetBIOS | |
| 4 | Транспортный (transport) | доставка между процессами, порты, надёжность | сегмент / датаграмма | TCP, UDP, QUIC |
| 3 | Сетевой (network) | адресация и маршрутизация между сетями | пакет | IP, ICMP |
| 2 | Канальный (data link) | передача кадров в пределах одной сети, MAC-адреса | кадр | Ethernet, Wi-Fi, ARP |
| 1 | Физический (physical) | биты в виде сигналов: напряжение, свет, радио | бит | витая пара, оптоволокно, радиоэфир |
Для запоминания порядка снизу вверх в англоязычной литературе используют фразу «Please Do Not Throw Sausage Pizza Away».
Инкапсуляция
При отправке данные спускаются по уровням, и каждый уровень добавляет свой заголовок: HTTP-запрос помещается в TCP-сегмент с номерами портов, сегмент — в IP-пакет с адресами отправителя и получателя (IP-адреса), пакет — в Ethernet-кадр с MAC-адресами. Получатель снимает заголовки в обратном порядке. Каждый уровень «разговаривает» только с одноимённым уровнем на другой стороне и ничего не знает о содержимом.
[ Ethernet | IP | TCP | HTTP-запрос | контрольная сумма кадра ]
L2 L3 L4 L7
OSI и TCP/IP
Модель TCP/IP, описанная в RFC 1122, проще: в ней четыре уровня — канальный, межсетевой, транспортный и прикладной.[3] Три верхних уровня OSI соответствуют одному прикладному уровню TCP/IP, а физический и канальный объединены.
Реальные протоколы плохо укладываются в строгую схему. TLS работает поверх TCP, но под прикладным протоколом — его относят то к шестому, то к четвёртому уровню. QUIC реализует надёжную доставку как транспортный протокол, но работает поверх UDP и включает шифрование. Создатели интернета прямо предупреждали, что слишком жёсткое разделение на уровни может вредить (RFC 3439).[4] Поэтому модель OSI полезна как система координат, а не как точное описание.
Как используется на практике
- Классы оборудования. Коммутатор работает на втором уровне (пересылает кадры по MAC-адресам), маршрутизатор — на третьем (пересылает пакеты по IP-адресам).
- Балансировщики и прокси. Балансировщик L4 распределяет TCP- и UDP-соединения, не заглядывая внутрь; балансировщик L7, например nginx в роли обратного прокси, читает HTTP-запросы и может маршрутизировать по пути URL или заголовкам.
- Безопасность. Межсетевые экраны фильтруют по адресам и портам (L3–L4), а WAF анализирует содержимое HTTP (L7). DDoS-атаки делят на объёмные (L3–L4) и прикладные (L7).[5]
- Диагностика. Поиск неисправности обычно идёт снизу вверх: есть ли физическое соединение, получен ли IP-адрес, проходит ли
ping, открыт ли порт, отвечает ли приложение.