Вращение Земли вокруг OSI

Автор: Александр Солодовников

Должность: Шеф

15.03.19

Сказка про OSI, или на чем Интернет держится. Александр Солодовников, руководитель ГК "Март", расскажет нам об этой системе.

Издревле -:) повелось, что основная задача связистов - предоставление качественных услуг. Всегда ценился быстрый гонец и лучше на коне, а для обеспечения надёжности доставки  лучше несколько таких быстрых гонцов, мало ли один пропадёт в дороге, всякое же бывает. Река, например, разольётся, или лихие люди с кистенём выйдут навстречу… Да и дороги в России, ну сами знаете. А ещё гонец запить-загулять может, Россия же, беды-то две. Ещё страна у нас огромна, не всюду посыльный доберётся, поэтому иногда он только до возвышенности и ехал, а там сторожевая башня, на ней разжигали большой сигнальный костер. Огонь издалека видно, а дальше другой гонец прямиком к воеводе или князю.

Сложнее, если расстояние между отправителем и получателем очень большое, и языки разные. К примеру, князь Владимир должен отправить весточку Византийскому императору. Как?

Князь надиктовывает дьяку, тот записывает и передает толмачу. Толмач переводит на греческий, в Византии же греческий в это время был. Письмо переписывают несколько раз, каждый свиток запечатывают сургучом и отдают гонцам. Гонцы, кто на коне до Чёрного моря, кто на ладье по Днепру до нынешнего Николаева, потом и те и другие на кораблях до Царьграда (Константинополя). А кто-то, возможно, по суху вокруг моря, через нынешнюю Болгарию. Наконец, какой-то из свитков прибыл во дворец, там его вскрыли и прочитали императору. Хорошо, что это было после VII века -:), иначе пришлось бы переводить с греческого на латынь и только потом зачитывать багрянородному.

Долг дипломатической вежливости или необходимость требуют ответить. Император отвечает князю. И всё идёт в обратный путь.

Таким вот образом всегда обеспечивалась надежность доставки сообщения и получения ответа, а также возможность взаимодействия технологически разных систем! Короче, вот так просто можно объяснить идеи, на которых основывается Базовая Эталонная Модель Взаимодействия Открытых Систем, в просторечии Модель OSI (Open System Interconnection). Или её аналог, например, модель TCP/IP, которая по сути то же самое, только укорочена до нЕльзя, специально для тех, у кого семь слоёв в голове не помещаются, а помещаются только четыре -:).

Шутки шутками, но на самом деле Модель OSI прекрасно описывает способы и правила взаимодействия различных приложений, драйверов, систем ввода-вывода и физических сред. Собственно сети потому и работают, что все добровольно согласились с такими подходами и их соблюдают. Но (!) OSI долго и тщательно согласовывалась, потому что “у каждого сапожника свой взгляд на искусство”, да и хотелось достичь недостижимого, то есть идеала. Поэтому, прижилась модель TCP/IP. Она выглядит сильно усеченной версией модели OSI и не раскрывает всего на свете, но где-то это и не нужно, а где-то добирается отдельными протоколами.

 

Да, чуть не забыл две вещи… Первая, протокол в нашей отрасли означает совсем не то, что выписывает сотрудник ДПС водителю. Протокол у нас - скорее стандарт “де-факто”, т.е. некий набор договорённостей о правилах поведения тех или иных штук, или о правилах их взаимодействия (если говорить о князьях-императорах, то протокол  - это договоренность посылать друг другу весточки на бумаге, а не на бересте или “высеченные в граните”. А еще, например, каждый свиток должен быть скреплен печатью, иначе считается поддельным). Вторая вещь заключается в том, что есть некая путаница в понятиях стек протоколов TCP/IP и модель TCP/IP, а также в количестве уровней, которые упоминаются в различных источниках. Тут все не так сложно, стек - это набор протоколов, а модель - попытка этот стек описать так, чтобы всякий понял. А уровней в модели TCP/IP всего четыре. Это потому, что, так вот запросто взяли и запихнули весь функционал 5-7 уровней модели OSI в один, типа, программисты же умные, сами всё придумают в своих приложениях. Так оно и получается, поскольку нет протокола, который бы работал исключительно на 7-м, 6-м или 5-м уровне. Обычно протоколы верхних трёх уровней OSI плавно дрейфуют со своими данными сверху вниз или наоборот, в зависимости от того, передающая сторона или принимающая. Аналогично поступили и с 1-2 уровнями OSI, объединив их в свой первый. Если программисты умные, то чем железячники хуже? Тоже ведь не дураки.  Как говорилось выше “у каждого сапожника свой взгляд на искусство”. Согласование деталей модели OSI никак не заканчивалось, а стек TCP/IP уже употреблялся в реальной жизни и, вроде, всех более или менее устраивал, получилось как получилось. В итоге, в школе изучают Эталонную модель OSI (люди старались же), которая универсальна, но на практике говорят о модели TCP/IP, хотя иногда это выглядит странным, потому что есть протоколы никак не вписывающиеся в стек, но всё работает при этом.

 

Попробуем описать в терминах OSI общение князя с императором?

Итак, князь диктует сообщение, а дьяк записывает. Это на что похоже? Точно! Совсем как будто кто-то пишет в мессенджере, например Telegram или WhatsApp, пользуясь голосовым вводом (руками, кстати, тоже подойдёт).
Вот это и есть Уровень Приложения (Application) Эталонной модели OSI (уровень 7).

Дальше что? А дальше сообщение нужно перевести на греческий, завернуть в свиток и приложить княжескую печать. Перевод можно трактовать, как преобразование кодировки, заворачивание в свиток - как упаковку архиватором, чтобы меньше места занимало в дорожной суме, а печать - абсолютно точно мера безопасности, некое подобие SSL/TLS шифрования (если текст к тому же обработать “кодом Цезаря”, к примеру, совпадение будет почти полным ).  Кстати, и Telegram и WhatsApp сжимают и шифруют :). Ну, и как вы догадались, за эти действия отвечает 6-й Уровень модели OSI, который называют Уровнем Представления (Presentation).

За 6-м следует 5-й Уровень. Логично же… А вот используют его реже других. Он называется Сеансовым (Session) Уровнем. Нужен только в том случае, когда приложение- источник должно установить с приложением- получателем непрерывный сеанс, в качестве примера могу назвать протоколы Частных сетей (любые VPN, вот L2TP пришел на ум). Да! Шифрование данных не обязательно, но обязательна сессия связи. Условно говоря, есть сессия с некоей удалённой от нас сетью, а вместе с ней “заблокированный на территории Российской Федерации” Телеграм. Так что, есть сессия - есть Телеграм, нет сессии… ну вы поняли. С чем бы сравнить, если вернуться во времена Киевской Руси-то? А.... вот! Если в сообщении шла речь о женитьбе князя Владимира на дочери императора Василия II, Анне Византийской. Это же целые переговоры! Таким образом,. отправив первое письмо, князь запросил открытие сессии. Если император согласился, то она продолжилась до полного и бесповоротного окончания переговоров. И вся дальнейшая переписка происходила внутри этой сессии. Получается, что на свиток,  содержащий переведённое на греческий письмо и уже опечатанный княжеской печатью, нужно навесить еще один ярлык “Переговоры о женитьбе”. Чтобы не перепутали и во дворец пускали!

Затем, следуя логике модели OSI, мы должны пометить свиток сообщением о том, что это  лично императору, а то Императорская Варяжкая Стража передаст не в те руки. Им, варягам, нужно чисто-конкретно всё писать! Как-то так, мы оказались на 4-м Транспортном Уровне. На нём устанавливают номер порта приложения- получателя и случайным образом выбирают номер порта приложения- отправителя. В примере с Telegram, сторона -  получатель использует порт за номером 80, кстати тот же, что и WEB-сервер, а вот клиентской стороне, операционная система выделит случайно выбранный номер порта из незанятых.

Что ещё? Гонцу надо сказать куда ехать, объяснить, что точка назначения - императорский дворец в Константинополе, а также объяснить, что в это время года лучше идти по Днепру, так быстрее, половодье же. Это собственно и есть Сетевой или 3-й Уровень модели OSI. Тут устанавливается IP-адрес сервера назначения и наиболее удачный, по мнению системы маршрутизации, путь до этого адреса. Обращаю внимание на то, что адрес именно устанавливается, т.е. его сообщают гонцу, а определяется он гораздо раньше. Мы его знаем изначально из настроек клиентского приложения.

А потом гонцу говорят: “Иди-ка ты братец к Днепру, там ладьи стоят.” И тут мы оказываемся на 2-м, Канальном, Уровне. А направление “к Днепру”, как бы MAC адрес (физический адрес) порта коммутатора. Гонец доходит до пристани и находит нужный причал (это уже MAC адрес порта маршрутизатора).

Дорога же, по которой гонец шел к реке, далее сам Днепр, а потом море и опять дорога, но уже до дворца - и есть физические среды передачи данных. Т.е. медная витая пара, оптика или WiFi. Это уже 1-й или Физический Уровень.

Это всё? Нет конечно. На пути гонца ждут приключения: он бредет по дорогам, едет на лошади или идет на корабле, короче говоря, меняет транспортную среду. А иногда он вынужден менять и маршрут, то разбойники шалят, то море бурлит. Последнее происходит на транзитных маршрутизаторах, они лучше знают куда правильнее идти.

Да и в княжьих хоромах ждут: дошел или нет. И если обратно с вестью гонец не возвращается  в назначенное время (TTL - Time To Live - время жизни), значит пропал человек. Тогда отправляют другого. И так отведённое количество раз.

Вроде это всё что нужно бы сказать для начала про Базовую Эталонную Модель Взаимодействия Открытых Систем, в просторечьи Модель OSI (Open System Interconnection). Детали разберём позднее, если захотите.

Сложно? По-моему нет! Надеюсь, было полезно и нескучно -:) Сетевые технологии - весело и увлекательно, как, впрочем, ИТ в целом.

 И как говорится: “Вот и сказочке конец, а кто слушал - молодец!”