


摘? 要:針對互聯網出口流量過高而導致網頁訪問速度緩慢的問題,設計一種網絡流量監控報警系統,采用Jpcap技術在后臺對流量數據進行捕獲,再對數據包進行分析統計,將結果存入后臺數據庫,以便系統前臺調用。在每分鐘的流量數據超過設定的閾值時,系統將彈出報警窗口,便于用戶對異常流量數據進行處理。對流量數據進行實時監控,可使網絡和業務系統能夠更好地運行。
關鍵詞:網絡流量監控;流量報警;Jpcap;數據統計;實時監控
中圖分類號:TP393;TP311? 文獻標識碼:A? 文章編號:2096-4706(2023)06-0050-04
Design of Network Traffic Monitoring and Alarm System Based on Jpcap
LI Yang
(Guizhou University of Commerce, Guiyang? 550014, China)
Abstract: In view of the problem of slow webpage access caused by high internet export traffic, a network traffic monitoring and alarm system is designed. Jpcap technology is used to capture the traffic data in the background, and then the data packets are analyzed and counted, and the results are stored in the background database for system foreground's invocation. When the traffic data per minute exceeds the set threshold, the system will pop up an alarm window to facilitate the user to process the abnormal traffic data. Real-time monitoring of traffic data can make the network and business system run better.
Keywords: network traffic monitoring; traffic alarm; Jpcap; data statistics; real-time monitoring
0? 引? 言
隨著互聯網的迅速發展,網絡給人們的生活帶來了極大便利。但用戶在訪問網頁時,時常會出現訪問速度較慢及訪問出錯的現象,這表明網絡的流量服務出現了問題。因此,對網絡流量的監控及管理顯得非常重要。網絡流量監控系統能幫助用戶查看當前網絡狀態,若查詢到異常流量時,將通知網絡管理員對異常數據進行分析,并針對性地做出處理。該系統主要通過主機網卡的流量數據進行捕獲,并將分析得出的信息存儲到數據庫中。此外,在對數據包捕獲時,無論是外部網絡訪問主機還是主機訪問外部網絡,由此產生的流量都將全部被捕獲,再根據設置的分析方法對數據包進行分類統計。實時監測數據包的同時,系統也會將數據信息進行存儲以便查詢。如發現有異常情況,將會對異常數據信息進行報警。
1? 需求分析
1.1? 系統需求分析
本系統通過主機網卡的網絡數據進行數據捕獲。系統捕獲數據后,還需進行數據分析,實現數據存儲、數據查詢以及異常數據警示功能。系統用戶包含網絡管理員和普通用戶,二者之間可進行通信,二者都可對數據監測的結果進行日志查詢,以及查詢監測的整體情況。除此之外,以網絡管理員身份登錄時,可以增加或修改普通用戶的信息。
1.2? 功能需求分析
1.2.1? 數據收集功能
數據收集包含兩個部分的功能,一是了解用戶使用網絡數據流量的需求,需要盡可能多的實現對網絡數據出入接口流量的捕獲。二是將數據存儲到數據庫之前需要對截獲到的數據包進行相關的數據信息分析,如數據包的網絡協議、源IP地址、數據包捕獲的時間以及其他的數據包詳細內容進行分析。
1.2.2? 數據存儲功能
截獲的數據包需存儲在數據庫中,以便前臺對數據進行調用。這就需要編譯程序連接數據庫,對捕獲的數據包信息進行有效的存儲及管理。同時需要進行系統日志記錄。
1.2.3? 數據報警功能
根據捕獲數據的流量分析,若發現異常流量,需及時發出警示信息,以便于網絡管理員能夠對異常數據及時處理。
1.2.4? 數據展示功能
本系統最終將通過系統界面展示所截獲流量數據的相關信息,展示查詢出的原始日志及異常數據的詳細情況。使得普通用戶能夠更好地了解自己的上網情況,網絡管理員能更好地對網絡進行管理。
2? 相關技術
2.1? Jpcap抓包技術
本系統的數據包捕獲模塊采用Jpcap抓包技術實現。Jpcap抓包技術將實現對經過網卡數據包的捕獲,并將捕獲到的數據包信息進行分析和統計,最后顯示在界面中,從而實現對網絡的實時監控。在以前,網絡流量的數據包捕獲是在混雜模式下進行的,但現在的網絡比較復雜,這就需要結合“ARP欺騙”技術完成對數據的捕獲。這樣當從一個網絡接口發送數據包時,Jpcap就能夠及時的捕獲到數據。
Jpcap抓包基本步驟為:綁定網絡設備—抓包—分析。下面是Jpcap抓包的過程:
(1)JpcapCaptor.getDeviceList()獲取網卡列表,返回一個Jpcap.NetworkInterface的數組。
(2)選擇網卡,調用JpcapCaptor.openDevice(),返回一個JpcapCaptor類的對象。
(3)創建PacketReceiver類的對象用來接收抓到的包,要覆寫receivePacket()這個方法。
(4)用JpcapCaptor的processPacket()方法執行抓包。
2.2? Winsock原始套接字
原始套接字(SOCK_RAW)是用來處理更低層的IP數據包,但是只能處理部分網卡接收和發送的數據包信息,因此常被用來開發底層的網絡應用。在開發底層的網絡應用時,對于捕獲經過主機網卡的數據包,發送自定義的數據包這樣的進程時,其他兩種套接字就不能實現該任務進程,并且它能夠對較多的網絡協議進行訪問。由于原始套接字是基于IP數據包的,使得經過的數據能夠自動的拼接在一起,并將拼接好的數據包發送給其他的網絡終端。流式套接字和數據包套接字只能夠對OSI七層參考模型的第四層(傳輸層)及以上的層次進行數據訪問,原始套接字可以對整個OSI參考七層模型的數據進行訪問,因此原始套接字就可以對應用層和數據鏈路層的數據操作。此外原始套接口提供了流式套接口和數據包套接口不能提供的三個能力:
(1)進程編寫時raw socket將對讀寫的IP、IGMP等協議進行分組,使得編程時將使用IP或IGMP構造的應用程序算作用戶進程去處理,這樣就不用向內核中添加其他代碼。
(2)在對數據報處理時,通常情況下,程序內核只能夠對IPv4數據報協議中的8位字段的值進行處理,分別為1(ICMP報文)、2(IGMP報文)、6(TCP報文)、17(UDP報文)這四種情況,但是一個字段還有很多不能夠處理到的值。通過原始套接字就能夠實現對IPv4數據包協議中的字段全部處理。
(3)在程序設計過程中,需要將捕獲的數據包按照捕獲的規則將數據包進行分類,這就需要給TCP、UDP等構造特定的分組。因此采用原始套接字,就能夠實現對IP數據包中IP首部進行構造。
本系統涉及多種網絡協議,進行數據通信時,則使用原始套接字進行網絡協議的訪問。
2.2.1? 原始套接字的工作原理
當網卡對經過的數據包進行處理時,需要將網卡的模式設置為混合模式,這樣就不需要對數據包進行處理可以直接把數據傳遞給下一層,否則數據包的部分包就會被直接拋棄。在進入網絡層之前,系統就會檢查系統中是否存在需要通過socket創建的套接字,如果存在并且協議類型相符,系統就給接收socket的緩沖區發送一個數據幀的拷貝。相反的,如果數據的校驗和出錯的話,內核直接丟棄該數據包,而不會拷貝給SOCK_RAW的套接字。
2.2.2? 原始套接字的創建
用如下方式進行原始套接字的創建:
發送接收IP數據包:
socket(AF_INET, SOCK_RAW, IPPROTO_TCP|IPPROTO_UDP|IPPROTO_ICMP)
發送接收以太網數據幀:
socket(PF_PACKET, SOCK_RAW, htons(ETH_P_IP|ETH_P_ARP|ETH_P_ALL))
3? 網絡流量監控報警系統總體設計
3.1? 系統架構設計
本系統是一個集數據包截獲、數據存儲、實時監控、數據查詢和報警功能為一體的網絡流量監控報警系統。
數據采集模塊主要實現數據截獲及數據分析,數據截獲是由系統后臺對通過主機網卡的所有數據包進行捕獲,之后對數據包信息(IP、TCP、UDP等信息)進行分析,對分析的結果進行分組統計(捕獲到的數據包信息可以在后臺顯示)。之后需要在程序中與MySQL數據庫建立連接,將分析統計數據存儲到MySQL數據庫里對應的表中,方便用戶在前端能調用數據進行數據包信息的查詢。數據流量的實時監控將以兩種形式呈現,分別是數字監控和圖形化界面監控。數字監控是將截獲到的數據包信息分組存儲在MySQL數據庫,以便前端的主程序對數據包信息進行查詢,最后將查詢結果顯示在Web系統界面中。圖形化監控也是調用MySQL數據庫中的數據,通過程序編譯,以圖表信息的形式將數據包信息分別顯示在系統界面中。數據查詢模塊是調用MySQL數據庫中的數據包信息進行查詢。報警模塊是通過系統后臺捕獲的數據進行分析,根據所設定的流量審計值,對數據進行篩選匯總,超過審計值則實行報警操作,具體流程如圖1所示。
3.2? 系統功能設計
3.2.1? 數據包截獲設計
數據包截獲設計如下:
(1)設置網卡模式。本系統的數據包捕獲功能將采用多線程技術實現,因此需要選擇混合網卡設置模式。系統所有數據信息經過網卡都能被網卡接收,同時,在整個網絡中數據站點都能互相通信,且能夠實現多對一的數據傳輸方式,以至于數據的傳輸非常便利。一般情況下,發送端只會把發給本機的數據包傳遞給上層程序,其他的數據包一律丟棄。具體的地址轉發是在接收到數據后由物理層來進行。
(2)數據包截獲。由于本系統對數據包的截獲工作并未涉及數據鏈路層,僅僅是在IP協議層進行捕獲,因此可采用WINSOCK對數據包進行截獲。數據包抓取的編程方式與其他網絡程序基本相同,只不過數據包的截取需要將SOCKET設置為接收所有數據的模式,這樣就可以實現對數據包的截取。編程實現主要有以下幾個步驟:1)初始化WINSOCK庫;2)創建SOCKET句柄;3)將創建的SOCKET句柄綁定到一個本地IP地址;4)設置該SOCKET為接收所有數據的模式;5)接收數據包;6)關閉SOCKET句柄,清理WINSOCK庫。
3.2.2? 數據分析設計
數據分析設計如下:
(1)初步分析。初步分析中需設置數據包信息分析的信息,包括網絡協議、IP地址、數據包截獲的時間等信息,以便在系統界面上可以看到數據包的分類信息,并通過圖像的方式顯示。
(2)數據查詢。在系統界面中編譯一個數據查詢的按鈕并設置數據包查詢條件,可根據數據包分析的信息踐行查詢,也可以在數據庫中按照設置的查詢條件進行查詢,并將結果顯示在系統界面中。
(3)刪除數據。數據的刪除有兩種方法,第一種是可以在系統界面上直接對數據進行刪除,不需要根據指定的IP地址或端口號進行刪除;第二種是利用后臺程序刪除,后臺MySQL數據庫可進行增刪改查操作,可以在數據庫中編寫代碼對數據刪除,但這種方法比較麻煩,因此對數據的刪除直接使用第一種方法,操作簡單而且更直觀。
3.2.3? 數據存儲設計
后臺捕獲的流量數據包經過分析后,會根據分析的數據包信息進行分類統計,再將統計的數據存入MySQL數據庫中。首先,在本地MySQL數據庫中創建一個數據庫,與程序相連接,使得可以直接在程序中的數據庫創建表,分別存儲用戶信息以及截獲的數據包信息,結合spring boot架構,寫入數據庫表中信息。在程序中主要用com. MySQL. cj. protocol. server session;com. MySQL. cj. protocol. Socket Conection等語句來連接數據庫。數據庫連接成功后,在數據庫中建立一個表,用來存儲程序中需要存儲的數據包信息,之后截獲的數據包經過分析后將自動存儲在數據庫表中。
3.2.4? 報警功能設計
本系統會針對所截獲流量過高的數據進行報警。主機用于正常的數據傳輸時,一般經過主機的流量值不會太高,但當流量值突然暴漲時,說明此刻數據存在異常,可能正在遭受網絡攻擊(比如DDOS攻擊),攻擊者正在從主機下載大量的數據。所以當捕獲到超過審計值的異常數據包時,系統需要采用相應的保護措施保護系統的安全。當發現一個異常數據包時,系統界面就會彈出報警窗口進行報警。然后通知系統管理員,由管理員分析該條數據信息違反了哪些安全規則,應該采用什么樣的方法對數據進行處理。
4? 網絡流量監控報警系統實現
4.1? 系統界面實現
4.1.1? 程序界面
系統程序界面將采用HTML 5進行Web網頁設計,系統界面目錄包括用戶登錄、系統首頁以及用戶賬號管理等。系統首頁主要是進行數據包截獲,并將截獲分析后的數據信息分類顯示在界面中。用戶賬號管理添加了進行網絡監控的網絡設備和管理員用戶。
4.1.2? 數據包監視窗口
在數據包監視窗口,可以設置每分鐘超過多少流量進行監聽,也可以設置監聽的時間和監聽的數據包個數,當點擊開始獲取數據包的按鈕時,系統就會對經過服務器的數據包開始進行捕獲,可自己點擊刷新按鈕對截獲的數據包進行更新。若要結束監控,可點擊暫停的按鈕,之后就可以在日志中查看數據包。
4.1.3? 日志查詢窗口
本系統可采用多種查詢方式,可根據數據包的TCP、UDP、IP地址等查詢方式進行數據包查詢,在查詢窗口輸入所需查詢的數據包信息即可查詢到當前網絡流量數據包,也可直接查詢整個數據包的所有信息。
4.2? 后臺服務實現
后臺服務實現由以下幾個步驟進行:
(1)node的安裝。首先在DOS命令窗口下打開npm終端npm install-g npm,在安裝typescript腳本語言,npm install -g typescript typings,之后安裝npm install -g @angular/cli,最后進行驗證。
(2)本地MySQL數據庫的安裝。
(3)連接數據庫,將系統用戶寫入數據庫中。
(4)在Node運行環境安裝成功后,進入idea軟件啟動創建的系統Web項目。
(5)開啟服務器,實現后臺服務。
4.3? 實時監控
程序主要分為下列功能模塊:實時監控、數據清理、報警界限。輸入每分鐘高于多少流量后,點擊開始獲取數據包,系統就會以秒的時間間隔開始數據捕獲。所截獲的數據包信息也會在后臺中顯示。網絡流量監控報警系統運行界面,如圖2所示。
捕獲到的數據包信息分析統計后存儲在數據庫中,如圖3所示。
當每分鐘的流量數據超過設置的每分鐘最高流量值時,系統將會發出警示信息,如圖4所示。
5? 結? 論
面對當今復雜的網絡環境,網絡流量的監控管理尤為必要。本文設計的網絡流量監控報警系統通過對主機網卡的網絡數據流量進行捕獲、分析,掌握流量數據的使用情況,對出現異常的數據發出告警,及時通知網絡管理員。從而使管理員能夠對數據信息異常的數據包及時進行處理,實現對數據流量的實時監控及報警的目的。為優化網絡資源,提升網絡服務質量提供幫助。
參考文獻:
[1] 潘卿.面向網絡流量監控的日志系統設計與實現 [J].中國新通信,2020,22(21):59-60.
[2] 段紅秀,周靈.基于大數據應用背景的網絡流量監控系統設計 [J].電腦知識與技術,2020,16(5):31-32.
[3] 孫英,劉忠利,楊海苑.基于JSP的網絡信息流量實時監控系統設計 [J].信息與電腦:理論版,2021,33(8):202-204.
[4] 常孟佳.基于Jpcap的網絡數據包的監聽與分析 [J].電腦與電信,2021(9):59-63.
[5] 王藝霏,代紅.基于Jpcap局域網監聽軟件的設計與實現 [J].電腦迷,2018(8):82.
[6] 施潤杰,康曉鳳,王可,等.內核級網絡流量監測系統 [J].軟件工程,2021,24(5):43-46.
[7] 楊航,郭喬進,吳其華,等.OpenStack平臺拓撲網絡流量監控方法研究 [J].信息化研究,2021,47(5):35-40.
[8] 王頎,劉豐,張彬,等.SNMP與NetStream流量監控方法的對比分析 [J].海洋信息,2021,36(3):18-25.
作者簡介:李陽(1991—),女,仡佬族,吉林九臺人,助教,碩士研究生,研究方向:計算機網絡、信息與通信系統。
收稿日期:2022-10-22
基金項目:貴州商學院2022年度校級教改項目(2022XJJG09)