В предыдущей статье, я говорил о том, как Windows (и другие сетевые ОС) используют процесс под названием абстракция, позволяющий создавать приложения без необходимости для разработчика беспокоиться о создании драйверов для определенных физических устройств. Хотя такой подход широко используется в ОС Windows, он особенно важен, когда речь идет о работе с сетью.
Чтобы понять, почему дело обстоит именно так, вспомните, что я говорил в предыдущей статье касаемо абстракции физических устройств. Предположим, что приложению необходимо взаимодействовать в сети. Разработчики не встраивают сетевые драйверы в приложение, они пишут программу таким образом, что она может обратиться к ОС Windows. Производитель сетевого адаптера машины обеспечивает драйвер, который также связан с ОС Windows, поэтому ОС Windows выполняет все необходимые совмещения, позволяющие приложению взаимодействовать с сетевым адаптером.
Конечно это слишком общий пример. На самом деле все немного более сложно. В конце концов, сетевой адаптер представляет собой простое устройство, созданное для приема и передачи пакетов данных. Сама плата ничего не знает о Windows, приложении или даже о протоколах, которые используются для приема и передачи.
Вышеприведенный пример, предполагает, что в работе участвуют три уровня; приложение, операционная система и физическое устройство. И хотя такие уровни существуют (не обязательно с такими названиями), их можно разделить еще на несколько уровней.
Прежде чем я объясню, что это за уровни и что они делают, я хочу обратить ваше внимание на то, что понятие, о котором я собираюсь вам поведать отнюдь не абстрактное. На самом деле, если вы откроете страницу свойств подключения по локальной сети, как показано на рисунке A, вы увидите, что сетевое подключение состоит из нескольких различных компонентов, таких как клиент сети, драйвер сетевого адаптера и протокол. Каждый из этих компонентов соответствует одному или более отдельным уровням.
Рисунок A: Окно свойств подключения по локальной сети дает представление о том, как различные уровни сети применяются в Windows
Сетевая модель, которую использует Windows и большинство других сетевых операционных систем, называется модель OSI (взаимодействие открытых систем — Open System Interconnection Basic Reference). Модель OSI состоит из семи различных уровней. Каждый уровень модели построен так, что он может выполнять определенные задачи и способствовать взаимодействию между уровнем, расположенным над и под ним. Вы можете посмотреть, что собой представляет модель OSI на рисунке B.
Рисунок B: Модель OSI
Верхний уровень модели OSI – это прикладной уровень. Первое, что вам нужно понять относительно прикладного уровня, это то, что он не относится к приложениям, которые пользователь запускает на своей машине. Вместо этого, он обеспечивает инфраструктуру, поверх которой запускается собственно приложение.
Чтобы понять, что делает прикладной уровень, представьте на мгновение, что пользователь хочет использовать Internet Explorer, чтобы открыть сеанс FTP и передать файл. В этом конкретном случае прикладной уровень определит протокол передачи файла. Протокол не напрямую доступен конечному пользователю. Пользователю нужно использовать приложение, специально созданное для взаимодействия с протоколом передачи файлов. В данном случае Internet Explorer как раз и будет тем приложением.
Уровень представления выполняет довольно сложные задачи, но все, что он делает, можно обозначить одним предложением. Уровень представления собирает данные, предоставленные прикладным уровнем, и преобразует их в стандартный формат, понятный другим уровням. Таким же образом уровень представления преобразует входящие данные, полученные с уровня сеанса, в формат, понятный прикладному уровню. Причина, по которой этот уровень необходим, кроется в том, что разные приложения управляют данными по-разному. Для того чтобы связи сети функционировали корректно, данные нужно структурировать стандартным способом.
Как только данные были преобразованы в нужный формат, хост отправителя должен создать сеанс с хостом получателя. Именно здесь в игру вступает уровень сеанса. Он отвечает за создание, обслуживание и последующее отключение сеанса с удаленным хостом.
В этом уровне интересен тот факт, что он более тесно связан с прикладным уровнем, чем с физическим уровнем. Зачастую подключение к удаленному сетевому сеансу воспринимается как функция физического устройства, но на самом деле сеансы, как правило, создаются между приложениями. Если пользователь запустил несколько приложений, некоторые из этих приложений могут создавать сеансы подключения к удаленным ресурсам в любое время.
Транспортный уровень отвечает за обеспечение контроля потока. Как вы, несомненно, знаете, ОС Windows позволяет пользователям запускать несколько приложений одновременно. Поэтому существует вероятность того, что нескольким приложениям и самой операционной системе может потребоваться связь по сети одновременно. Транспортный уровень собирает данные со всех приложений и интегрирует их в единый поток. Этот уровень также отвечает за отслеживание ошибок и восстановление данных в случае необходимости. По сути, транспортный уровень следит за тем, что данные были переданы с хоста отправителя на хост получателя без потерь.
Сетевой уровень отвечает за определение того, как данные достигнут точки назначения. Этот уровень управляет такими задачами, как адресация, маршрутизация и логический протокол. Поскольку эта серия статей предназначена для начинающих, я не хочу использовать техническую терминологию, но скажу, что сетевой уровень создает логические цепи, известные как виртуальные каналы, между хостом получателя и отправителя. Этот канал обеспечивает отдельные пакеты путями достижения пункта назначения. Сетевой уровень отвечает за обработку собственных ошибок, а также за упорядочивание пакетов и контроль перегрузки.
Упорядочивание пактов необходимо, так как каждый протокол ограничивает максимальный размер пакета. Объем данных, необходимых для передачи, обычно превышает максимально допустимый размер пакета. Поэтому данные фрагментируются в несколько пакетов. Когда это происходит, сетевой уровень назначает каждому пакету порядковый номер.
Когда данные принимаются удаленным хостом, сетевой уровень устройства просматривает порядковые номера входящих пакетов и использует их для сборки данных, а также для определения факта потери пакетов.
Если вы не улавливаете суть этой концепции, тогда представьте, что вам нужно отправить большой документ друзьям по обычной почте, но у вас нет конверта подходящих размеров. Вы можете разложить документ по несколько страниц в конверты маленьких размеров, а затем промаркировать каждый конверт, чтобы ваши друзья смогли понять, в какой последовательности идут страницы в этих конвертах. Именно такую процедуру проделывает сетевой уровень.
Канальный уровень можно разделить еще на два уровня; Media Access Control (MAC – уровень управления доступом к среде передачи данных) уровень и Logical Link Control (LLC – подуровень управления логической связью) уровень. MAC уровень создает идентификацию компьютера в сети, используя его MAC адрес. MAC адрес – это адрес, назначенный сетевому адаптеру на аппаратном уровне. Этот адрес используется при отправке и получении пакетов. LLC уровень контролирует цикловую синхронизацию и обеспечивает определенную степень проверки наличия ошибок.
Физический уровень модели OSI относится к спецификации оборудования. Физический уровень определяет такие характеристики, как тайминг и вольтаж. Физический уровень определяет спецификацию оборудования, используемую сетевыми адаптерами и кабелями (если соединение не беспроводное). Если говорить проще, физический уровень определяет, что значит передавать и получать данные.
Итак, мы обсудили OSI модель касаемо приложения, которому нужно передать данные по сети. Модель OSI также используется, когда машина получает данные. Когда данные принимаются, они проходят через физический уровень. Остальные уровни работают для удаления инкапсуляции, чтобы преобразовать данные в тот формат, который прикладной уровень сможет использовать.
В этой статье я объяснил, как Windows использует модель OSI для применения в сети. Важно понять, что модель OSI – это всего лишь руководство того, как сети нужно использовать. В действительности, наборы протоколов иногда сочетают несколько уровней в один компонент. Я покажу, как наборы протоколов используются в этой модели в следующей части этой серии статей.
www.windowsnetworking.com