March 23, 2020

⌦ Компьютерные сети - #𝟒

  1. Сложности построения сетей
  2. Декомпозици: шаблон "Уровни"
  3. Базовые понятия компьютерных сетей
  4. Протокол и интерфейс
  5. Архитектура сети
  6. Эталонные модели организации сетей
  7. Инкапсуляция
  8. Итоги

1. Сложности построения сетей

Сеть которая соединяет два комьютера, расположенные на вашем столе - по сути построить очень просто. Но представьте что ваша задача построить крупную сеть которая объединяет все компьютеры в мире... Это задача гораздо более сложная:

  • Многообразие оборудования

Вам необходимо подумать о том, как работать с большим количеством различного оборудования, которое будет подключатся к этой сети и о программном обеспечении которое будет использоватся.

  • Надёжность

Такая сеть должна быть надёжной. Она должна работать, если даже выйдут из строя некоторые из её устройств.

  • Развитие сети

Сеть должна иметь возможность развиватся - вы можете добавлять в сеть новые устройства, или подключать к вашей сети существующие большие сети целых стран или континентов.

  • Распределение ресурсов

Как правило невозможно построить такую компьютерную сеть - в которой хватает ресурсов для объединения всех пользователей одновременно. В результате вам необходимо будет решать - как распределять между пользователями органиченные имеющиеся ресурсы и что делать, если в сети происходит перегрузка. Например, сотовая сеть работает стабильно почти всегда - но бывает время, например, в новый год - когда множество людей в один момент начинают звонить друг-другу и поздравлять с праздником. В это время сеть почти не работает.

  • Качество обслуживания

В такой большой сети необходимо обеспечить качество обслуживания. Некоторые данные требуется передавать без искажений, например, когда вы скачиваете большой файл. Но для таких данных возможна задержка. Для других типов данных, например, для голосовой связи или для видео-конференции, необходимо передавать данные как можно быстрее - хоть даже и часть из них потеряется. Если исчезнет один из кадров видео-конференции то человек скорее всего этого даже не заметит.

  • Безопасность

Так же очень важно обеспечивать безопасность, чтобы злоумышленники не заполучили деньги пользователей, их персональные данные либо каике-то внутренние данные организации, которые могут составлять коммерческую тайну и т.д.

Решение:

  • Декомпозиция на отдельные подзадачи

Для решения таких задач обычно применяется методика декомпозиции - одна сложна задача делится на несколько более простых задач, с которыми человек уже вполне способен справится.

  • Шаблон "Уровни"

В компьютерных сетях был применён метод декомпозиции с использованием шаблона "уровней".


2. Декомпозиция: шаблон "Уровни"

Компьютерные сети строятся в виде набора уровней, организованного один над другим. Каждый уровень решает одну или несколько тесно-связанных между собой задач.

1

Например уровень который находится ближе всего к среде передаче данных ( Компьютер 1 > Уровень 1 ), обеспечивает просто передачу данных по этой среде не вникая в их содержание. Уровень предоставляет сервис вышестоящиму уровню. Вышестоящие уровни в свою очередь могут решать уже более сложные задачи, например, поиск маршрута в составной сети.

Что хорошего даёт подход в организации сети на основе уровней? Во первых уровень решает как правило одну конкретную задачу - с которой вполне можно справится или это может быть набор связанных между собой задач. Во вторых выполняется изоляция решений друг от друга, то есть, если в сети происходят какие-то изменения - вам не придётся менять всё оборудование, а только то что относится к уровню в котором произошли изменения. Например, если вы решили поменять проводную сеть на беспроводную, вам нужно поменять лишь оборудование которое обеспечивает беспроводную передачу данных ( Среда передачи данных ), возможно поменять адаптеры в компьютерах ( Компьютер 1, Компьютер 2 > Уровень 1 ), а всё остальное останется без изменения. Не нужно менять устройство, которое объединяет большие сети в единую большую составную сеть и так же не нужно менять программное обеспечение на компьютерах, кроме возможно драйверов для адаптеров новой сети.


3. Базовые понятия компьютерных сетей

В многоуровневой модели организации сетей используются некоторые понятия, которые необходимо запомнить если вы хотите глубоко разобратся с работой сетей.


  • Сервис

Сервис - это те функции которые реализует уровень. Например, уровень может обеспечивать гарантированную доставку данных от одного приложения к другому, либо же поиск маршрута в большой составной сети. ( Коротко: Сервис - описывает какие функции реализует уровень )


  • Интерфейс

Интерфейс - набор примитивных операций которые нижний уровень предоставляет верхнему.

2

На схеме интерфейс находится под указателем. Наш уровень N предоставляет некоторые операции верхнему уровню и пользуется операциями которые ему в свою очередь предоставляет нижний уровень через Интерфейс уровня N - 1


  • Протокол

Протокол - это правила и соглашения, используемые для связи уровня N одного компьютера с уровнем N другого компьютера. На схеме ( картинка номер 2 ) протокол находится между уровнями N.


Почему важно разделять эти понятия? Это традиционный подход в проектировании, связанный с необходимостью разделения интерфейса и реализации. Пользователи или вышестоящие уровни взаимодействуют с интерфейсом уровня, они понимают что должен делать этот уровень в описании его сервиса и вызывают некоторые функции интерфейса. Протокол же является реализацией этого действия и он скрыт от вышестоящих уровней и пользователей. Это означает что можно заменить один протокол другим и в работе вышестоящих уровней ничего менять не придётся. С другой стороны можно вносить некоторые изменения в интерфейсы внутри одного компьютера, но он всё равно может взаимодействовать с другими компьютерами, если использует один и тот же протокол. Благодаря этому по сети между собой успешно взаимодействуют компьютеры работающие на разных платформах, например, Windows и Linux - которые содержат внутри себя совершенно разные наборы интерфейсов.


4. Протокол и интерфейс

Интерфейс:

  • Реальное общение внутри компьютера
  • Уровень N вызывает функцию уровня N - 1
  • Программист создает сокет и записывает в него данные

Протокол:

  • Виртуальное общение между компьютерами
  • Реально соединяются только уровни, работающие с физической средой
  • Взаимодействие через заголовки протокола

5. Архитектура сети

Для решения сложной задачи построения большой/крупной составной сети используется декомпозиция её на уровни, но здесь есть ряд вопросов, а именно:

  • Сколько уровней должно быть в сети?
  • Какие уровни должны быть в сети?
  • Каике функции должны выполнятся на каждом уровне?

Это всё задаётся в так называемой "Архитектурой сети", которая в свою очередь задаёт наборы уровней и протоколы которые на них используются. Имейте в виду что интерфейсы не входят в архитектуру, так как они могут быть разные на разных программно-аппаратных платформах.

Другое полезное понятие это "Стек протоколов" - иерархически организованный набор протоколов, достаточный для организации взаимодействия по сети.


6. Эталонные модели организации сетей

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

Модель взаимодействия открытых систем ( ISO OSI )

  • Юридический стандарт международной организации стандартизации ISO
  • 7 уровней, протоколы не входят в модель
  • Хорошая теоретическая проработка
  • На практике не используется

Модель TCP/IP

  • Фактический стандарт на основе популярного стека протоколов TCP/IP
  • 4 уровня
  • Протоколы TCP/IP широко используются на практике
  • Основа интернет

7. Инкапсуляция

Инкапсуляция:

  • Включение сообщения вышестоящего уровня в сообщение нижестоящего уровня
  • Сообщение при передаче по сети состоит из трёх частей: заголовок + данные + концевик ( концевик не обязателен )

Рассмотрим как изпользуется инкапсуляцияи в некой гипотетической сети состоящей из трёх уровней.

Третий уровень сети - формируется общение и передаётся на нижестоящий второй уровень.

Второй уровень понимает что такое большое сообщение по сети за один раз передать не удастся по этому разбивает одно сообщение на две маленькие части. Кроме того второй уровень добавляет к сообщениям заголовок второго уровня ( который показан на картинке зелёным цветом ). В таком виде два сообщения передаются на первый уровень сети.

Первый уровень в свою очередь добавляет заголовок - который помечен на картинке красным цветом и так как этот уровень взаимодействует непосредственно со средой передачи данных - он добавляет ещё и концевик. Таким образом сообщение которое передаётся по сети состоит из следующих частей:

  • Загаловок первого уровня ( красный цвет )
  • Внутри расположенные данные первого уровня ( зелёный и синий цвета )
  • Концевик ( красный цвет )

Но внутри того что первый уровень считает данными - на самом деле находятся заголовки второго уровня ( зелёный цвет ), а потом уже сообщение третьего уровня ( синий цвет ).

Сообщения по среде передачи данных передаются на второй компьютер:

Второй компьютер получает эти сообщения, удаляет заголовки и концевики ( красного цвета ) и передаёт сообщение в таком виде на второй уровень.

Второй уровень удаляет заголовки, объединяет два сообщения в одно большое и передаёт его на третий уровень.

Третий уровень получает большое сообщение, извлекает оттуда полезные данные и передаёт его приложению.


8. Итоги

Создание сетей - сложная задача

  • Декомпозиция на уровни
  • Каждый уровень выполняет одну или несколько четко определённых функций
  • Уровень предоставляет сервис верхнему уровню

Основные понятия организации сетей

  • Сервис - что делает уровень
  • Протокол - как уровень это делает
  • Интерфейс - как получить доступ к сервису уровня

Эталонные модели компьютерных сетей

  • Модель взаимодействия открытых систем ISO OSI
  • Модель TCP/IP