Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция 09.docx
Скачиваний:
9
Добавлен:
26.09.2019
Размер:
875.01 Кб
Скачать

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

Сетевые драйверы в 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. Причем драйверы соответствуют более нижним уровням – транспортному, сетевому и канальному. Именно на этих уровнях удобнее и надежнее всего перехватывать пакеты для шифрования, сжатия, фрагментации, дефрагментации и других манипуляций с данными.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]