2023-04-23 15:17:20
В предыдущем посте я по неосторожности помянул семиуровневою модель OSI, и тут же получил пачку ответов, о том что это абстрактная, идеальная модель, которая может чуточку не соответствовать реальности. В прошлом я работал сетевым инженером (админ спит в обнимку со своим сервером, у инженера пожар идет по плану), и не раз спрашивал про OSI на собеседованиях, стараясь по возможности избегать уровней 1, 5 и 6, которых в четырехуровневой TCP/IP suite не было никогда. Мне даже казалось, что это неплохой способ объяснить что такое инкапсуляция пакетов, и чем коммутация отличается от маршрутизации. Тогда ещё можно было найти отличия.
Пока я не вспомнил первое своё столкновение с Frame Relay, в отсутствие сеньора. Виртуальные цепи? Да, что это всё за ёбань такая и что она делает в нашей модной электро-музыкальной сети? Всё это остатки сетей 70-80-х годов, DECNet, SNA, X.21/X.25 сотоварищи. Тогда считалось, что взаимодействие происходит между человеком и компьютером, а не между компьютерами, и что глобальная сеть станет “мировым информаторием”, здорово смахивающим на телефонную сеть. А в телефонии “цепи” (circuit) были настоящей электрической цепью между двумя телефонными аппаратами с кучей фильтров, усилителей и коммутаторов по дороге. И терминалы для подключения к мэйнфреймам.
Сейчас это всё не имеет ни малейшего смысла. Мы по-прежнему хотим от сетей доставки данных из точки A в точку B, вкупе с мультиплексированием, контролем ошибок, контролем потока, гарантиями по полосе и качеству сервиса, и всё это устроено совсем не так как написано в “стандарте” (в полном объёме его так и не удалось реализовать, что к лучшему). Никакого деления на “слои” каждый из которых общается только со слоем ниже и предоставляет унифицированный интерфейс слою выше, нет и не было никогда. Нет никаких “фреймов” пересылаемых через “мосты”, и пакетов, для которых маршрутизаторы выбирают маршрут. И то, и то - пакеты, и то, и то маршрутизация. И когда вы настраиваете современный L2/L3 свитч, первое же столкновение с ARP, MPLS и DHCP Relay оставляет очень неприятный осадочек по поводу “идеальных моделей”.
В OSI сессионный и презентационный уровень не абстрактны, а вполне конкретны, это протоколы X.215, X.216, и первый еще дополнительно отвечает за синхронизацию, а второй за то, что сейчас можно было бы назвать сериализацией и кодировкой данных. В современных сетях и то и другое находится сильно выше седьмого уровня приложений. А тогда предполагалось, что вы в мировом телефонном справочнике DAP (X.500) найдёте нужного абонента, пошлете ему структурированное MHS (X.400) письмо, и все эти сложносочиненные структуры данных, будут сериализованы и перекодированы на пятом и шестом “уровнях”. Если вы сталкивались с LDAP и считаете, что это невменяемая, но иногда неизбежная хуйня, то вы еще не видели его страшного дедушку.
Самый простой вопрос, связанный с моделью OSI: на каком “уровне” находится TLS? Он пользуется TCP, значит он должен быть выше четвертого уровня. В нем есть свой собственный хендшейк и сессии, и у него есть собственные структуры данных, значит это уровень пять или шесть. Но приложения используют его как транспорт, значит это четвертый уровень (тут кстати в QUIC попытались навести порядок). Так что называйте его хоть 42-м уровнем, попытайтесь поставить вместо TLS X.216, придумывайте уровень 2-с-половиной для MPLS, всё это не имеет никакого смысла. И в RFC есть даже объяснение почему слои (layering) не нужно (и даже вредно) воспринимать всерьез.
9.9K views12:17