Winsock 追蹤的控制
Winsock 追蹤可以透過以下任一方法來控制:
命令行工具
Windows Vista 和 Windows Server 2008 隨附兩個命令行工具,可用來控制追蹤,並將二進位追蹤記錄檔轉換成可讀取的文字。
logman.exe 工具可用來啟動或停止 Winsock 追蹤。
tracerpt.exe 工具可用來將二進位追蹤記錄檔轉換成可讀取的文字檔。
事件查看器
Windows Vista 和更新版本上的事件查看器也可用來啟用 Winsock 追蹤。 [開始] 選單的 [系統管理工具] 下可存取 [事件查看器]。
使用 logman 和 tracerpt
Windows Vista 和更新版本預設會停用 Winsock 網路事件追蹤。
下列命令會在計算機上啟動 Winsock 網路事件追蹤、將事件追蹤會話的名稱設定為 mywinsocksession,並將輸出傳送至名為 winsocklogfile.etl 的二進位記錄檔:
logman start -ets mywinsocksession -o winsocklogfile.etl -p Microsoft-Windows-Winsock-AFD
記錄檔會建立在目前目錄中,格式為 winsocklogfile_000001.etl
下列命令會停止計算機上名為 mywinsocksession 之會話的上述 Winsock 追蹤:
logman 停止 -ets mywinsocksession
二進位記錄檔會寫入 –o 參數所指定的位置。 若要將二進位文件轉譯成可讀取的文字檔,請使用 tracerpt.exe:
tracerpt.exe <.etl 檔案的名稱> –o winsocktracelog.txt
如果慣用包含 xml 而非純文字的輸出檔案,則會使用下列命令:
tracerpt.exe <.etl 檔案的名稱> –o winsocktracelog.xml –of xml
Windows Vista 和更新版本預設會啟用 Winsock 目錄變更追蹤。
注意
分層服務提供者已被取代。 從 Windows 8 和 Windows Server 2012 開始,請使用 Windows 篩選平臺。
下列命令會在計算機上啟動分層服務提供者的 Winsock 目錄變更追蹤追蹤、將事件追蹤會話的名稱設定為 mywinsockcatalogsession,並將輸出傳送至名為 winsockcataloglogfile.etl 的二進位記錄檔:
logman start -ets mywinsockcatalogsession -o winsockcataloglogfile.etl -p Microsoft-Windows-Winsock-WS2HELP
記錄檔會建立在目前目錄中,格式為 winsockcataloglogfile_000001.etl 的檔名
下列命令會在一台電腦上停止名為 mysession 的會話中的上述 Winsock 追蹤:
logman 停止 -ets mywinsockcatalogsession
二進位記錄檔會寫入 –o 參數所指定的位置。 若要將二進位文件轉譯成可讀取的文字檔,請使用 tracerpt.exe:
tracerpt.exe <.etl 檔案的名稱> –o winsockcatalogtracelog.txt
如果慣用包含 xml 而非純文字的輸出檔案,則會使用下列命令:
tracerpt.exe <.etl 檔案的名稱> –o winsockcatalogtracelog.xml –of xml
使用事件查看器啟動 Winsock 網路事件追蹤
當您開啟 [事件查看器] 時,左窗格會包含事件清單。 開啟 應用程式和服務記錄,並流覽至 [Microsoft\Windows\Winsock 網络事件] 作為來源,然後選取 [Operational]。
在 [動作] 窗格中,選取 [記錄屬性],然後勾選 [啟用記錄] 複選框。 啟用記錄之後,您也可以視需要變更記錄檔的大小。
Winsock 網路事件追蹤現已啟用,而您只需要按 [重新整理] 動作來更新已記錄的事件清單。 若要停止記錄,只要取消核取相同的單選按鈕即可。
視您想要查看的事件數而定,您可能需要增加記錄大小。 使用事件查看器進行 Winsock 追蹤的其中一個缺點是,它不會載入所有字串資源,因此在 [描述] 字段中顯示的訊息有時很難讀取(例如,應格式化為十六進位的自變數將會以十進位顯示)。 不過,您可以在事件描述中選取 [詳細數據] 索引標籤,該索引標籤顯示原始 XML 日誌條目,通常其參數更易於理解。
使用事件查看器啟動 Winsock 目錄變更追蹤
當您開啟 [事件查看器] 時,左窗格會包含事件清單。 開啟 應用程式和服務記錄,並流覽至 [Microsoft\Windows\Winsock 目錄變更] 作為來源,然後選取 [Operational]。
在 [動作] 窗格中,選取 [記錄屬性],然後核取 [啟用記錄] 複選框。 啟用記錄之後,您也可以視需要變更記錄檔的大小。
Winsock 目錄變更追蹤現在已啟用,而您只需要按 [重新整理] 動作來更新已記錄的事件清單。 若要停止記錄,只要取消核取相同的單選按鈕即可。
視您想要查看的事件數而定,您可能需要增加記錄大小。 使用事件查看器進行 Winsock 追蹤的其中一個缺點是,它不會載入所有字串資源,因此在 [描述] 字段中顯示的訊息有時很難讀取(例如,應格式化為十六進位的自變數將會以十進位顯示)。 不過,您可以在事件描述中選取 [詳細資料] 索引標籤,其中顯示原始的 XML 日誌條目,這通常包含比較容易理解的參數。
解析 Winsock 追蹤記錄
記錄中的所有 Winsock 追蹤事件都包含兩種類型的資訊:
- 系統
- 事件資料
系統資訊包含記錄層級、記錄專案建立時間、代表事件類型的事件標識碼、執行進程標識碼、執行線程標識碼和其他系統資訊。 Winsock 追蹤中的記錄層級為 4,代表資訊事件記錄。 Winsock 追蹤的記錄層級 5 表示詳細的事件記錄。
系統資訊中的執行進程標識碼和線程標識元表示事件發生時正在執行的進程和線程。 在許多情況下,這代表核心或背景工作線程和進程,而不是使用者模式線程和或應用程式的進程。 因此,此欄位通常並不十分有用。
每個 Winsock 追蹤事件類型在記錄數據的系統區段中都有唯一的事件識別碼。 這些事件標識碼可以輕鬆地用來篩選特定 Winsock 追蹤事件的記錄檔。
eventdata 包含事件類型特有的資訊。
eventdata 資訊中的 Process 參數是進程的核心 EPROCESS 結構位址,而不是實際的 PID。 若要比對事件與使用者模式 PID,請從任何記錄項目中提取 eventdata 資訊中的 Process 值,並在較早的記錄中查找具有相同 Process 值的套接字創建事件。 找到相符項目之後,套接字建立事件數據中的最後一個參數是建立套接字的使用者模式進程標識符。
某些 Winsock 追蹤事件中會傳回 eventdata 資訊中的 Address 參數。 Address 參數代表 IP 位址,但它會顯示在 tracerpt.exe 工具所建立的文本檔中,或是以原始位元組或數位的形式顯示在事件查看器中。 IPv6 位址會以十六進位顯示,因此更容易了解它們。 IPv4 位址會顯示為大十進位數。 開發人員必須手動將 IPv4 位址的原始位元組轉換成更熟悉的 IPv4 點十進位位址表示法,才能更好地解譯值。
某些 Winsock 追蹤事件中會傳回 eventdata 中的 Error 參數。 Error 參數的格式為NTSTATUS或HRESULT錯誤碼。 這個錯誤參數會顯示在 tracerpt.exe 工具或事件查看器中建立的文字檔中,以十進位數表示。 開發人員需要手動將十進位數轉換成十六進位數位,才能在某些情況下更妥善地解譯錯誤碼。