Трассировка сети в Windows 7: архитектура
На рисунке ниже показана базовая архитектура трассировки сети в Windows 7.
Трассировка сети использует платформу трассировки событий Windows (ETW), доступную в Windows. Сетевые компоненты (такие как Winsock, TCP/IP, NDIS, сбор пакетов и т. д.) регистрируются как поставщики трассировки трассировки etW и выдают события, связанные с сетевой активностью. Любое регистрируемое существенное действие может быть событием, зарегистрированным в трассировки событий Windows. Трассировку для этих сетевых компонентов и записей пакетов можно включить с помощью контекста трассировки netsh , который выступает в качестве контроллера трассировки Windows.
Созданные трассировки собираются в файле журнала трассировки событий (ETL). Затем эти ETL-файлы можно проанализировать с помощью ряда средств, таких как Сетевой монитор версии 3.2 и более поздних версий, Просмотр событий, преобразование трассировки netsh или Tracerpt.exe.
Каждое событие трассировки событий Windows имеет общий заголовок, в котором etw хранит такие сведения, как свойства события, метки времени и идентификатор действия. (Дополнительные сведения об идентификаторах действий см. в статье Написание связанных событий в комплексном сценарии. Идентификатор действия используется для корреляции событий. В пользовательском режиме идентификаторы действий хранятся в потоках, и все события, зарегистрированные в одном потоке, будут автоматически помечены одним и тем же идентификатором действия. В режиме ядра идентификатор действия должен быть явно передан при регистрации события. По умолчанию ETL-файлы коррелируются с событиями группирования по определенным идентификаторам действий.
Дополнительные сведения о событиях Windows и трассировки событий Windows см. в разделе События Windows.
Компоненты трассировки сети windows
Трассировка сети использует etW в качестве основного механизма трассировки для предоставления сведений о том, что делают сетевые подсистемы. В трассировке событий Windows существует четыре компонента main: сеансы трассировки событий, поставщики событий, контроллеры событий и потребители событий.
Буферизация и ведение журнала выполняются в сеансах трассировки событий, которые принимают события от поставщиков и создают файлы трассировки.
Поставщик событий — это логическая сущность, которая записывает события в сеансы ETW. Поставщиком событий может быть приложение в пользовательском режиме, управляемое приложение, драйвер или любая другая программная сущность. Поставщики событий регистрируются в трассировке событий Windows и записывают события из различных точек кода, вызывая API ведения журнала ETW. Из-за растущей инструментирования событий во многих компонентах операционной системы даже простое приложение или сценарий в Windows будет содержать несколько компонентов, которые являются поставщиками событий.
Контроллер событий запускает и останавливает сеансы трассировки событий, а также включает поставщиков. Если поставщик событий динамически включается приложением контроллера событий, поставщик отправляет события в определенный сеанс трассировки событий, назначенный контроллером событий. Каждое событие, отправляемое поставщиком событий в сеанс трассировки событий, состоит из фиксированного заголовка, который включает метаданные события и любые дополнительные пользовательские данные, зарегистрированные поставщиком.
Потребитель событий — это приложение, которое считывает файлы журналов или прослушивает сеанс трассировки событий в режиме реального времени и обрабатывает их. Одним из примеров потребителя событий является Microsoft Network Monitor 3.2, который включает возможность чтения и отображения файлов журналов, созданных при трассировке сети в Windows 7.
События доставляются потребителям событий в хронологическом порядке, и существуют различные приложения-получатели событий, которые отображают события в определенных форматах. Когда событие регистрируется в сеансе, трассировка событий Windows добавляет в заголовок события дополнительные сведения, включая метку времени, идентификатор процесса и потока, номер процессора и данные об использовании ЦП потока ведения журнала. Затем эти данные передаются потребителям событий вместе с любыми пользовательскими данными, включенными поставщиком.
Поставщики, использующие новые API ведения журнала событий , должны предоставить XML-файл, называемый манифестом события. Этот файл содержит метаданные для определения всех пользовательских данных и сведений о макете для событий, написанных поставщиком. Затем приложение-получатель общего назначения использует API вспомогательной службы данных трассировки (TDH) для получения метаданных события, декодирования событий и их отображения.
При трассировке сети в Windows 7 на стороне контроллера или потребителя событий реализована сквозная поддержка трассировки на основе сценариев, интегрированная с общими возможностями диагностики и поддержки Windows. Сценарий определяет коллекцию поставщиков событий, участвующих в сценарии. Сторона контроллера или потребителя событий определяет сценарии (контексты), в которых можно использовать трассировку, включая соответствующих поставщиков для заданных сценариев в сетевых компонентах. На стороне поставщика событий включены стандартизированные события трассировки сети из различных компонентов сетевого стека, которые можно сопоставить с помощью идентификаторов действий трассировки событий Windows. Поставщики используют общую сетевую схему, которая стандартизирует использование концепций трассировки событий Windows, таких как ключевые слова, уровни, задачи и коды операций. Схема также определяет события, которые являются общими для многих сетевых компонентов, таких как события ошибок, события удаления пакетов, события схемы и события перехода состояния.