隨著網路安全問題嚴峻,個人防火牆成為廣大網民核心防護工具。Windows 平台個人防火牆均基於資料封包攔截技術,實現方式分為:
本文深入探討基於 SPI 的封包過濾實現,屬 Winsock 2 新特性。
WSPStartup 提供介面,其他函數透過分派表存取 WS2_32.DLL。Ws2_32.dll 載入),不用時自動卸載。-------------------------- | Windows Socket 2 App | -------------------------- Windows Socket 2 API | WS2_32.DLL | -------------------------- Windows Socket 2 Transport SPI | Transport Provider DLL | --------------------------
WSP (Windows Socket Service Provider)、WPU (Provider Upcall)、WSC (Socket Configuration)。WSAPROTOCOL_INFOW 結構儲存所有相關資訊,應用程式透過此結構內容關聯相應 TSP。WSPSend/WSPRecv/WSPRecvFrom 等函數中攔截封包資料。| 優點 | 缺點 |
|---|---|
| 使用者層開發,無需簽名驅動,相容性好 | 效能較核心層方案略低 (用戶/核心態切換開銷) |
| 可攔截所有 Winsock 應用 (含系統服務) | LSP 鏈順序錯誤易導致網路斷裂 (知名 LSP 衝突問題) |
| 易於實現應用層邏輯 (HTTP 解析、內容過濾) | 無法攔截繞過 Winsock 的核心層流量 (如原始套接字、內核模組) |
| 調試除錯相對容易 | Windows 8+ 推薦使用 WFP (Windows Filtering Platform) 取代 LSP |
Windows Vista/Server 2008 引入 WFP (Windows Filtering Platform),提供核心層可擴展的封包過濾框架,支援 Callout 驅動註冊多層次過濾點 (ALE、Stream、Datagram 等),已成為 Windows 平台防火牆/安全產品的標準開發基礎。LSP 技術逐漸被淘汰,新專案建議直接基於 WFP 開發。
理解 SPI/LSP 機制有助於掌握早期個人防火牆 (如 Sygate、Outpost、ZoneAlarm 早期版) 的內部運作,亦為學習 WFP 奠定基礎。