Архитектура PCAP

Заметим, что не все версии UNIX имеют в своем составе BPF (т.е. возможности фильтрации и буферизации в ядре операционной системы), однако архитектура PCAP (Packet Capture – захват пакетов) может компенсировать этот недостаток. Данная архитектура полностью совместима с архитектурой BPF и позволяет фильтровать пакеты аналогично BPF, но на уровне пользователя.

Программная реализация архитектуры PCAP была выполнена в виде NDIS-драйвера. NDIS (Network Driver Interface Specification – спецификация интерфейса сетевого драйвера) – это набор спецификаций, описывающих организацию обмена данными сетевым адаптером (точнее, драйвером, управляющим им) и драйверами протоколов (IP, IPX и т.д.). Основное назначение NDIS состоит в том, чтобы предоставить возможность драйверу протоколов принимать и передавать пакеты по сети (локальной или глобальной) не зависимо от того, какая версия ОС используется.

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

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

Существование этих недостатков привело к тому, что фильтрацию и буферизацию задает и выполняет драйвер захвата пакетов (packet capture driver), а не приложение. Заметим, что управление драйвером осуществляется при помощи все той же библиотеки libpcap, а это обеспечивает программную совместимость двух архитектур.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: