Собственно, как и обещал, начинаю серию статей о подсистеме NDIS и о том, что с ней связано.
Я решила связать это с процессом собственного обучения на первой работе.
Если цикл не получается, значит, меня нагрузили по уши, или я вообще бросила.
Введение
Для чего вообще нужен этот NDIS? Зачем это придумали, если все так хорошо? NDIS — это одна из подсистем ядра Windows, которая напрямую связана со спектром от драйверов сетевых карт до интерфейсов для протоколов сетевого уровня.
NDIS состоит из так называемого стека драйверов (хотя, как по мне, это не стек, а очередь), но для общего понимания лучше представить его так:
Введение" alt="НДИС.
Введение">
Хорошо, но мне этого недостаточно!
Если копнуть глубже, то NDIS состоит из обязательной части — самого себя (файла NDIS.SYS), и теоретически неограниченного количества пользовательских драйверов, которые этот самый NDIS.SYS обертывает. В этом случае драйвер должен выполнить некоторые действия, чтобы подсистема NDIS вообще посчитала его локальным и смогла интегрировать в свой «стек», которым является очередь.
Минимальные условия:
- Водитель должен зарегистрироваться.
Это означает, что драйвер при загрузке сообщает ядру, что он на самом деле и какого типа;
- Драйвер должен предоставлять минимальный набор функций интерфейса, которые он предоставляет NDIS. Собственно, за эти функции NDIS и будет отвечать именно этот драйвер;
- Также драйвер должен в зависимости от своего типа реализовать функции самоконтроля, которые также применяются во время выполнения.
Отличие от предыдущего пункта в том, что эти функции уникальны для каждого типа драйверов.
- Драйверы минипорта;
- Драйверы протоколов;
- Водители среднего уровня;
- Драйверы-фильтры.
Во времена XP разработчики часто использовали промежуточные драйвера (потому что не было фильтров), начиная с Windows Vista лучше использовать фильтры, потому что они проще по конструкции и выполняют основную функцию (а для нас почти во всех случаях это модификация трафика) работают на ура.
Итак, как мы помним, «сверху» NDIS у нас располагаются протоколы (IP, IPX, ARP, RARP и т. д.), а снизу — сетевые карты.
В этот период мы проведем магические заклинания над трафиком.
Давайте разберемся, чем именно отличаются драйверы фильтров и промежуточные драйверы.
Таким образом, когда трафик попадает в сеть, то есть от протокола к сетевой карте, он проходит через специальную очередь драйверов, созданную NDIS. В самую середину этой очереди (честно говоря, я не знаю, как найти середину, если в очереди 3 драйвера, но с MSDN не поспоришь) NDIS размещает промежуточные драйверы.
Эти драйверы располагаются в очереди с использованием неизвестного алгоритма, но NDIS гарантирует, что трафик проходит через каждый драйвер в «стеке».
Промежуточный драйвер - это загвоздка, "сверху", т.е.
для драйверов над ним он выглядит как минипорт (хотя настоящие минипорты еще далеко внизу), а "снизу" он выглядит как протокол (протоколы находятся далеко вверху).
).
Что.
Промежуточный драйвер прозрачен и часто используется не для фильтрации или модификации трафика, а для «трансляции» трафика одного протокола на несколько минипортов (они же интерфейсы сетевых карт).
Ну или, наоборот: отправка трафика сетевой карты по нескольким протоколам.
Ок, это понятно, теперь о драйверах фильтров.
Драйвер фильтра — это драйвер, который также находится на пути трафика от сетевой карты к протоколам, но конкретное расположение в очереди определяется настройками, о них позже.
Теперь познакомимся с тем, что драйверы фильтров бывают двух типов (не путайте тип, задающий расположение драйвера, и основной тип):
- Драйвер-монитор не меняет трафик, но может его «украсть»;
- Драйвер-модификатор, полный контроль над трафиком, менять, удалять, добавлять свой - да что угодно.
Те.
если вы написали функции отслеживания, то вы увидите трафик.
Однако в некоторых случаях драйвер модификатора потребует перезагрузки.
Если перезагрузки нет, то мониторить трафик получится, а вот, например, сбрасывать пакеты - нет. Функциональная особенность.
Теперь посмотрим на место драйверов фильтров в очереди.
Положение в очереди определяется целью водителя.
Назначение драйвера (типичное назначение, т. е.
для чего используется драйвер) задается во время установки в его .
INF-файле.
Полный список встреч я вам не дам, но дам приблизительную картину.
Допустим, драйвер предназначен для сжатия трафика, для этого в .
INF-файле укажем «сжатие», также есть назначение «шифрование», или «Пользовательское».
Вы можете просмотреть весь список.
Еще скажу, что кастомные — это самые нижние драйверы, а, например, планировщик — «верхние».
Пожалуй на сегодня хватит, подробнее читайте здесь:
Введение"> msdn.microsoft.com/en-us/library/ff557563
(v=VS.85).
aspx В следующий раз мы поговорим о минимальной реализации драйвера фильтра.
Теги: #NDIS #драйвер фильтра #промежуточный драйвер #Разработка Windows
-
Волшебный Гель
19 Dec, 24 -
Непроходимые Дебри Бизнеса, Часть 1
19 Dec, 24 -
Размышления Об Идеальном Случае
19 Dec, 24 -
Документация По Jquery Ui На Русском Языке
19 Dec, 24 -
Github Снова Заблокирован
19 Dec, 24