一種即時通信監控系統的設計與實現
2、數據采集及存儲
系統采用基于網絡嗅探技術的數據采集方法,以WinPcap 4.0.1作為開發工具,Windows平臺下使用WinPcap從網絡適配器嗅探數據十分方便,圖3是使用WinPeap捕獲網絡數據包的基本流程。
使用WinPcap開發應用程序除可以捕獲數據包外,最大的優點在于WinPcap可以對數據包進行過濾。WinPeap從網絡適配器上嗅探到 的是最原始的數據幀,這包括了所有流經的數據。如果不對數據包進行相應的過濾,將會捕獲到許多無關的數據,這會增加系統的負擔,使系統工作效率降低。
圖3 WinPcap數據采集流程
在數據采集之后,采用什么樣的存儲策略來存儲數據,以最大限度地保證采集到的網絡數據包(Pack.et)不丟失,是系統設計中必須面對的一個 重要問題。網絡丟包的原因可能有很多,包括內存緩沖技術、磁盤I/O能力、包過濾及處理技術、數據流量大小、網絡接口性能、CPU處理能力等諸多方面。
網絡丟包的指標一般采用丟包率(Rate of PacketLoss,RPL)。計算公式為:L=((發送的數據包數一接收到的數據包數)/發送的數據包數)×100%。
眾所周知。頻繁的磁盤I/O顯然會影響到系統的性能和效率,這在大的數據流量下尤為明顯。為了避免頻繁的磁盤I/O,需要在數據存儲時引入內存 緩沖處理技術。在基于WinPcap的網絡數據采集中,系統使用了多級內存緩沖,內核緩沖器和用戶緩沖器的大小分別設置為6MB和1MB,并設置內核緩沖 器和用戶緩沖器之間一次傳送的最小數據塊的大小為512kB。
3、數據分析與處理
數據分析與處理分為四部分。首先是Ethernet數據幀處理,主要完成鏈路層數據驗證、拆包,并將數據提交給IP層進行處理。IP數據報的處 理主要完成IP層數據驗證、拆包,并將數據提交給傳輸層進行處理。TCP分組的處理主要完成TCP層數據的驗證、拆分及TCP重復和無序分組的處理,完成 TCP會話重建,并將重組后的應用層數據提交至協議分析層處理。協議分析主要完成應用層數據和最終用戶數據的處理。對應用層數據主要進行命令解析和協議數 據重組,對最終用戶數據的處理包括聊天信息的提取、顯示圖片和自定義表情的提取、文件傳輸的提取等。MSNP協議分析模型如圖4所示。
3.1、命令解析
命令解析的本質就是分析字符串的含義,它類似計算機高級語言編譯器中詞法分析的功能。MSNP協議涉及多達幾十個命令,服務器和客戶端使用的命 令也不相同。系統對涉及信息傳輸的命令進行了重點解析,主要包括握手命令和數據傳輸命令。對于客戶端命令。主要解析“ANS”和“MSG”。服務器端主要 解析“IRO”、“USR”、“JOI”和“MSG”。
圖4 MSNP協議分析模型
3.2、協議數據重組
協議數據重組主要針對P2P消息,當二進制頭和二進制尾之間的消息內容大小超過1202字節時。消息會被分片傳輸。通常被拆分的P2P消息包括 MSNSLP消息和實際傳輸的各種數據(如文件、表情)。二進制頭中共有9個字段,其中“Data Offset”、“Total Data Size”和“Message Length”3個字段和消息分片密切相關。這3個字段分別表示“總數據大小”、“數據偏移量”和“本條消息長度”。由于TCP處理模塊已對重復和無序的 數據流進行了處理,協議分析模塊的輸入是順序的數據流。按順序將數據取出即可。如圖5所示。
評論