首页 > 范文大全 > 正文

网络数据包的捕获和分析

开篇:润墨网以专业的文秘视角,为您筛选了一篇网络数据包的捕获和分析范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

【摘要】 网络数据包捕获分析技术是网络信息传输中的一个关键技术,从总体设计和具体实现两方面实现网络数据包捕获及分析系统的过程。

【关键词】 包捕获;包分析;实现过程

一、网络数据包捕获的核心理论

实现对网络传输的原始数据包的捕获,不仅可以有效的进行网络数据通信,而且通过对探测到的网络上传输的数据包信息的分析利用,还有助于网络的安全维护。捕获和分析网络数据包系统主要实现的功能是对网络上的数据包进行捕获及分析,即首先通过捕包模块把经过主机网卡的数据包截获,并存储在缓冲存储器中,然后通过分析模块对它进行分析,得到网络层和传输层协议的报头内容。网络数据包捕获程序依赖于一套捕获数据包的原函数,即包捕获驱动器软件。

二、网络数据包捕获研究的常用方法

根据研究方向的不同,数据的获取有不同的方法。数据获取最主要的类型有两种:通过数据链路层获取和通过网络层获取。通过链路层获取。在TCP/IP的体系结构中,数据链路层和物理层共同构成网络接口层,作为TCP/IP的第一层,在这一层传输的数据格式是以太帧;通过网络层获取。通过网络层获取数据主要借助原始套接字,套接字是网络应用编程接口,应用程序可以使用它进行网络通信而不需要知道底层发生的细节。通过原始套接字可以获取ICMP、TCP、UDP 等数据包。

三、网络数据包捕获的系统方案设计

1.系统实现原理

在以太网中,所有的通信都是广播的,也就是说通常在同一个网段的所有网络接口都可以访问在物理媒体上传输的所有数据,每一个网络接口都有一个唯一的硬件地址,就是网卡的MAC地址。在正常的情况下,一个网络接口应该只响应两种数据帧:与自己硬件地址相匹配的数据帧;向所有计算机的广播数据帧。在实际系统中数据的收发是由网卡来完成,网卡接收到传来的数据,网卡内的程序接收数据帧的目的MAC地址,根据计算机上的网卡驱动程序设置的接收模式判断该不该接收,认为该接收就接收后产生中断信号通知CPU,认为不该接收就丢掉不管,不该接收的数据就被网卡截断了,计算机根本不知道。对于网卡来说一般有4种接收模式:广播方式:该模式下的网卡能够接收网络中的广播信息。组播方式:该模式下的网卡能够接收组播数据。直接方式:该模式下只有目的网卡才能接收数据。混杂模式:该模式下的网卡能够接收一切通过它的数据,而不管该数据是否是传给它。要想实现对网络的数据进行分析,首先必须把网卡设置成混杂模式,只有这样才能让网卡接收一切所能接收的数据。由此可见,要想实现数据包捕获及分析系统,应该做三件事:把网卡设置成混杂模式、捕获数据包、分析数据包。

2.系统设计思路

在VC++中通过AppWizard生成一个基于对话框的工程IPMom。添加一个flexgrid控件,负责显示最终数据。添加一个“捕获数据包”按钮,负责激活和终止监听线程。首先,在头文件中定义协议相关的结构和宏,声明一个线程函数为友员函数,它负责监听网络数据报。接下来对对话框进行初始化,设定显示界面。其次,是设置网卡的模式。该系统是利用套接字来捕获数据包,先要创建原始套接字,对原始套接字进行初始化,并把它绑定在本地网卡,设置套接字和网卡的模式。然后,是捕获数据包。启动接收线程,调用函数获取消息线程,从中取得线程ID,调用接收函数接收流经主机网卡的数据包并存储。最后,就是分析数据包并把它显示在对话框中。根据不同协议的数据报格式来进行协议的解析。定义一个指针,利用指针的移动来实现具体的操作,因为是在网络层捕包,所以首先默认的是分析IP协议,并调用添加函数把它添加在控件中,然后根据分析出的IP协议中“协议”字段的值在组合框中选择不同的协议,并把该协议的解析结果显示在控件中。该系统能够解析四种协议,即IP协议、TCP协议、UDP协议和ICMP协议。

四、网络数据包捕获的系统功能实现

系统的开发环境是VC++6.0,利用套接字来实现包捕获功能。在包捕获的具体实现之前,首先是设置网卡的模式。主要包括:创建原始套接字;设置IP头操作选项,其中flag设置为ture,表示对IP头进行处理;填充SOCKADDR_IN结构;将原始套接字绑定到本地网卡;设置套接字模式;启动接收数据线程。根据不同的选择执行不同的程序,并把最后结果显示在对话框中。捕获和分析网络数据包系统主要实现的是网络数据包的捕获及分析的功能,它主要有两大功能模块:第一个是包捕获功能模块,在这个模块中主要是利用套接字对网络层的数据进行抓包,然后把它存储在缓冲存储器中;第二个是包分析功能模块,在这个模块中根据协议的报文格式,把抓到的包进行解析,最后显示出协议的报头内容。系统的功能基本达到了原定的设计目标,实现了数据包的捕获与初步的协议分析。

参考文献

[1]薛辉.网络数据获取方法浅析[J].网络安全技术.2007

注:本文作者系太原大学教师。