И всё же, ISO/OSI или же примитивнейший TCP/IP. Какая модель интернета для нас лучше? Какая лучше отражает суть вещей?
Начнём с последней – ибо она также начинает своё название с более высокоуровневого протокола – TCP. Если мы такие бравые и отметаем всякие IPX-ы, и только сам IP – internet protocol для нас является протоколом интернета, то и стек нам стоит назвать IP/TCP – ибо сначала мы получаем IP-пакет, в котором с большой вероятностью мы увидим TCP. Один из (их много, да... до сих пор придумывают подверсии).
Ooo-Key, докопались до названия – уже хорошо – можно влепить "минус". Далее – примитивнейшее представление по первом уровне – сразу "канальный". Не понять этим "слесарям", что не сразу пакеты прилетают в виде ethernet-фреймов или же уже своих wifi-фреймов, или в иных других вариациях в других физических устройствах.
Магическим образом эти самые фреймы сильно завязаны на среде передачи: тут мы просто "фигачим", тут нам подавай фреймы управления, а здесь нам ещё нужны фреймы контроля... Всем этим заведуют контроллеры и драйверы, которые за редким исключением, не ковыряет никто кроме производителя. Победа "сантехников" на "учёными" из ISO.
Но ведь есть сторонние разработчики оборудования... Да, и в этой среде я работал. Всё заканчивается тем, что если нам нужно продавать – мы садимся на Ethernet и через всякие фреймворки от производителя фигачим так называемую zero-copy обработку пакетов. Netmap, pf_ring, новый хитровыделанный сокет – всё с оглядкой на Ethernet. С MESH ситуация чуть-чуть иная, но не далеко. Короче, можно было делать Eth/IP/TCP.
IP... прибили его гвоздями. Нет, ну нормальные вообще люди? У нас же есть всё тот же IPX, который... который туннелируется через IP, а скорее TCP различными староверами для игры в star craft по сетке, а то и в war craft 2. Что таить греха – сетевое оборудование сильно привязано к сетевому протоколу – сейчас (да и пару десятилетий назад) проще было поддержать именно IP. И опять "сантехники" ни разу не в проигрыше.
TCP... Ну здесь то облажались ребята – со стриммингом и UDP подрос, да и, как минимум, про ICMP забывать не надо! А они и не забыли. Сделали union-ы под разные транспорты, отдельную обработку (участки стейт-машины), но название такое. Нет, ну может они совсем "ораклы" и скоро всё вытеснит TCP, хотя... Их уже это не волнует. Минус за путающее название – я привереда.
Ну хорошо, думают разработчики – IP есть, порт захватили – можно и работать! Но "нет" – говорят нам ребята из ISO / OSI – до уровня приложения вам осталось ещё сделать 2 прослойки: сеансовый уровень и уровень представительский.
И как безопасник в прошлом, я понимаю прекрасных авторов ISO/OSI – очень круто на уровне той же операционки иметь слой безопасности. Захотели – "заказали" шифрованное соединение, нет – обычное. Но вся петрушка в том, что ОСь плевала на сетевую безопасность. Тот же Windows NT "освободили" от многих средств обеспечения безопасности в пользу скорости работы. Linux – вообще смешно: делали "на коленке", чтобы "работало". Поэтому для заинтересованных лиц появились библиотеки для работы с шифрованием, а не сетевой слой. Используются они в самих программах – свою безопасность другим не доверяют. "Сантехники" будто знали, как устроен мир...
Уровень представления... О как прекрасен (антиутопично-ужасен, как во времена ie6) был бы мир, если бы форматы передачи данных зафиксировали... Не заботиться о REST/Graph, JSONRPC/XMLRPC и прочих больных фантазиях разработчиков, но нет. У нас есть 14 протоколов – надо их все объединить – у нас есть 15 протоколов... Два джуна писали API...
Наверное, неистребимо желание разработчика придумать своё API. Правильное, добротное, годное. Но только для него одного оно такое... Потому и есть куча decode/encode библиотек. Опять же – библиотек. Не часть сетевого стека ОСи, а подключённых программой возможностей. И тут я перестаю предполагать навыки предвидения "сантехников" и пытаюсь вступить в них.
Ведь даже Tor, который создан для создания уровня безопасного транспорта, того самого сессионного уровня, должен делать свой браузер, чтобы им пользовались. Не стать драйвером системы, чтобы шифровать, а делать отдельный продукт. Тут либо массонский заговор (см. первые версии ip v6), либо технологическая необходимость (во что, столкнувшись, я больше верю).
По факту – в очередной раз "Человек-топор" победил – делай просто! Ну а ISO/OSI – довольно интересная концепция для учебников по "истории информатики".