Поделиться через


Фильтрующий слой

Уровень фильтрации — это точка в сетевом стеке TCP/IP, в которой сетевые данные передаются подсистеме фильтров для сопоставления с текущим набором фильтров. Каждый слой фильтрации в сетевом стеке определяется уникальным идентификатором слоя фильтрации.

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

Идентификаторы уровня фильтрации во время выполнения (FWPS_XXX) используются драйверами выносок режима ядра. Идентификаторы слоя фильтрации управления (FWPM_XXX) используются функциями FwpmXxx , взаимодействующими с базовой подсистемой фильтрации (BFE) из пользовательского режима или режима ядра (например, FwpmFilterAdd0).

Типы данных FWPS меньше, чем их аналоги FWPM: идентификаторы слоя фильтрации FWPM — это идентификаторы GUID (128 бит), а идентификаторы слоя фильтрации FWPS — luID (64 бита). Меньший размер для типов данных FWPS повышает производительность системы, так как сравнение целых чисел выполняется быстрее, чем сравнение GUID для трафика в режиме реального времени, а память ядра более эффективно обрабатывает типы FWPS.