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

来源 :中小企业管理与科技·下旬刊 | 被引量 : 0次 | 上传用户:HHP110
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘 要:在当今计算机网络无处不在的时代,网络攻击时刻威协着我们所处局域网络的安全。为了确保网络的安全性,就要对网络交互的数据包进行分析。本文提出了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)。
其他文献
各区县(自治县、市)人民政府,市政府有关部门:今年10月上旬以来,由于受国际市场影响,加之国内秋季油料作物减产,拉动全国色拉油及其他食用油价格普遍上扬,同时连锁引起粮食等
灵敏度特性曲线可以真实地反映出皮带秤秤架的力转换特性。本文介绍了灵敏度特性曲线的含义、分析方法及其应用。
详述了应用闪耀光栅构成的一种荧光光纤温度传感器的构思、理论分析和实验研究。介绍了一种温敏荧光粉的光谱特性、光谱的温敏特性以及荧光强度-温度特性。文末讨论了两个值
超微压力测量装置是基于称重法来测量超微压力的,其计算精确度为万分之四。该装置具有可移动、测试方便、灵敏度高等优点。文中对其作用原理及其误差均作了介绍和分析。
介绍了轧机轧制力、张力测量系统的组成,对其张力、轧制力传感器的选用、放大变换电路的技术要求和功能等作了较详细的说明。在对张力、轧制力的受力状态进行分析的基础上,还叙述了张力、轧制力的检测原理。
介绍了一种多通道储罐液体自动计量系统的原理和结构,并提出了新的计算方法。文中着重对该计算方法的数学模型及各因素引起的误差进行探讨,引入了修正系数,提高了显示精确度
<正> 四、几个实例及其比较为了比较新型双变量控制系统、串级控制系统和原双变量控制系统控制效果的优劣、应用范围的宽窄,下面用几个实例来说明,并附出它的仿真结果。为了
<正> 由热电偶构成的测温系统均存在着非线性,为了准确反映实际被测温度,必须进行非线性校正。校正方法可分为硬件校正和软件校正。硬件校正方法也很多,可在模拟部分,亦可在
综述了国内外软件-硬件联合系统可靠性的发展状况,扼要地介绍了该系统可靠性模型和失效分析,提出了今后的工作重点和建议。
<正> 金飞鷃(Kingfisher)遥测遥控遥信系统(以下简称遥测系统),是美国爱克新公司的CIM-PAC2000分布式控制系统中一个子系统。对分布式控制系统而言,通信始终是系统中的一个重