基于SPI的数据包截获平台的研究与实现
- 格式:pdf
- 大小:305.46 KB
- 文档页数:6
基于dpdk的高效数据包捕获技术分析与应用
赵宁;谢淑翠
【期刊名称】《计算机工程与科学》
【年(卷),期】2016(38)11
【摘要】对Intel dpdk数据包捕获技术进行了深入研究,对其优缺点进行了详细的分析.在此基础上,利用dpdk设计并实现了一套基于Linux的数据包捕获系统,成功地将其应用于千兆网络安全防护系统中.使用BPS软件对基于dpdk的网络安全防护系统与基于pf_ring的网络安全防护系统进行仿真分析,结果表明dpdk对整体系统性能的提高成效显著,取得了良好的效果,验证了该方法的可行性.
【总页数】7页(P2209-2215)
【作者】赵宁;谢淑翠
【作者单位】西安邮电大学通信学院,陕西西安710061;西安邮电大学理学院,陕西西安710061
【正文语种】中文
【中图分类】TP311.1
【相关文献】
1.PF_RING高效数据包捕获技术研究与设计 [J], 徐慧;姜恒;杨林
2.基于DPDK的高速数据包捕获方法 [J], 任昊哲;年梅
3.网络数据包的捕获、分析与应用 [J], 庄春兴;杨晓伟;黄向前
4.基于DPDK和LX2160A的高效数据包捕获方法研究与应用 [J], 杨勇
5.基于DPDK技术的高效数据包捕获技术分析与应用研究 [J], 熊卫刚
因版权原因,仅展示原文概要,查看原文内容请购买。
第23期2021年12月No.23
December,2021
0 引言随着计算机技术的日异月新,各高校的机房配置的计算机功能越来越丰富,计算机的网卡都支持远程唤醒(Wake On LAN)功能。为了方便教学各机房安装了类似“极域2015”控制端软件,实现了远程开关机和网络教学功能,极大地提升了教学质量和教学效果。但因各种原因,机房在使用结束后,或多或少总有部分机器未关机。这些未正常关机的计算机不仅持续地浪费电力资源,存在着安全隐患;这些未关闭的计算机也给机房管理带来了不少麻烦,直接断电关机,会造成计算机的软硬件损坏,影响正常的使用;如果逐一正常关机,大大增加了机房管理人员的工作量。如果能利用计算机的远程唤醒功能,开发一套无需在计算机上安装控制端的系统,用于应对机房的日常管理,将大大减轻机房管理员的工作量。设计思路如下:获取要控制的计算机网卡MAC地址,通过ESP8266开发板的自带的WiFi联网功能接入局域网,由ESP8266利用网卡的远程唤醒功能,向被控计算机发送开关机指令实现远程开关机指令,实现机房快速开关机功能,有效减轻机房管理的工作量,同时也有效延长了计算机软硬件的使用寿命,减少了不必要的浪费[1]。1 Wake On LAN远程唤醒的原理当联网的计算机关闭启远程唤醒功能时,计算机关机后网卡也处于关闭状态,是无法检测、接收网络上的信息的。如果将计算机的远程唤醒功能开启,计算机网卡在计算机关机后处于低功耗状态,可以检测、接收网络上的信息,并对接收到的信息进行处理,这就为远程唤醒计算机的实现提供了硬件基础。当计算机处于关机状态时,计算机的IP地址和计算机名称都无法识别计算机身份,唯一能够作为识别计算机身份只有网卡的物理地址(MAC)[2]。用户获取被唤醒计算机的物理地址(MAC)后,就可以利用广播包的方式在网络上传输唤醒数据包,唤醒数据包中包含被唤醒计算机的网卡信息、物理地址信息等数据资料。当处于关机状、睡眠状态的计算机网卡接收到唤醒数据包后,网卡控制芯片通过检测数据包中的MAC地址,如果发现并确认数据是发给自己的,则通过专用的电路出发开机信号,计算机加电启动[3]。Magic Packet是AMD公司开发的网络唤醒技术,根据Magic Packet标准,Magic Packet数据包包含两部内容,共计102字节,格式为:6*0xFF+16*MAC地址。其中6个“FF”表示这是一个特殊的唤醒数据包,后面紧跟重复16次的被唤醒计算机的MAC地址。2 ESP8266WiFi模块简介乐鑫科技是一家全球化的无晶圆厂半导体公司,多年来深耕AIoT领域软硬件产品的研发与设计。ESP8266模块提供了一套高度集成的WiFi SoC解决方案,专注于研发高集成、低功耗、性能卓越、安全稳定、高性价比的WiFi和蓝牙MCU。既能独立应用,也可以作为从机搭载其他主机MCU
飞控FTI系统状态监测与数据分析系统设计与实现张娟;吕鹏涛【摘要】在飞行试验工程中,机载测试系统完成对飞控数据的采集、封装和输出;为了实现基于USB的PCM数据解调及其与计算机之间的数据通信,实现实时的状态监测和数据事后分析处理,设计并实现了基于.NET框架的FCS FTI系统状态监测与数据分析系统;该系统包括数据实时捕获、状态监测、数据事后处理等模块;测试表明,系统各功能模块运行稳定,能对FCS-FTI进行状态监测并能进行数据事后分析处理,具有高效的实时性和良好的可靠性.【期刊名称】《计算机测量与控制》【年(卷),期】2015(023)009【总页数】4页(P3174-3177)【关键词】飞行试验;flight controller system;flight test instruments;状态监测;数据分析【作者】张娟;吕鹏涛【作者单位】中国飞行试验研究院,西安 710089;中国飞行试验研究院,西安710089【正文语种】中文【中图分类】TP31飞控是飞行控制系统(flight controller system,FCS)的简称,是现代电传飞机所具备的自动化飞行控制系统[1]。
机载测试(flight test instruments,FTI)系统实现对飞行控制总线数据的采集、封装、输出等。
在飞行试验工程中,实现FCSFTI测试系统的状态监测,方便试飞测试工程师对采集参数信息、数据完整性等信息进行在线分析;实现飞控数据实时与事后分析,对FCS-FTI系统进行整体行为研究、效能评估、故障诊断等具有很高的应用价值。
FCS-FTI是飞控机载测试系统的简称。
在飞行试验工程中,FCS-FTI系统从飞机数字飞控计算机系统采集飞控数据,同时接收外部时间信息,并将采集的FCS数据和外部时间数据封装成PCM(pulse code modulation)数据流输出。
FCS-FTI状态监测与数据分析系统总体方案如图1所示,系统通过基于USB接口的PCM解调卡实时解调PCM数据流,并将获取的数据进行实时记录与回访、实时分析与显示等实现FCS-FTI状态监测;从数据记录设备获取静态数据进行数据事后分析。
绪论科学技术的飞速发展,人们已经生活在信息时代。
计算机技术和网络技术深入到社会的各个领域,因特网把“地球村”的居民紧密地连在了一起。
近年来因特网的飞速发展,给人们的生活带来了全新地感受,人类社会各种活动对信息网络地依赖程度已经越来越大。
然而,凡事“有利必有一弊”,人们在得益于信息所带来的新的巨大机遇的同时,也不得不面对信息安全问题的严峻考验。
“黑客攻击”网站被“黑”,“CIH病毒”无时无刻不充斥在网络中。
“电子战”已成为国与国之间,商家与商家之间的一种重要的攻击与防卫手段。
因此信息安全,网络安全的问题已经引起各国,各部门,各行各业以及每个计算机用户的充分重视。
因特网提供给人们的不仅仅是精彩,还无时无刻地存在各种各样的危险和陷阱。
对此,我们既不能对那些潜在的危险不予重视,遭受不必要的损失;也不能因为害怕某些危险而拒绝因特网的各种有益的服务,对个人来说这样会失去了了解世界、展示自己的场所,对企业来说还失去了拓展业务、提高服务、增强竞争力的机会。
不断地提高自身网络的安全才是行之有效地办法。
绪论 (1)第一章防火墙是什么 (2)第二章防火墙的分类 (3)第三章防火墙功能概述 (6)(1)根据应用程序访问规则可对应用程序连网动作进行过滤 (6)第四章防火墙的不足 (7)第五章防火墙主要技术特点 (8)第六章防火墙的典型配置 (9)6.2.屏蔽主机网关(Screened Host Gateway) (9)6.3.屏蔽子网(Screened Subnet) (9)第七章各种防火墙体系结构的优缺点 (10)第八章常见攻击方式以及应对策略 (11)8.1 .1 病毒 (11)8.1.3 邮件 (12)8.2 应对策略 (12)8.2.1 方案选择 (12)8.2.3 坚持策略 (12)第九章防火墙的发展趋势 (13)4)单向防火墙(又叫做网络二极管)将作为一种产品门类而出现。
(16)第一章防火墙是什么防火墙是一种非常有效的网络安全模型。
基于ASI接口的高清TS流录制系统研究作者:王思维来源:《科学与财富》2013年第05期摘要:本文介绍了一种使用ASI接口实现MPEG-2 TS流录制的方案,简要介绍了TS流的构成,详细探讨了设计中的主要问题以及解决方案,该设计已经在实际中得到了很好的应用。
关键词:ASI接口 TS流 FPGA FIFO引言随着电子技术、计算机技术和信息技术的发展,电视系统的数字化是一个必然的趋势。
在目前的DVB-C系统设备中,传输MPEG-2视频码流的标准接口包括异步串行接口(ASI)和同步并行接口(SPI)。
由于SPI需要11位有用接口,连线多且复杂、传输距离短,而且容易出现故障;ASI接口采用串行传输,只需要一根同轴电缆传输,连接简单,传输距离长,因此得到了广泛的使用。
DVB-ASI接口可以有不同的数据速率,但是传输速率恒定为270Mbps。
不同数据速率的串行编码传输系统,该接口系统基于MPEG传输包的分层结构,包括顶层(第2层)和基于光纤通道和同轴电缆通道的底层(第1层和第0层)。
本文设计的基于ASI接口的高清TS流录制系统,可以接收不同频道的MPEG流,存储于硬盘中,便于主机上的应用程序对MPEG-2传输流做进一步的处理。
1、MPEG-2传输流MPEG-2标准的系统部分描述了如何将视频、音频和数据流服用成一个或者多个适用于存储或传输的流。
其中,传输流(Transport Stream)简称TS流,是专门针对在有可能发生严重错误的情况下进行节目存储和传输而定义。
传送流应用比较广泛,如视音频资料的保存、电视节目的非线性编辑系统及其网络等。
TS流由一道或多道节目组成。
如图1所示,TS包长固定为188字节。
包括同步字节0x47和数据包识别号PID等。
PID为13位字段,指示存储于分组有效负载中数据的类型,PID为0x0000表示程序关联表保留;为0x0001表示条件访问表保留,为0x1FFF表示空分组保留。
从PID可以判断其后面负载的数据类型是视频流、音频流、PSI还是其他数据包。
实时半实物网络仿真关键问题探讨摘要:本文在介绍半实物仿真一般原理的基础上,对半实物仿真要解决的关键问题进行了研究,并重点阐述了当前解决方案。
关键词:半实物仿真,包转发,数据截获,实时性一、引言目前在许多网络问题的研究中主要的研究方法主要包括理论分析、现场测试和仿真。
现场测试过程最为直观、测试结果最为可信,但却存在着耗资大、测试过程不可控等缺点。
理论分析方法可以不受任何研究条件的限制,并且分析过程严谨可信,但其有效性依赖于所建立数学模型的正确性,通常只有一些理想或者比较简单的情况下才能起到较好的作用,而当系统非常复杂时,就无法用一些限制性假设来对其进行精确描述。
仿真方法以其经济性和可重复性等优点为科学研究提供了一种重要手段,然而,目前单纯的软件仿真方法还不能完全满足复杂系统研究的实际需求,存在着一些设备功能建模困难、缺乏应用层响应等问题,实时半实物网络仿真的出现对这些问题的解决提供了很大帮助。
半实物网络仿真,即网络的半实物仿真,是半实物仿真技术在网络领域的应用。
半实物网络仿真通过一种手段将真实网络(或网络设备)接入模拟网络中,使它们整合为一个半实物仿真网络进行网络数据流交互。
它不需要模拟网络能直接执行真实应用程序,但必须要能提供外部接口来进行网络数据的转换。
并通过网络(或节点)映射的方式来体现真实网络(或网络设备)在整个仿真回路中的位置。
相比单纯的软件仿真,半实物网络仿真具有验证说服力强、可对实际硬件进行测试、避免建模困难等优点,可以较好地克服采用纯软件仿真方法进行网络仿真研究存在的不足。
然而,要实现网络的半实物仿真还有很多关键问题需要解决。
二、半实物网络仿真基本原理半实物网络仿真不需要模拟网络能直接执行真实应用程序,但必须要能提供外部接口来实现内外部数据的截获、处理和转换。
通常,半实物网络仿真在物理上是由少数实际设备构成,而逻辑上则能组成一定规模的虚拟网络,真实设备通过节点映射方式确定其在逻辑网络中的位置及其“代理”,映射节点作为真实设备参与仿真中介,一方面将真实设备发送来的数据经半实物仿真接口截获、处理和转换后传递到模拟网络中运行,另一方面将目的地为真实设备的数据进行处理和转换后发送至真实主机。
基于SPI读取绝对值编码器SSI信号的方法设计概述作者:梁昌鹏陈天桂李雪景来源:《科学与信息化》2020年第05期摘要 SSI是绝对值角度编码器最常见的输出方式,基于单片机普遍没有SSI接口,介绍一种单片机普遍都有的SPI读取绝对值编码器SSI输出的方法,实现了输出信号的角度转换。
文章从硬件和软件两方面给出了设计的思路和方法。
关键词 SSI;SPI;绝对值编码器引言相对增量式编码器,绝对值编码器具有分辨率高、绝对位置定位精度高和抗干扰性强等优点,越来越多使用在工控上,其输出信号方式有并行和串行输出,由于绝对值编码器分辨率少则十几位的精度,所以绝对值编码器常用串行输出。
而串行方式有很多输出接口,如同步串行接口SSI、BiSS、CANopen等,其中SSI是绝对值编码器最常用的串行方式。
在工控系统中,绝对值编码器SSI信号的正确读取是非常重要的,而单片机一般没有对应的SSI接口,传统的方法是用几个IO口模拟SSI通信协议进行读取,但这会给软件上增加成本。
利用一般单片机集成的SPI,对SSI通信协议进行模拟,可实时读取输出信号,减少了软件上的成本。
本文基于STM32系列MCU芯片为控制核心的基础上,搭建电机测试平台,用SPI模拟SSI接口协议,读取绝对值编码器角度信号,实现电机的正常运转。
1 总体设计思路1.1 设计方案以STM32系列MCU作为接收信号的芯片,基于SPI的绝对值编码器SSI接口读出方法的设计框图如图一。
SSI接口出来的是两组422差分数字信号,经过一组逻辑电平转换电路,转换成两组可以让STM32系列芯片识别的单端LVTLL信号,与芯片SPI接口的两个端子MISO和SCK对接,通过软件解析SPI接收到的SSI信号,从而完成对编码器输出信号的读取工作。
1.2 基于SPI读出SSI信号的工作原理SSI是一种同步的、串行的数字传输,时钟由作为主机的单片机发出,数据由作为从机的编码器发出,配合时钟同步响应,通讯是单向的。
2021年1月基于的协议解析软件设计与实现李子峥,朱振荣(公安部第一研究所,北京100048)【摘要】警用数字集群(PDT)通信系统总体技术规范(GA/T1364—2017)规定了PDT(Police Digital Trunking,警用数字集群)系统间互联的控制信令应使用pSIP协议。
本文基于Wireshark软件的插件技术,设计了pSIP协议的解析流程,使用C语言编写pSIP协议的解析程序,实现对pSIP协议的解析,并通过实际的测试数据对解析结果进行验证。
【关键词】警用数字集群;pSIP;Wireshark;协议解析【中图分类号】TP311.1【文献标识码】A【文章编号】1006-4222(2021)01-0233-021PDT和pSIP协议PDT标准是我国推出的一套具有完全自主知识产权的专用移动通信系统标准,具有大区制、广覆盖、采用国产密码算法加密等特点和优势[1]。
目前,PDT标准已成功应用于公安系统等领域。
PDT标准规定在扁平化的IP网络内任何两个PDT 系统间都采用完全对等的系统互联架构。
PDT系统间的互联控制信令使用pSIP协议,用于移动管理、呼叫控制和网络维护等[2]。
pSIP协议包括pSIP消息、媒体流控制的pSDP协议、用户数据定义的MAP协议、卫星定位信息的NEMA协议。
pSIP协议栈分为由上至下分为应用层、会话层、事务层、压缩层、传输层和网络层,传输层采用UDP协议,端口号5060。
基本语法规则符合会话初始协议(SIP)技术要求.第1部分:基本的会话初始协议(YD/T1522.1—2006)和会话描述协议(SDP)技术要求(YD/T1936—2009)。
pSIP消息(pSIP-message)的基本格式如下:pSIP-message=Request-Line|Status-Line1*{message-header}CRLF[message-body]pSIP消息包括请求消息Request和状态消息Status,Re原quest-Line、Status-Line以及每个消息头域message-header都应使用回车换行符(CRLF)来结尾,无论pSIP-message是否携带消息体,CRLF都应存在[3]。
基于国产芯片的E1接口重构技术研究与实现孙伟;李鉴;杨玉发【摘要】Domestic chips are usually used in key components for access board of access router, such as FPGA and CPU, control data and business data are in distributed collaborative process, and the modular design makes the change of card interface module and the loading of different programs realize equipment static reconfiguration. The adoption of two pieces of FPGA could make up the inadequacy of domestic chip performance, and makes easy the isolation of different access board data processing modules. The overall design of access board, the problems to be solved, the hardware and software strategies are described. The channels of between the CPU, FPGA and interface module are configured. Experiment indicates that this E1 board could fairly implement data receiving and dispatch process.%接入路由器中接入板的FPGA和CPU等关键元器件采用国产化芯片,控制数据和业务数据分布式协同处理,同时对板卡进行模块化设计,使得更改接口模块和加载不同程序实现设备的静态重构。
虞柯,庄卫华,林巧河海大学计算机应用系,南京(210098)Email:yuke1998@摘要:本文设计和实现了一个基于SPI的数据包截获平台,对该平台稍作修改就能实现如防火墙系统,入侵检测系统,网络流量计费系统,VPN,Qos,URL过滤等许多网络应用系统。
在此基础上,本文以防火墙为例讲述了对该平台的使用方法。
关键字:SPI 网络数据包 LSP winsock目录 数据包截获平台图书分类号:TP3931.引言随着计算机网络的普及和相关技术的迅速发展,数据包截获技术得到了广泛的应用,如防火墙系统、入侵检测系统、网络流量计费系统、VPN、Qos、URL过滤等网络应用系统都需要对数据包进行截获和处理。
在windows平台下有许多数据包截获的方法。
按照所处的位置的不同可以分为用户态的截包技术和核心态的截包技术。
核心态的截包技术实现困难,安全性要求很高,一不小心就可能破坏系统。
用户态的截包技术实现起来比较方便,因为处于应用层,所以数据包是完整的,容易实现对内容的过滤[1]。
基于SPI的截包技术是一种工作在用户态的截包技术,它以其实现简单,安全性高,能拦截大部分网络数据包等优点,成为了许多网络应用系统的首选。
本文提出了一种基于WINSOCK 2 SPI 技术的数据包截获平台,利用此平台能够方便和快捷地实现诸如防火墙、入侵检测、URL过滤等基于数据包分析处理的网络应用系统。
2.SPI技术简介SPI的全称是winsock2 service provider interface,即winsock2 服务提供者接口,它是winsock2 API的补充。
几乎每一个winsock2 API都有对应的winsock2 SPI。
Winsock2符合开放服务系统(Windows Open Service Architecture,WOSA)模式.此体系允许第三方服务提供者的插入,而客户应用程序和Winsock2 DLL可以不用做任何的修改[2]。
整个Winsock2体系结构如图1所示,此体系实现由上而下的调用方式。
从图中用户可以看到SPI工作在体系的最底层,它向上实现对winsock2 API提供服务,向下实现具体的完成网络调用过程。
SPI由两部分组成――传输服务提供者(Transport Service Provider)和命名空间服务提供者(Namespace Service Provider)。
命名空间服务提供者把一个网络协议的地址属性和一个或多个用户友好名关联到一起,以便启用与协议无关的名字解析方案[3],如gethostbyname该API 就是由命名空间服务提供者Winsock 2 应用程序Winsock 2 API Winsock 2 DLL(WS2_32.Dll)Winsock 2 传输服务提供者Winsock 2命名空间服务提供者基础传输服务提供者基础传输服务提供者命名空间服务提供者命名空间服务提供者图1 Winsock2 结构传输服务提供者主要提供建立连接、传输数据、行驶流控制、出错控制等服务[3]。
如Winsock2 API中的Accept,Bind,Connect,Send等函数分别对应与传输服务提供者中的WSPAccept,WSPBind,WSPConnect,WSPSend等函数,也就是说,调用Winsock2 API中的Accept,Bind,Connect,Send等实际上就是调用传输服务提供者中的WSPAccept,WSPBind,WSPConnect,WSPSend等函数。
传输服务提供者又可以分为基础服务提供者(Base Service Provider简称BSP)和分层服务提供者(Layer Service Provider简称LSP)。
基础服务提供者实现传输协议的真正细节,它导出Winsock接口,此接口直接实现协议。
分层服务提供者位于其他的分层服务提供者或基础服务提供者之上,它依靠现存的下层的服务提供者实现实际的数据交换,从而实现更高层的定制通讯函数。
3.数据包截获平台的实现3.1 总体设计思路此数据包截获平台主要的功能是要实现数据包的拦截和数据包处理等工作,并向网络应用程序提供操作此平台的函数接口。
总的来说,此数据包截获平台主要包括以下几个部分:一个分层服务提供者的DLL,一个包含安装和卸载分层服务提供者的函数的封装类,一个负责数据包处理的函数,一个共享内存块和一个存储规则表的文件。
它们之间的关系可由图2表示。
图2 截获平台模块之间的关系图3.2 分层服务提供者的DLL所有的服务提供者都以DLL形式存在,用户自己写的分层服务提供者(LSP)也必须写成DLL形式。
每个LSP必须实现和导出WSPStartup函数,在WSPStartup函数中要完成对下层服务提供者的加载,并调用下层服务提供者的WSPStartup函数,从而得到包含下层函数地址的lpProcTable表。
将lpProcTable某些用户需要挂钩的函数(如WSPSendTo)的指针指向用户自己编写的LSP中重写的函数,再在用户自己重写的函数中调用下层服务提供者的函数来完成实际的操作。
3.3 封装类该封装类主要提供一些接口函数,便于应用程序对平台的操作。
该类中主要的成员函数以及它们的作用见表1。
表1 封装类成员函数表函数名称返回值类型主要参数类型说明GetProviderInfo int:返回结构体的个数LP WSAPROTOCOL_INFO:一个指向存放协议完整信息的结构体指针此函数获取安装在本系统中的所有协议的完整信息的枚举FreeProviderInfo void LP WSAPROTOCOL_INFO:上面函数获取的指针此函数存放指向协议信息枚举的内存空间InstallLSP int:错误代码WCHAR *:要安装的DLL的路径此函数将用户自己编写好的LSP安装到系统winsock目录下RemoveLSP void void 此函数从系统中卸载用户自己编写的LSPInsertRule int:可能的错误void *,int:指向要添加的规则的指针此函数向平台添加规则,它实际上是向共享内存块添代码:规则的长度加定长的数据DeleteRule int:可能的错误代码int,int:要删除的规则在规则库中的位置:规则的长度此函数从平台删除规则,它实际上是从共享内存块移除定长的数据SPI提供3种协议,它们是基础协议、分层协议和协议链。
基础协议是能够独立、安全地和远端实现数据通讯的协议;分层协议在基础协议之上,它通过调用下层的协议实现更高级的通讯服务。
协议链是将一系列的基础协议和分层协议按照特定的顺序连接在一起的链状结构,基础协议和分层协议在协议链里的顺序关系体现了它们之间的调用关系[2]。
所以安装一个LSP主要包括安装一个分层协议和安装一个协议链。
分层协议存放LSP 的信息,协议链存放LSP对下层服务提供者的调用关系。
在此基础上,还需要对系统中所有的协议重新排序,使用户自己编写的LSP能够首先被调用。
3.4数据包处理函数数据包处理函数在所有用户截获的函数中被调用,它在DLL中实现。
用户截获的函数中,在调用下层服务提供者相应的函数前可以先调用该数据包处理函数,根据此函数返回值决定是阻止数据包的发送还是放行数据包的发送或者进行其它的处理。
该函数的实现可以根据应用领域的不同而有不同的实现方式。
该函数的原型如下:bool PacketCheck (SOCKET s,LPWSABUF lpBuffers,DWORD dwBufferCount,const struct sockaddr FAR * lpAddr,CString FuncName) ;参数:s:套接字lpBuffers:存放数据包数据的缓冲区dwBufferCount:缓冲区大小lpAddr:指向一个SOCKADDR结构的指针FuncName:调用此函数的函数名称返回值:表示对数据包的操作是丢弃还是放行,true为丢弃,false为放行。
该函数根据以上各个参数的值的不同来查找对应的规则表项,看数据包中的数据是否符合规则表项,如符合则丢弃,否则放行。
3.5共享内存块和存储规则表的文件在某些应用中常常会用到一个规则表,如防火墙的规则表,对规则表的管理常常也称为这类应用系统的重要组成部分。
规则表平时以文件的形式存放在磁盘目录下。
在平台运行时,4应用举例要将此平台应用到某个特定的网络应用系统,只要修改数据包处理函数,实现具体的数据包处理过程。
在此基础上,还需根据应用需要实现一些方便用户操作的图形界面接口和其它一些附属功能。
下面以防火墙为例介绍一下此平台的具体使用方法。
防火墙的整体结构如图3所示,它主要由用户图形接口、报警和日志、数据包截获平台等几个模块构成。
图3 防火墙结构图用户图形接口模块提供友好的用户操作接口,方便用户对该防火墙的操作。
用户对图形接口的操作最终通过调用数据包截获平台中的封装类的成员函数来完成。
报警和日志模块完成向用户报告异常情况和保存异常情况的功能。
数据包截获平台完成具体的数据包截获和处理的功能,这是防火墙的核心模块[4]。
只需要修改数据包处理函数,实现具体的处理过程,就能把作者提出的数据包截获平台应用到防火墙系统中。
防火墙的数据包处理函数中要判断目的端口号、目的IP地址、协议类型等是否和防火墙规则表中的规则匹配,从而决定是否是阻止还是放行。
如果匹配且规则中表明的操作是丢弃,则处理函数通知服务提供者丢弃此包;如果匹配且规则中表明的操作是放行,则处理函数通知服务提供者放行此包;如果不匹配,则处理函数通过调用报警和日志模块向用户发出告警并纪录异常情况,由用户决定对此包的操作。
防火墙中还需要有一个描述防火墙规则的数据结构,由它描述规则表中各个字段的意义。
表2 防火墙规则表规则编号协议类型源IP 目的IP 源端口目的端口操作10.11.19.2060 21 0 丢弃1 TCP2 TCP 0 10.11.19.10 80 放行3 UDP 0 10.11.19.10 80 放行5结论实验证明利用此数据包截获平台能够方便和快捷地实现基于数据包分析的网络应用系统,实现的系统有比较好的稳定性和较高的效率,并能够截获主要的网络封包。
但是,由于它只能处理TCP、UDP、IP等这些SOCKET类型的包,对于像ICMP、IGMP这样的IP层的数据包此数据包截获平台就无能为力了。
如果能在核心态对数据包截获一次,处理掉类如ICMP、IGMP这样的较底层的数据包后,然后在应用层用SPI技术再截获一次,处理应用层的数据包,那样会达到更加完美的效果。
参考文献[1] 王诚 庄卫华. Windows平台截包技术研究[OL]., 2006.9.6[2] 张越. Visual C++网络程序设计实例详解[M]. 北京:人民邮电出版社,2006.[3] 朱雁辉. Windows 防火墙与网络封包截获技术[M]. 北京:电子工业出版社,2002.[4] 罗改龙 程胜利. 基于SPI 防火墙的研究与实现[J].交通与计算机,2007,25卷(2007年第1期):139-140Research And Realization Of SPI-Based Packet FilteringFlatYu Ke , Zhuang WeiHua, Lin QiaoComputer Application Department, HoHai Univ, NanJing (210098)Email:yuke1998@Abstract:This essay designed and realized a SPI-based packet filtering flat. With this packet filtering flat , you can realize many network applications such as firewall, IDS, Qos, Charging system of network flow, URL filter and so on without changing a lot . And more, this essay takes firewall as an example to introduce the way to use this packet filtering flat.Key words:SPI Network Packet LSP Winsock Catalog Packet Filtering Flat。