基于Jpcap的网络流量监控报警系统设计

2023-06-25 16:04李阳
现代信息科技 2023年6期
关键词:数据统计实时监控

摘  要:针对互联网出口流量过高而导致网页访问速度缓慢的问题,设计一种网络流量监控报警系统,采用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)

猜你喜欢
数据统计实时监控
大数据与大数据经济学
智能可调节动作识别型节能风扇的设计
智能投料过程动态监控系统研发及应用
基于无线传感器网络的绿色蔬菜生长环境监控系统设计与实现
一种煤矿瓦斯检测系统的设计与实现
一种基于物联网的电梯闸瓦磨耗实时监测系统的设计
山西省不同导线电线积冰特征对比分析