APP下载

TCP/IP协议分析器的设计与实现

2016-05-30武焱袁焊忠席振元

关键词:数据分析

武焱 袁焊忠 席振元

摘 要:在当今计算机网络无处不在的时代,网络攻击时刻威协着我们所处局域网络的安全。为了确保网络的安全性,就要对网络交互的数据包进行分析。本文提出了TCP/IP协议分析器的设计开发方案,并通过Qt Creator和C++编程实现。该分析器能够捕获网络数据包,并根据网络协议格式对数据进行解析,从而为进一步分析网络系统的安全性提供依据。

关键词:网络数据包;TCP/IP协议;数据分析

1 系统需求分析

本系统主要功能需求有以下几项:

①具备网络数据包捕获的参数设置: 在进行数据捕获之前要进行协议类型、MAC地址、IP地址等参数的设置,满足用户的一些常规需求,保证用户使用系统的合理性。

②能够捕获到本机所有的网络数据包:通过本系统可以对网络上的数据包进行捕获,包括ICMP、DNS、ARP、RARP等一些网络协议的数据包的捕获,让用户通过本系统能够捕获到有用的数据包。

③能正确地对捕获到的网络数据包进行网络协议分析:在捕获到网络数据包后能够对网络数据包进行包结构分析,对数据链路层数据按照帧格式进行分析,对网络层的IP数据报的分析,对传输层TCP和UDP的头格式进行分析,对应用层协议进行分析。

④能够把捕获到的网络数据包保存到当地文件中:在用户的使用过程中,可能需要对捕获到的网络数据包进行存储,那么需要满足用户对网络数据包的存储功能,让用户能够更灵活地使用本系统。

⑤能够打开已经捕获到的网络数据文件并进行网络协议分析:能够满足用户打开已经保存的网络数据文件,并进行网络协议分析,这样用户就能随时随地对以前的网络数据进行协议分析了。

⑥能统计当前所有网络接口的网络数据包:通过这个功能,用户可以查看当前网络接口的数据包数量和每秒通过的数据量,用户可以清晰地掌握当前网络接口通过数据包的状况,有助于用户对网络接口的检测。

2 总体设计

2.1系统总体模块设计

通过系统需求分析可以将网络协议分析器分为四大主要功能模块,分别为文件存储与读取模块、抓包参数设置模块、数据包捕获模块和数据包分析模块。这些模块详细功能如下:

①文件存储与读取模块:通过捕获网络数据包,把其存储到文件中,有利于以后对网络数据包的分析;读取已经捕获到并存储到文件中的数据包,并进行协议分析。

②抓包参数设置模块:通过配置抓包参数,来确定捕获数据包的类型,可以指定捕获网络数据包的MAC地址和网络地址,并能够对网络协议和网络数据包大小进行设置。

③数据包捕获模块:通过配置的抓包参数进行数据包的捕获,在程序运行的过程中,会将捕获到的数据包以链表的形式存储起来,以供下一步的分析。

④数据包分析模块:根据捕获到的数据包进行各层协议分析,将分析的结果以可视化的界面形式展示给用户,让用户能够看清每层协议的格式和数据包数据部分内容。

系统功能模块图如图1所示:

2.2 软件开发平台

本系统开发平台是一般的PC机,使用Windows 8版本。因为本系统没有涉及到数据库所以就没有使用数据库。程序开发使用的编程环境是Qt 5.4.1中文版,并且opensource使用的版本是Qt Creator 3.3.1。用到的数据包捕获函数库为WinPcap,这个函数库主要运行在操作系统的底层,所以使用这个函数库会大大提升本系统的运行效率,尤其在大量循环捕获网络数据包的时候,优势就愈发明显。编程工具Qt Creator具有很好的跨平台性能,可以很轻松的把本系统移植到Linux环境的系统中去。

3 详细设计

系统中各个功能模块的界面是用Qt Designer来设计的,它提供可视化的界面操作,通过拖动控件来实现我们想要的界面效果,方便高效。Qt提供的信号与槽的机制对逻辑功能的编程更加方便。根据模块所需要实现的功能,编写代码,最终实现系统的整体功能。

3.1 协议头结构设计

通过对协议头结构体的设计,帮助我们完成网络数据包的解析,将定义的结构体与捕获到的网络数据包进行匹配,把相应的字段进行处理,从而分析出网络协议头格式,完成对网络协议的分析。

设计协议头结构体的时候需要注意以下一些事项:①明确网络数据包的结构;②清楚网络数据包捕获的方法;③明确各层协议头数据每个字节或每个字段的含义;④定义对应的结构体用来解析网络协议;⑤把分析的结果以可视化的方式显示在界面上。

这个环节是整个系统中的一个重点,不管哪里出现任何差错,都将导致最终对网络协议的分析出现错误,所以在对网络协议头结构体设计的时候要认真细致,确保结构体里面的字段与网络协议的字段能够一一对应,保证对网络协议分析的正确性。

通过对TCP/IP网络体系各层协议格式的分析,本系统定义了以下的结构体表:数据链路层帧首部结构体表(_ETHERNET_HEADER)、ARP首部结构体表(_ARP_HEADER)、IP首部结构体表(_IP_HEADER)、IPv6首部结构体表(_IP6_HEADER)、TCP首部结构体表(_TCP_HEADER)、UDP首部结构体表(_UDP_HEADER)、ICMP首部结构体表(_ICMP_HEADER)。

3.2 算法概要

抓包模块的程序流程图如图2所示。在对抓包参数设置完点击确定的时候,将选择的每一项按照网络数据包过滤器过滤规则进行处理,转化为字符串模式并通过调用相应的接口函数,对过滤条件进行编译和设置,完成对抓包参数的设计。

当捕获到网络数据包时,这时可以选择一个想要分析的数据包并对数据包进行解析。这里用到数据包分析算法,算法中根据每层协议的协议类型对数据包进行解析,然后判断下一层协议,依次解析,直到最后一层协议。

在系统使用的过程中,可能需要保存数据包,那么这里就会有数据包保存的算法。代码中做这样的处理:每当有数据包到来都会把数据包追加到指定的文件中,当用户需要保存数据包的时候,只需要将数据包临时文件拷贝到指定的目录即可。

通常会对已经保存的数据包进行读操作,这样我们就会有数据包文件的读取功能。这个功能的算法使用标准C语言的二进制读取文件的方法,将文件一个字符一个字符地读取出来,并分离每一个数据包,并对数据包进行相应的处理。

4 系统的编码

4.1 主要函数

此处列出了主要函数,具体程序代码省略。

①捕获网络数据包函数

int pcap_loop(pcap_t *p, int cnt, pcap_handler callback, u_char *user)

函数返回值:成功返回0,失败返回负数。

参数描述:p: Libpcap句柄,cnt: 指定捕获的数据包个数,-1代表无限个,callback: 回调函数,可在此函数中对数据包进行处理,user: 表示往回调函数传的参数。

②打开存储文件函数

pcap_dumper_t *pcap_dump_open(pcap_t *p, const char *filename)

函数返回值:成功返回一个文件句柄,失败返回NULL。

参数描述:p: 表示一个Libpcap句柄,filename: 文件名。

函数功能:打开一个文件,并准备向其写入网络数据包。

③IP协议分析函数

void ethernet_protocol_IPpacket (LinkList p)

函数返回值:无返回值。

参数描述:p: LinkList类型的链表节点指针。

④TCP协议分析

void ethernet_protocol_TCPpacket (LinkList p, bool isIP6)

函数返回值:无返回值。

参数描述:p: LinkList类型的链表节点指针,isIP6: 是否为IPv6数据包。

4.2 数据包结构分析结果显示

在数据包成功捕获后,选择要解析的数据包进行数据包的解析,数据包协议分析界面如图3所示。在主窗口的右上方有一个表格,里面显示捕获到的每一个数据包的基本信息,如果要对其中的一个数据包进行协议分析,那么需要点击要分析的那个数据包,协议分析的结果会在左侧的树形列表中显示出来,下面窗口中则显示数据包的原始数据和数据包数据。

5 结束语

本系统实现了对网络数据抓包以及对数据链路层、网络层、传输层和应用层等各层协议分析。在对网络数据捕获中,主要用到了操作系统底层的WinPcap函数库,在大量捕获网络数据包时系统运行效率高;使用的编程工具是能够跨平台的Qt Creator,具有良好的可移植性和跨平台性。应用该系统能够捕获到网络上交互的全部数据包,并把数据包的内容显示给用户,把每层协议的协议头按照协议格式解析,让用户更清楚地知道当前网络的网络数据交互状态,进一步分析网络系统的安全性。

参考文献:

[1]刘文涛编著.网络安全开发包详解[M].电子工业出版社,2005.10:20-30.

[2]严蔚敏,吴伟民编著.数据结构(C语言版)[M].清华大学出版社,1997.4:55-60.

[3]殷人昆,郑人杰,马素霞等编著.实用软件工程[M].第三版.清华大学出版社,2011年.

[4]明日科技编著.Visual C++从入门到精通[M].第三版.清华大学出版社,2012年9月:3-31.

[5]Bruce Eckel,Chuck Allison编著.C++编程思想[M].刘宗田,袁兆山等译.机械工业出版社,2011年7月:52-70.

[6]陆文周编著.QT5开发及实例[M].电子工业出版社,2014年1月:11-89.

[7]布兰切特,萨默菲尔德编著.C++GUI Qt4编程[M].第二版,闫锋欣等译.电子工业出版社,2013年5月:21-33.

[8]Brian W.Kernighan,Dennis M.Ritchie编著.C程序设计语言[M].第二版.机械工业出版社,2004年1月:30-60.

[9]W.Richard Stevens编著.TCP_IP协议详解:卷一[M].机械工业出版社,2005年7月:37-45.

[10]Gary R. Wright,W. Richard Stevens编著.TCP_IP协议详解:卷二[M].机械工业出版社,2001年12月:28-67.

基金项目:

国家级大学生创新训练项目(201335)。

猜你喜欢

数据分析
电子物证检验的数据分析与信息应用研究
基于matlab曲线拟合的数据预测分析
分众媒体趋势下场景营销的商业前景
佛山某给水管线控制测量探讨
SPSS在环境地球化学中的应用
大数据时代高校数据管理的思考
我校如何利用体育大课间活动解决男生引体向上这个薄弱环节
Excel电子表格在财务日常工作中的应用
浅析大数据时代背景下的市场营销策略
新常态下集团公司内部审计工作研究