基于VFS扫描网络传输数据的方法及系统技术方案

技术编号:9740150 阅读:65 留言:0更新日期:2014-03-06 23:40
本发明专利技术提供一种基于VFS扫描网络传输数据的方法及系统,其中的方法包括,在内存中通过VFS系统调用预定义的函数在内存中创建内存队列;向内存队列分次写入数据;从内存队列中读取本次写入的数据,如果本次写入的数据读取成功,则对上一次写入内存队列并通过安全扫描的数据进行转发,同时对本次写入的数据进行安全扫描;如果本次写入的数据读取失败,则将本次读取数据的程序挂起。利用本发明专利技术,可以通过虚拟文件系统系统调用自定义的函数对网络传输数据进行操作,网络传输数据一直被当作一个整体处理,因此,文件不用缓存完整才能被转发,可以边扫描边转发,并且消耗的内存等同于基于文件块扫描消耗的内存,同时,又达到基于数据流扫描的效果。

【技术实现步骤摘要】
基于VFS扫描网络传输数据的方法及系统
本专利技术涉及无线网络领域,更为具体地,涉及一种基于VFS扫描网络传输数据的方法及系统。
技术介绍
当前对于网络传输数据进行的安全性\合法性检测,主要分为两大类,一类是基于数据流扫描,一类是基于文件块扫描。对于HTTP等高响应需求的应用,如果使用基于文件块扫描传输中的大数据,例如下载的附件、视频流等,需要将该些附件和视频流先完整的保存到本地后,才能对其进行扫描,在扫描没有完成前,保存的数据不能被转发,导致网络传输延时。而基于数据流扫描的实现技术相对复杂,并且对比基于文件块扫描更消耗内存。因此,需要一种全新的扫描网络传输数据的方法。
技术实现思路
鉴于上述问题,本专利技术的目的是提供一种基于VFS扫描网络传输数据的方法及系统,已解决现有技术中采用基于数据流扫描网络传输数据时消耗内存大的问题和采用基于文件块扫描网络传输数据时造成网络传输延时的问题。本专利技术提供一种基于VFS扫描网络传输数据的方法,包括:在内存中通过VFS系统调用预定义的函数对网络传输的数据进行操作,该操作包括:在内存中创建内存队列;向内存队列分次写入数据;从内存队列中读取本次写入的数据,如果本次写入的数据读取成功,则对上一次写入内存队列并通过安全扫描的数据进行转发,同时对本次写入的数据进行安全扫描;如果本次写入的数据读取失败,则将读取本次写入的数据的程序挂起。本专利技术还提供一种基于VFS扫描网络传输数据的系统,用于在内存中通过VFS系统调用预定义的函数对网络传输的数据进行操作,该系统包括:内存队列创建单元,用于在内存中创建内存队列;数据写入单元,用于向内存队列写入数据;数据读取单元,用于从内存队列读取写入的数据;安全扫描单元,用于对读取成功的数据进行安全扫描;程序挂起单元,用于将读取数据失败的程序挂起;数据转发单元,对上一次写入内存队列并通过安全扫描的数据进行转发。利用上述根据本专利技术的基于VFS扫描网络传输数据的方法及系统,通过虚拟文件系统(VFS)系统调用自定义的函数对网络传输数据进行操作,网络传输数据一直被当作一个整体处理,因此,文件不用缓存完整才能被转发,可以边扫描边转发,并且消耗的内存等同于基于文件块扫描消耗的内存,同时,又达到基于数据流扫描的效果。为了实现上述以及相关目的,本专利技术的一个或多个方面包括后面将详细说明并在权利要求中特别指出的特征。下面的说明以及附图详细说明了本专利技术的某些示例性方面。然而,这些方面指示的仅仅是可使用本专利技术的原理的各种方式中的一些方式。此外,本专利技术旨在包括所有这些方面以及它们的等同物。【附图说明】通过参考以下结合附图的说明及权利要求书的内容,并且随着对本专利技术的更全面理解,本专利技术的其它目的及结果将更加明白及易于理解。在附图中:图1为基于文件块扫描的流程图;图2为虚拟文件系统(VFS)的逻辑结构图;图3为根据本专利技术的基于VFS扫描网络传输数据的方法的流程图;图4为根据本专利技术的基于VFS扫描网络传输数据的方法的具体流程图;图5为根据本专利技术实施例的基于VFS扫描网络传输数据的方法的流程图;图6为根据本专利技术实施例的基于VFS扫描网络传输数据的系统的逻辑结构图。在所有附图中相同的标号指示相似或相应的特征或功能。【具体实施方式】在下面的描述中,出于说明的目的,为了提供对一个或多个实施例的全面理解,阐述了许多具体细节。然而,很明显,也可以在没有这些具体细节的情况下实现这些实施例。在其它例子中,为了便于描述一个或多个实施例,公知的结构和设备以方框图的形式示出。对于基于文件块扫描的方式,首先需要扫描程序打开文件,然后通过Iibc库或者其他语言库调用Linux底层的系统调用(syscall) open/read/write三个函数来对数据进行操作,如图1所示,基于文件块的方式最大的缺陷就是扫描程序对数据的处理必须一次处理完,无法针对该次处理进行中间状态的保存,而基于数据流的扫描却能针对当前状态进行保存,当再来数据时,可以接着之前保存的状态进行接下去的处理。本专利技术的解决思路就在于对数据的操作上。首先,需要说明系统调用open/read/write函数的实现,Linux有一个称为VFS的虚拟文件系统,如图2所示,所有对于数据的操作系统调用到内核底层,会根据不同的文件系统,找对应不同的实现,文件系统可以自己定义,所以相应的实现也可以自己定义,也就是说,Linux提供了一种实现叫VFS,使用相同的文件系统,可以最终调用到自己定义的函数上。实现自己想实现的功能。本专利技术的专利技术点就在于利用Linux的虚拟文件系统的特点定义了自己的操作函数,将对需要缓存的数据所进行的操作通过VFS进行了重新定义,也就是说,扫描程序还是调用文件系统,文件系统系统调用open/read/write函数,但执行到内核最低层,从原来的磁盘操作,变成了我们自己定义的内存操作。以下将结合附图对本专利技术的具体实施例进行详细描述。图3示出了根据本专利技术的基于VFS扫描网络传输数据的方法的流程。如图3所示,本专利技术自定义的三个函数分别为Ne_open/Ne_read/Ne_write, Ne_open函数对应open函数,Ne_read函数对应read函数,Ne_write函数对应write函数,对比图1,现有技术对数据的打开、写入和读取操作全部由扫描程序执行,而在本专利技术中,数据的打开和读取操作由扫描程序执行,而数据的写入操作由转发程序执行,通过转发程序分担扫描程序的工作,可以降低扫描程序的负担,加快扫描程序的运行速度,更有效的处理数据。通过上述的这种配合,让扫描程序感觉运行的时候一直都是一个完整的数据被处理,中间没有被其他事物打扰过,而对于转发程序来说,数据不用缓存完整才能被转发,可以边扫描边转发。图4示出了根据本专利技术的基于VFS扫描网络传输数据的方法的具体流程。如图4所示,通过VFS系统调用自定义的函数在内存中对网络传输的数据进行操作,该操作包括:首先,在内存中创建内存队列(步骤S410);然后,向内存队列分次写入数据(步骤S420);从内存队列中读取本次写入的所述数据(步骤S430);如果本次写入的数据读取成功,则对上一次写入内存队列并通过安全扫描的数据进行转发,同时对本次写入的数据进行安全扫描;如果本次写入的数据读取失败,则将本次读取数据的程序挂起(步骤S440)。需要说明的是,创建内存队列和写入数据是在转发程序中进行的,而打开内存队列和读取数据是在扫描程序中进行的,在不改变扫描程序和转发程本身的情况下,对数据进行操作。为了更详细的说明本专利技术的基于VFS扫描网络传输数据的方法,图5示出了根据本专利技术实施例的基于VFS扫描网络传输数据的方法的流程。如图5所示,本 专利技术实施例的基于VFS扫描网络传输数据的方法包括:步骤S500:转发程序通过VFS调用Ext2文件系统,Ext2文件系统系统在内存中创建内存队列;具体地,作为示例,在内存创建一个先进先出队列,也就是FIFO队列,创建FIFO队列可以有多种方法,本专利技术不做限制。步骤S510:扫描程序通过VFS调用Ext2文件系统,Ext2文件系统系统调用自定义的Ne_open函数打开步骤S500中创建的内存队列。需要说明的是,Ext2文件系统打开文件的方式不变,还是通过系统调用open函本文档来自技高网...

【技术保护点】
一种基于VFS扫描网络传输数据的方法,包括:在内存中通过VFS系统调用预定义的函数对网络传输的数据进行操作,所述操作包括:在内存中创建内存队列;向所述内存队列分次写入数据;从所述内存队列中读取本次写入的数据,如果本次写入的所述数据读取成功,则对上一次写入所述内存队列并通过安全扫描的数据进行转发,同时对本次写入的所述数据进行安全扫描;如果本次写入的所述数据读取失败,则将读取本次写入的所述数据的程序挂起。

【技术特征摘要】
1.一种基于VFS扫描网络传输数据的方法,包括: 在内存中通过VFS系统调用预定义的函数对网络传输的数据进行操作,所述操作包括: 在内存中创建内存队列; 向所述内存队列分次写入数据; 从所述内存队列中读取本次写入的数据,如果本次写入的所述数据读取成功,则对上一次写入所述内存队列并通过安全扫描的数据进行转发,同时对本次写入的所述数据进行安全扫描;如果本次写入的所述数据读取失败,则将读取本次写入的所述数据的程序挂起。2.如权利要求1所述的基于VFS扫描网络传输数据的方法,在从内存队列中读取本次写入的数据的过程中, 根据预设的数据长度对本次写入的所述数据进行判定,如果本次写入的所述数据的长度大于或等于预设的数据长度,则判定本次写入的所述数据读取成功;如果本次写入的所述数据的长度小于预设的数据长度,则记录需续读的数据长度,将读取本次写入所述数据的程序挂起。3.如权利要求2所述的基于VFS扫描网络传输数据的方法, 再次向内存队列写入数据时,检测是否有读取数据的程序挂起,如果有读取数据的程序挂起,则在所述内存队列写入数据后,判断写入的所述数据的长度是否大于或等于需续读的数据长度,如果写入的所述数据的长度大于或等于需续读的数据长度,则唤醒挂起的读取数据的程序。4.如权利要求3所述的基于VFS扫描网络传输数据的方法,在判断写入的数据的长度是否大于或等于需续读的数据长度的过程中, 如果写入的数据的长度小于需续读的数据长度,则不唤醒挂起的读取数据的程序,直到写入的数据的长度大于或等于需续读的数据长度为止,唤醒挂起的读取数据的程序,其中,需续读的数据长度随着每次写入的数据的长度而递减,直到写入的数据的...

【专利技术属性】
技术研发人员:陈静相
申请(专利权)人:东软集团股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1