Windows 7 中的網路追蹤:架構

下圖顯示 Windows 7 中的基本網路追蹤架構。

網路追蹤架構圖表

網路追蹤會利用 Windows 中提供的 Windows 事件追蹤 (ETW) 架構。 網路元件 (,例如 Winsock、TCP/IP、NDIS、封包擷取等等,) 註冊為 ETW 追蹤提供者,併發出與網路活動相關的事件。 任何可記錄的重要性活動都可以記錄到 ETW 的事件。 您可以使用作為 ETW 控制器的 netsh 追蹤 內容來啟用這些網路元件和封包擷取的追蹤。

產生的追蹤會收集在事件追蹤記錄檔 (ETL) 檔案中。 然後,您可以使用許多工具分析這些 ETL 檔案,例如網路監視器 3.2 和更新版本、事件檢視器、netsh 追蹤轉換或Tracerpt.exe。

每個 ETW 事件都有通用標頭,其中 ETW 會儲存事件屬性、時間戳記和活動識別碼等資訊。 (如需活動識別碼的詳細資訊,請參閱 在端對端案例中撰寫相關事件) 。 活動識別碼是用來將事件相互關聯。 在使用者模式中,活動識別碼會儲存線上程中,而且記錄在一個執行緒中的所有事件都會自動以相同的活動識別碼標記。 在核心模式中,活動識別碼必須在記錄事件時明確傳遞。 根據預設,ETL 檔案會與特定活動識別碼下的群組事件相互關聯。

如需 Windows 事件和 ETW 的詳細資訊,請參閱 Windows 事件

網路追蹤中的 ETW 元件

網路追蹤會使用 ETW 作為其主要追蹤機制,以提供網路子系統所執行之動作的相關資訊。 ETW 中有四個主要元件:事件追蹤會話、事件提供者、事件控制器和事件取用者。

緩衝處理和記錄會在 事件追蹤會話中進行,這些會話會接受來自提供者的事件並建立追蹤檔案。

事件提供者是邏輯實體,會將事件寫入 ETW 會話。 事件提供者可以是使用者模式應用程式、受控應用程式、驅動程式或任何其他軟體實體。 事件提供者會向 ETW 註冊,並藉由叫用 ETW 記錄 API,從程式碼中的各種點寫入事件。 由於許多作業系統元件中不斷成長的事件檢測,即使是 Windows 中的簡單應用程式或案例,也會包含數個屬於事件提供者的元件。

事件控制器會啟動和停止事件追蹤會話,並啟用提供者。 當事件控制站應用程式動態啟用事件提供者時,提供者會將事件傳送至事件控制器所指定的特定事件追蹤會話。 事件提供者傳送至事件追蹤會話的每個事件都包含固定標頭,其中包含事件中繼資料和提供者所記錄的任何其他自訂資料。

事件取用者是一種應用程式,可讀取記錄檔,或接聽事件追蹤會話以進行即時事件並加以處理。 事件取用者的其中一個範例是 Microsoft 網路監視器 3.2,其中包含在 Windows 7 中讀取和顯示網路追蹤所產生的記錄檔的功能。

事件會依時間順序傳遞至事件取用者,而且有各種事件取用者應用程式會以特定格式顯示事件。 當事件記錄到會話時,ETW 會將其他資訊新增至事件標頭,包括時間戳記、進程和執行緒識別碼、處理器編號,以及記錄執行緒的 CPU 使用量資料。 接著,此資料會傳遞至事件取用者,以及提供者所包含的任何自訂資料。

使用新 事件記錄 API 的提供者應該會提供稱為 事件資訊清單的 XML 檔案。 此檔案提供中繼資料,以定義提供者所寫入事件的所有自訂資料和配置資訊。 然後,一般用途取用者應用程式會使用 追蹤資料協助程式 (TDH) API 來擷取事件中繼資料、解碼事件,以及顯示它們。

在 Windows 7 中使用網路追蹤時,事件控制器/取用者端包含與整體 Windows 診斷和支援體驗整合的端對端案例型追蹤支援。 案例會定義案例中涉及的事件提供者集合。 事件控制器/取用者端會定義 (內容) 可使用追蹤的案例,包括跨網路元件指定案例的相關提供者。 事件提供者端包含來自網路堆疊中不同元件的標準化網路追蹤事件,可透過 ETW 活動識別碼相互關聯。 提供者會使用一般網路架構,將 ETW 概念的使用標準化,例如關鍵字、層級、工作和 opcode。 架構也會定義許多網路元件常見的事件,例如錯誤事件、封包捨棄事件、架構事件和狀態轉換事件。