Обработка данных

Классификация драйверов

Сетевые драйверы в Windows NT 4.0 имеют следующую классификацию:

· Драйверы минипорта (NIC Miniport). Они напрямую (точнее, через HAL – Hardware Abstraction Layer) взаимодействуют с сетевым адаптером на самом низком уровне, предоставляя некий абстрактный, общий для всех сетевых адаптеров, интерфейс к своему сетевому адаптеру другим драйверам и самой операционной системе. В отличие от высокоуровневых драйверов, драйверы минипорта имеют две дополнительных функции, называемые ISR (Interrupt Service Routine – обработчик прерывания) и DPC (Deferred Procedure Call – процедура отложенных вызовов). ISR является высокоприоритетной процедурой, вызываемой при получении прерывания от устройства (например, при получении очередного кадра из сети). В данной процедуре необходимо выполнить ряд самых необходимых действий, чтобы не задерживать надолго выполнение других процессов, в частности, надо запретить устройству генерировать данное прерывание. DPC имеет более низкий приоритет при планировании потоков и вызывается непосредственно после ISR, если это необходимо. В DPC обычно производится обмен данными с устройством (например, программирование контроллера DMA для переписывания вновь пришедшего кадра в оперативную память машины из буферной памяти устройства). Такой драйвер обычно входит в поставку самой сетевой карты.

· Драйверы протоколов (NDIS Protocol Drivers). Они могут вызывать NIC драйверы для отправки пакетов в сеть и получать от них извещения о приходе данных из сети. Обычно такие драйверы реализуют какой-либо сетевой протокол и предоставляют возможность вызова своих функций приложениям Win32 или драйверам (через интерфейс TDI).

· Промежуточные драйверы (NDIS Intermediate Drivers). Для драйверов протокола они предоставляют интерфейс драйвера минипорта, для драйверов минипорта – интерфейс драйвера протокола, по сути являясь некоторой прослойкой между драйверами минипорта и протоколов.

Информация, необходимая для корректного связывания (binding) сетевых драйверов, хранится в системном реестре.

 

Все сетевые драйверы Windows NT при загрузке регистрируют заранее определённый набор функций, которые являются точками входа в драйвер и будут затем при определённых условиях вызваны службой NDIS. Например, драйверы протоколов таким образом получают извещения о приходе пакетов из сети, а драйверы минипорта – о том, что пакет надо отправить в сеть. В наборе таких функций обратного вызова могут быть и некоторые специфичные функции. Например, минипорт может зарегистрировать специальную функцию, которую служба NDIS будет вызывать каждые 2 секунды с целью проверки, не «завис» ли драйвер сетевой карты. Такой обработчик, должен проверить состояние драйвера и платы, и, если он завис или обнаружена устранимая ошибка в работе платы, вернуть некоторое значение. Служба NDIS немедленно после этого вызовет функцию сброса сетевой карты, которую также должен зарегистрировать драйвер минипорта.

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

· Драйвер протокола вызывает функцию посылки кадра. Служба NDIS маршрутизирует этот вызов специальному обработчику в драйвере сетевой карты.

· Драйвер сетевой карты, запомнив место в памяти, где находится кадр, сразу же возвращает управление драйверу протокола и производит обрабтку кадра (например, переписывает его в буферную память платы и производит его посылку в сеть).

· После обработки кадра (которая может занять значительное время, в зависимости от типа сетевого интерфейса), драйвер сетевой карты вызывает специальную функцию, сигнализирующую драйверу протокола о том, что обработка кадра закончена. Драйвер протокола, получив это уведомление, может занять освободившуюся память под новый кадр.

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

Увидеть взаимосвязь сетевых компонентов в Windows NT можно нажатием правой кнопки мыши на значке «Сетевое окружение», последующим выбором в контекстном меню пункта «Свойства» и выбором закладки «Привязки». Можно заметить некоторое соответствие данной архитектуры семиуровневой сетевой модели OSI. Причем драйверы соответствуют более нижним уровням – транспортному, сетевому и канальному. Именно на этих уровнях удобнее и надежнее всего перехватывать пакеты для шифрования, сжатия, фрагментации, дефрагментации и других манипуляций с данными.

 

TCP/IP и сетевая архитектура Windows 2000

(слайд №19)

Архитектура TCP/IP в Windows 2000

Архитектура TCP/IP в операционной системе Windows 2000 обеспечивает интегрированную, не зависящую от протоколов поддержку работы с сетями: работу прикладных программ, работу с файлами, печать и другие услуги поверх любого сетевого протокола, который поддерживает Интерфейс транспортного драйвера (Transport Driver Interface, TDI). Протоколы отвечают за упаковку сетевых запросов к приложениям в соответствующие форматы и отправку этих запросов на соответствующий сетевой адаптер посредством интерфейса NDIS. NDIS позволяет использовать несколько сетевых протоколов поверх разнообразных типов сред и сетевых адаптеров.

В сочетании с транспортно-независимой архитектурой Windows 2000 протоколы TCP/IP могут предоставлять системам на базе Windows возможности работы с сетями. TCP/IР-протоколы дают компьютерам под управлением Windows 2000, Windows NT, Windows 9x и Windows for Workgroups прозрачный доступ друг к другу и позволяют связываться с другими системами, входящими в сети предприятий. В Windows NT использовались версии 3.1- 4.0 NDIS. Новая версия 5.0, которую поддерживает Windows 2000, обладает рядом преимуществ перед версиями 3.1 и 4.0.

Основные возможности NDIS 5.0:

· Поддержка данных, передаваемых вне полосы пропускания (что требуется для широковещания)

· Расширение для средств WirelessWAN

· Высокоскоростные передача и прием пакетов (что приводит к значительному повышению производительности)

· Расширение для средств высокоскоростных портов инфракрасной передачи IrDA

· Автоматическое определение среды (требуется для получения эмблемы "Разработано для Windows" в соответствии с руководством по построению аппаратных средств спецификации РС`98)

· Фильтрация пакетов (предотвращает монопольный захват процессора утилитой Сетевой монитор (Network Monitor))

· Многочисленные новые системные функции интерфейса NDIS (требуются для двоичной совместимости мини-порта Windows 95 и Windows NT)

· Управление питанием NDIS (требуется для сетевого управления питанием и включения компьютера через сеть)

· Поддержка Plug and Play

· Поддержка инструментария управления Windows (Windows Management Instrumentation, WMI), что обеспечивает создание совместимых с WBEM (Управление предприятием на основе технологии Web) средств управления аппаратурой мини-портов NDIS и связанных с ними адаптеров

· Поддержка единого формата INF для всех операционных систем Windows. Новый формат INF основан на формате INF, принятом в Windows 95.

· Распараллеленный мини-порт для поддержки улучшенной производиельности

· Механизмы разгрузки процессора для служебных процессов типа расчета контрольной суммы пакетов протоколов TCP и UDP, а также для быстрой пересылки пакетов

· Расширение для средств широковещания (необходимо для широковещательных служб в Windows)

· Поддержка механизмов установления логического соединения (требуется для сетей ATM и ADSL, а также для работы WDM-CSA (Windows Driver Model-Connection Streaming Architecture) - модели драйвера потоковой архитектуры соединения для Windows поверх всех сред с установлением логического соединения)

· Поддержка для реализации служб качества обслуживания (Quality of Service, QoS)

· Поддержка промежуточных драйверов (требуется для широковещания PC, виртуальных ЛВС, планирования пакетов дли QoS и для поддержки сетевых устройств IEEE-1394)