文/王一軍
本軟件具有對IP數據包的監控分析的基本功能,主要采用嗅探器的基本原理抓取網絡有效信息,通過微軟的系統網絡編程,從中過濾抓取有用的數據,從而完成對IP數據包的監控,并以此保證程序的安全性得到保障。
常見的捕包方式有三種,分別為NDIS,WinPcaP,Raw Socket三種技術。本軟件要完成對IP數據包的監控技術,大致需要五個步驟才能完成。首先是成功捕獲IP數據包,然后分析捕獲的IP數據包,一般是根據用戶提供的條件對IP數據包篩選從而確認數據包狀態,分類匯總流量,然后保存下來。
因特網是由無數的局域網連接形成的?;ヂ摼W的內部網絡的連接方式是什么?它是基于拓撲結構來完成基礎網絡的架構?;A架構規定一段信息的傳輸都是從一點到另外一點的模式,這里有客戶端和服務器端的區分,服務器端卻是基于它的特性分布在局域網當中。但互聯網上的主機通常是在局域網中,局域網通常都會連接到外網,局域網是一種廣播網絡,在服務器端放上信息,像網站源碼,應用程序之類都可發布到IIS服務器上,任何一個客戶端都可以在互聯網上通過IP地址或者具體域名來進行訪問。如果以太網中計算機的網卡接受模式設置為混合模式,則網卡將捕獲所有數據包并向上傳遞數據包。通過這種方式,可以竊聽和攔截以太網內傳輸的信息,軟件就是基于此原理來完成對數據的監聽。
根據監聽的原理,本監控軟件主要完成了監聽局域網內數據包、對數據包進行拆分并且以不同方式顯示,對攔截的數據包的端口、協議類型以及P地址進行過濾。為了實現這些功能,將其分為四個部分:數據包截獲、分組分割、分組過濾和分組顯示。
該軟件能夠對局域網中的一切計算機信息和共享文件完成掃描,這其中又分為高速掃描模式和完全掃描模式。掃描后可獲得計算機名稱、IP地址、MAC地址、共享資源等信息。
Ping是網絡中非常有用的TCP/IP工具,能夠經過Ping查看連通性問題。這個問題卻是可以由于許多因素引發的,例如系統配置出錯、網絡協議故障,當然還可能是電腦或者服務器故障。
路由跟蹤可用于確定IP數據包的最終目標的路徑。tracert命令使用IP生存期(TTL)字段和ICMP錯誤消息來確定網絡上從一個主機到另一個主機的路由,通過向目標發送不同IP生存時間(TTL)值的“Internet控制消息協議(ICMP)”回應數據包,Tracert診斷程序確定到目標所采取的路由。在轉發數據包之前,對于路徑也會有一定的規定,要求路徑上的每個路由器的數據包里的TTL屬性最少要往下減1。數據包的TTL屬性的波動幅度可能會不斷減少,當其變為0時,路由器會發送超時的信息到客戶端,當數據包的TTL為1時,軟件會發送相應的響應包,數據包發送一次,TTL值就會增加1,目標會隨著數據包的發送進行響應,路由就會得到確認,或者是TTL增加到最大值,此時路由也會確定。路由確定時,路由器會發送相應的超時消息來進行提醒。有些路由器丟棄TTL過期的數據包而不提出任何疑問,這在本程序中卻是看不到的。
NDIS的主要目的就是為NIC制定出標準的API接口。MAC設備驅動封裝了所有的NIC硬件實現這一點,以便能夠經過公共編程接口訪問應用同一媒體的任意NIC。NDIS同時也提供一個函數庫(又時也稱作wrapper),這個庫中的函數可以被MAC驅動調用,它還能由高級協議(如TCP/IP)驅動程序來進行調用。同時,這些包裝器函數減少了驅動程序對工作臺的依賴。早期版本的NDIS是由微軟和3COM開發的。在Windows9x和Windows NT中,WFW(用于工作組的Windows)使用的當前NDIS版本由Microsoft開發。
Winpcap是windows平臺下一個免費的公共的網絡訪問系統,通過Winpcap技術可以完成對數據包的抓取和發送等操作??捎猛ㄟ^對Winpcap的int pcap_f indalldevs_exAPI的調用來獲得所有本地的網絡接口,然后通過pcap_t* pcap_open對指定的網絡設備進行抓包/發包,通過int pcap_next_ex()和int pcap_sendpacket()實現具體的抓包和發包操作。
要使用原始套接字,必須經過創建原始套接字、設置套接字選項(ioctlsocket函數)和創建并填充相應協議頭這三個步驟。
分析IP數據包格式、TCP、UDP等數據格式,如源IP地址和目標IP地址可以通過IP分組獲取,IP數據包信息包標識可以計數IP數據包流量。而端口信息可從TCP,UDP獲得。
IP數據包主要由版本,頭長,服務類型,包裹總長,重組標識,標志,段偏移量,生存時間,協議代碼,頭校驗和32位源碼地址已經32位目的地址組成。
網絡數據抓包,有必要監控軟件和服務器之間的網絡節點,監控任何一個網絡節點(網卡),獲取通過網卡的所有數據,并根據網絡協議解析數據。這就是數據包捕獲的基本原理。
本文主要是基于局域網的功能的基礎上來對IP數據包進行監控的技術軟件進行了可行性分析,主要對IP數據包的抓取和發送的原理進行分析,對數據監聽,Ping程序的使用以及路由追蹤技術的分析,基于這些基本技術之上也就完成了一個IP數據包監控軟件的一個組成和架構。