WinPcap程式設計1——簡介
什麼是WinPcap
WinPcap是一個基于Win32平台的,用于捕獲網絡資料包并進行分析的開源庫.
大多數網絡應用程式通過被廣泛使用的作業系統元件來通路網絡,比如sockets。 這是一種簡單的實作方式,因為作業系統已經妥善處理了底層具體實作細節(比如協定處理,封裝資料包等等),并且提供了一個與讀寫檔案類似的,令人熟悉的接口。
然而,有些時候,這種“簡單的方式”并不能滿足任務的需求,因為有些應用程式需要直接通路網絡中的資料包。也就是說,那些應用程式需要通路原始資料包,即沒有被作業系統利用網絡協定處理過的資料包。
WinPcap産生的目的,就是為Win32應用程式提供這種通路方式; WinPcap提供了以下功能
- 捕獲原始資料包,無論它是發往某台機器的,還是在其他裝置(共享媒介)上進行交換的
- 在資料包發送給某應用程式前,根據使用者指定的規則過濾資料包
- 将原始資料包通過網絡發送出去
- 收集并統計網絡流量資訊
以上這些功能需要借助安裝在Win32核心中的網絡裝置驅動程式才能實作,再加上幾個動态連結庫DLL。
所有這些功能都能通過一個強大的程式設計接口來表現出來,易于開發,并能在不同的作業系統上使用。這本手冊的主要目标是在一些程式範例的幫助下,叙述這些程式設計接口的使用。
什麼程式在使用WinPcap
WinPcap可以被用來制作網絡分析、監控工具。一些基于WinPcap的典型應用有:
- 網絡與協定分析器 (network and protocol analyzers)
- 網絡螢幕 (network monitors)
- 網絡流量記錄器 (traffic loggers)
- 網絡流量發生器 (traffic generators)
- 使用者級網橋及路由 (user-level bridges and routers)
- 網絡入侵檢測系統 (network intrusion detection systems (NIDS))
- 網絡掃描器 (network scanners)
- 安全工具 (security tools)
什麼是WinPcap做不到的
WinPcap能獨立地通過主機協定發送和接受資料,如同TCP-IP。這就意味着WinPcap不能阻止、過濾或操縱同一機器上的其他應用程式的通訊:它僅僅能簡單地"監視"在網絡上傳輸的資料包。是以,它不能提供類似網絡流量控制、服務品質排程和個人防火牆之類的支援。