CN106293888A - 数据的抓包、存盘方法及数据的抓包、存盘装置 - Google Patents
数据的抓包、存盘方法及数据的抓包、存盘装置 Download PDFInfo
- Publication number
- CN106293888A CN106293888A CN201510303068.1A CN201510303068A CN106293888A CN 106293888 A CN106293888 A CN 106293888A CN 201510303068 A CN201510303068 A CN 201510303068A CN 106293888 A CN106293888 A CN 106293888A
- Authority
- CN
- China
- Prior art keywords
- packet
- thread
- deposit
- capturing
- internal memory
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种数据的抓包、存盘方法及数据的抓包、存盘装置。其中,该数据的抓包方法包括:从网口抓取第一数据包;在抓取的第一数据包中添加标识信息,得到第二数据包;以及将第二数据包写入内存。本发明解决了相关技术中由于抓包线程在申请锁时,如果此时存盘线程正在占用锁,这时抓包线程需要等待存盘线程释放锁,导致此时流经网口的数据包没有被抓取到而造成丢包的技术问题和由于锁本身属于操作***的资源,使得抓包线程在申请锁或者释放锁时需要耗费时间,导致在这段时间内流经网口的数据包没有抓取到而造成丢包的技术问题。
Description
技术领域
本发明涉及计算机领域,具体而言,涉及一种数据的抓包、存盘方法及数据的抓包、存盘装置。
背景技术
在相关技术中,从网口抓取数据包(比如IP包)并保存到硬盘,然后分析这些数据包,是一种常见的数据分析手段。如图1所示,采集服务器1’和互联网2’之间通过网口11’传输数据,采集服务器1’可以采集网口11’的数据并保存在硬盘12’中以供后续分析。
其中,在相关技术中,提供了两种“抓包->存盘”方案,分别为:单线程方案和双线程方案。
对于单线程方案,线程需要循环执行“抓包->存盘”这一过程。本方案的缺点在于:当线程正在执行存盘操作时,此时流经网口的数据包无法被抓取到,造成丢包。
对于双线程方案,两条线程共享同一内存,如图1所示,采用操作***的锁(或者互斥体、信号量等)机制来同步两条线程对内存的读写操作。其中,抓包线程从网口抓取数据包,接着申请锁,获得锁后,把数据包写到内存13’中,然后再释放锁;存盘线程则先申请锁,获得锁后,从内存13’读取数据包,接着将数据包保存到硬盘中,然后再释放锁。其具体流程如图2所示。本方案的缺点在于:一方面,抓包线程在申请锁的时候,如果此时存盘线程正在占用锁,这时抓包线程需要等待存盘线程释放锁,此时流经网口的数据包无法被抓取到,造成丢包;另一方面,由于锁(或者互斥体、信号量等)本身属于操作***的资源,抓包线程在申请锁或释放锁时,需要耗费时间,在这段时间内流经网口的数据包无法被抓取到,造成丢包。
针对上述的问题,目前尚未提出有效的解决方案。
发明内容
本发明实施例提供了一种数据的抓包、存盘方法及数据的抓包、存盘装置,以至少解决相关技术中由于抓包线程在申请锁时,如果此时存盘线程正在占用锁,这时抓包线程需要等待存盘线程释放锁,导致此时流经网口的数据包没有被抓取到而造成丢包的技术问题和由于锁本身属于操作***的资源,使得抓包线程在申请锁或者释放锁时需要耗费时间,导致在这段时间内流经网口的数据包没有抓取到而造成丢包的技术问题。
根据本发明实施例的一个方面,提供了一种数据的抓包方法,包括:从网口抓取第一数据包;在抓取的第一数据包中添加标识信息,得到第二数据包;以及将上述第二数据包写入内存。
进一步地,抓包线程从上述网口抓取上述第一数据包;上述抓包线程在上述抓取的第一数据包中添加上述标识信息,得到上述第二数据包;以及上述抓包线程将上述第二数据包写入上述内存。
进一步地,在上述抓包线程将上述第二数据包写入上述内存之后,上述抓包方法还包括:上述抓包线程判断是否结束线程;如果上述抓包线程判断出结束线程,则结束;和/或如果上述抓包线程判断出不结束线程,则上述抓包线程从上述网口抓取第三数据包。
根据本发明实施例的另一方面,还提供了一种数据的存盘方法,包括:从内存中读取第二数据包,上述第二数据包为在从网口抓取的第一数据包中添加了标识信息的数据包;以及将读取的第二数据包存储至硬盘中。
进一步地,存盘线程从上述内存中读取上述第二数据包;以及上述存盘线程将上述读取的第二数据包存储至上述硬盘中。
进一步地,在存盘线程从上述内存中读取上述第二数据包之后,上述存盘方法还包括:上述存盘线程根据上述标识信息判断上述第二数据包是否为被首次读取的数据包;如果上述存盘线程根据上述标识信息判断出上述第二数据包为被首次读取的数据包,则执行上述存盘线程将上述读取的第二数据包存储至上述硬盘中的步骤;和/或如果上述存盘线程根据上述标识信息判断出上述第二数据包不为被首次读取的数据包,则存盘线程从上述内存中读取第三数据包。
进一步地,上述存盘线程将上述读取的第二数据包存储至上述硬盘中之前,上述存盘方法还包括:上述存盘线程从上述第二数据包中删除上述标识信息,得到处理后的数据包,其中,上述存盘线程将上述处理后的第二数据包存储至上述硬盘中。
根据本发明实施例的又一个方面,提供了一种数据的抓包装置,包括:抓包单元,用于从网口抓取第一数据包;添加单元,用于在抓取的第一数据包中添加标识信息,得到第二数据包;以及写入单元,用于将上述第二数据包写入内存。
进一步地,上述抓包单元还用于使得抓包线程从上述网口抓取上述第一数据包;上述添加单元还用于使得上述抓包线程在上述抓取的第一数据包中添加上述标识信息,得到上述第二数据包;以及上述写入单元还用于使得上述抓包线程将上述第二数据包写入上述内存。
根据本发明实施例的再一方面,还提供了一种数据的存盘装置,包括:读取单元,用于从内存中读取第二数据包,上述第二数据包为在从网口抓取的第一数据包中添加了标识信息的数据包;以及存储单元,用于将读取的第二数据包存储至硬盘中。
在本发明实施例中,采用为抓取的数据包添加标识信息的方式,通过从网口抓取第一数据包;在抓取的第一数据包中添加标识信息,得到第二数据包;以及将第二数据包写入内存,达到了避免使用锁而导致数据包丢包的目的,从而实现了降低数据丢包率的技术效果,进而解决了相关技术中由于抓包线程在申请锁时,如果此时存盘线程正在占用锁,这时抓包线程需要等待存盘线程释放锁,导致此时流经网口的数据包没有被抓取到而造成丢包的技术问题和由于锁本身属于操作***的资源,使得抓包线程在申请锁或者释放锁时需要耗费时间,导致在这段时间内流经网口的数据包没有抓取到而造成丢包的技术问题。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据现有技术的一种数据的抓包/存盘的网络拓扑图;
图2是根据现有技术的一种数据的双线程抓包/存盘方法的流程图;
图3是根据本发明实施例的一种数据的抓包方法的流程图;
图4是根据本发明实施例的一种数据的存盘方法的流程图;
图5是根据本发明实施例的一种数据的抓取装置的示意图;以及
图6是根据本发明实施例的一种数据的存盘装置的示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、***、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
在详细阐述本发明之前,先对以下术语进行详细解释:
线程是指进程中的一个实体,是被***独立调度和分派的基本单位,线程自己不拥有***资源,同一进程的不同线程共享该进程的资源。
锁是指操作***提供的一种线程同步机制。不同的线程在对同一资源进行读写操作时,为了保证数据的完整性,有可能会用到锁来进行同步。某一线程读(或者写)资源前先申请锁,读(或者写)完资源后再释放锁。
Memcopy函数是C++语言的一个库函数,用于内存拷贝,比如,将内存A中的数据拷贝到内存B中。该函数具有原子性,执行该函数时,能够保证此时只有本线程在操作内存A和内存B,从而保证内存A和内存B的数据的完整性。另外,memcopy函数仅仅是少量的几条CPU指令,执行起来效率极高。
实施例1
根据本发明实施例,提供了一种数据的抓包方法的方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机***中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
图3是根据本发明实施例的一种数据的抓包方法的流程图,如图3所示,该方法包括如下步骤:
步骤S302,从网口抓取第一数据包;
步骤S304,在抓取的第一数据包中添加标识信息,得到第二数据包;以及
步骤S306,将第二数据包写入内存。
实施时,采集服务器在一个线程中执行数据包抓取任务,即先从网口抓取来自互联网的第一数据包,再在抓取的第一数据包中添加标识信息以得到第二数据包,然后将该第二数据包写入本采集服务器的内存中;之后,采集服务器在另一个线程中执行数据包存盘任务,即先从内存中读取前述的第二数据包,再将读取的第二数据包存储至硬盘中。其中,标识信息为可以唯一标识第二数据包的字符串,例如可以为编号等。
也即,采集服务器在一个线程中从网口抓取数据包,接着为抓取的数据包添加编号信息以打包成一个新数据包,从而将新数据包写到内存中,然后采集服务器在这个线程中循环执行这些步骤;采集服务器在另一个线程中读取内存中的数据包(即前述的新数据包),并检测该数据包的编号,如果该编号的数据包之前尚未读取过,则将其存入硬盘中;如果该编号的数据包之前已经读取过,则忽略该数据包,然后采集服务器在这个线程中循环执行这些步骤。
一方面,由于存盘操作比抓包操作耗时短,使得抓包线程正在抓包时,能够保证存盘线程有足够的时间将抓包线程上次抓取的一个数据包存盘;另一方面,memcopy函数作为内存拷贝函数,将内存A中的数据拷贝到内存B中,该操作具有原子性,执行该函数时,能够保证此时只有本线程在操作内存A和内存B,从而保证内存A和内存B的数据的完整性。再一方面,memcopy函数只有少量的几条CPU指令,执行起来效率极高。因此,与相关技术中的普通抓包/存盘方法相比,采用本发明实施例可以大大降低丢包率,比如在高负载的网口使用本发明实施例,丢包率约为普通方法的1/100。需要说明的是,memcopy函数是C++语言的函数,它也可以采用其它语言的类似指令来实现。
通过本发明实施例,达到了避免使用锁而导致数据包丢包的目的,从而实现了降低数据丢包率的技术效果。
可选地,在本发明实施例中,前述的步骤S302至步骤S306的执行主体可以是采集服务器中的抓包线程,即,抓包线程从网口抓取第一数据包;抓包线程在抓取的第一数据包中添加标识信息,得到第二数据包;以及抓包线程将第二数据包写入内存。相应的,抓包线程循环执行抓包并将抓取的数据包存储在内存中的步骤的同时,存盘线程循环执行从内存中读取数据包并将其拷贝至硬盘中的步骤。
这样,采集服务器可以分别在两个线程中执行抓包操作和存盘操作,并且互不干扰,即保持了内存中数据的完整性,又降低了丢包率。
进一步可选地,在抓包线程将第二数据包写入内存之后,上述抓包方法还可以包括:
S2,抓包线程判断是否结束线程;
S4,如果抓包线程判断出结束线程,则结束;和/或
S6,如果抓包线程判断出不结束线程,则抓包线程从网口抓取第三数据包。其中,第三数据包为第一数据包的下一数据包,也即,如果抓包线程判断出不结束线程,则抓包线程继续从网口抓取下一数据包。
这样,抓包线程不仅可以在跳出指令的控制下,终止该线程,还可以循环执行抓包/存储(即,存至内存中)操作。
实施例2
根据本发明实施例,提供了一种数据的存盘方法的方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机***中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
图4是根据本发明实施例的一种数据的存盘方法的流程图,如图4所示,该方法包括如下步骤:
步骤S402,从内存中读取第二数据包,第二数据包为在从网口抓取的第一数据包中添加了标识信息的数据包;以及
步骤S404,将读取的第二数据包存储至硬盘中。
实施时,采集服务器在一个线程中执行数据包抓取任务,即先从网口抓取来自互联网的第一数据包,再在抓取的第一数据包中添加标识信息以得到第二数据包,然后将该第二数据包写入本采集服务器的内存中;之后,采集服务器在另一个线程中执行数据包存盘任务,即先从内存中读取前述的第二数据包,再将读取的第二数据包存储至硬盘中。
也即,采集服务器在一个线程中从网口抓取数据包,接着为抓取的数据包添加编号信息以打包成一个新数据包,从而将新数据包写到内存中,然后采集服务器在这个线程中循环执行这些步骤;采集服务器在另一个线程中读取内存中的数据包(即前述的新数据包),并检测该数据包的编号,如果该编号的数据包之前尚未读取过,则将其存入硬盘中;如果该编号的数据包之前已经读取过,则忽略该数据包,然后采集服务器在这个线程中循环执行这些步骤。
通过本发明实施例,达到了避免使用锁而导致数据包丢包的目的,从而实现了降低数据丢包率的技术效果。
可选地,在本发明实施例中,前述的步骤S402至步骤S404的执行主体可以是采集服务器中的存盘线程,即,存盘线程从内存中读取第二数据包;以及存盘线程将读取的第二数据包存储至硬盘中。其中,抓包线程循环执行抓包并将抓取的数据包存储在内存中的步骤的同时,存盘数据循环执行从内存中读取数据包并将其拷贝至硬盘中的步骤。
这样,采集服务器可以分别在两个线程中执行抓包操作和存盘操作,并且互不干扰,即保持了内存中数据的完整性,又降低了丢包率。
进一步可选地,在存盘线程从内存中读取第二数据包之后,上述存盘方法还可以包括:
S6,存盘线程根据标识信息判断第二数据包是否为被首次读取的数据包;
S8,如果存盘线程根据标识信息判断出第二数据包为被首次读取的数据包,则执行存盘线程将读取的第二数据包存储至硬盘中的步骤;和/或
S10,如果存盘线程根据标识信息判断出第二数据包不为被首次读取的数据包,则存盘线程从内存中读取第三数据包。
通过本发明实施例,采用分析标识信息的方式,存盘线程可以判断当前读取的数据包是否是首次被读取的数据包,如果是首次被读取的数据包,则将其拷贝至硬盘中,否则,则不处理,并继续读取内存中的其他数据。这样,可以防止同一数据被重复存储至硬盘中而导致硬盘空间浪费、硬盘数据盈余和拷贝数据的工作效率低等。
可选地,存盘线程将读取的第二数据包存储至硬盘中之前,上述存盘方法还可以包括:
S12,存盘线程从第二数据包中删除标识信息,得到处理后的数据包,其中,存盘线程将处理后的第二数据包存储至硬盘中。
这样,一方面,可以使得存盘线程实际存储至硬盘中的数据包与抓包线程实际抓取的数据包保持一致,另一方面,可以节约硬盘的存储空间,防止不必要数据(如标识信息)占用存储空间而导致资源浪费。
由于抓包线程与存盘线程相互不干扰,能够独立执行各自相应的步骤,因此本领域技术人员根据上述两个实施例的内容记载,可以轻松灵活地将实施例1抓包线程的步骤和实施例2存盘线程的步骤进行适当的部分或全部组合,由此获得更多的实施例,此处不再一一赘述。
实施例3
根据本发明实施例,提供了一种数据的抓包装置的装置实施例。
图5是根据本发明实施例的一种数据的抓取装置的示意图,该装置包括:抓包单元502、添加单元504和写入单元506。抓包单元502,用于从网口抓取第一数据包;添加单元504,用于在抓取的第一数据包中添加标识信息,得到第二数据包;以及写入单元506,用于将第二数据包写入内存。
实施时,采集服务器在一个线程中执行数据包抓取任务,即先从网口抓取来自互联网的第一数据包,再在抓取的第一数据包中添加标识信息以得到第二数据包,然后将该第二数据包写入本采集服务器的内存中;之后,采集服务器在另一个线程中执行数据包存盘任务,即先从内存中读取前述的第二数据包,再将读取的第二数据包存储至硬盘中。其中,标识信息为可以唯一标识第二数据包的字符串,例如可以为编号等。
也即,采集服务器在一个线程中从网口抓取数据包,接着为抓取的数据包添加编号信息以打包成一个新数据包,从而将新数据包写到内存中,然后采集服务器在这个线程中循环执行这些步骤;采集服务器在另一个线程中读取内存中的数据包(即前述的新数据包),并检测该数据包的编号,如果该编号的数据包之前尚未读取过,则将其存入硬盘中;如果该编号的数据包之前已经读取过,则忽略该数据包,然后采集服务器在这个线程中循环执行这些步骤。
一方面,由于存盘操作比抓包操作耗时短,使得抓包线程正在抓包时,能够保证存盘线程有足够的时间将抓包线程上次抓取的一个数据包存盘;另一方面,memcopy函数作为内存拷贝函数,将内存A中的数据拷贝到内存B中,该操作具有原子性,执行该函数时,能够保证此时只有本线程在操作内存A和内存B,从而保证内存A和内存B的数据的完整性。再一方面,memcopy函数只有少量的几条CPU指令,执行起来效率极高。因此,与相关技术中的普通抓包/存盘方法相比,采用本发明实施例可以大大降低丢包率,比如在高负载的网口使用本发明实施例,丢包率约为普通方法的1/100。需要说明的是,memcopy函数是C++语言的函数,它也可以采用其它语言的类似指令来实现。
通过本发明实施例,达到了避免使用锁而导致数据包丢包的目的,从而实现了降低数据丢包率的技术效果。
可选地,上述抓包单元还可以用于使得抓包线程从网口抓取第一数据包;上述添加单元还可以用于使得抓包线程在抓取的第一数据包中添加标识信息,得到第二数据包;以及上述写入单元还可以用于使得抓包线程将第二数据包写入内存。
这样,采集服务器可以分别在两个线程中执行抓包操作和存盘操作,并且互不干扰,即保持了内存中数据的完整性,又降低了丢包率。
进一步可选地,上述抓包装置还可以包括:第一判断单元,用于使得在抓包线程将第二数据包写入内存之后,抓包线程判断是否结束线程;结束单元,用于在抓包线程判断出结束线程时,结束;和/或,抓包单元还用于使得抓包线程判断出不结束线程时,抓包线程从网口抓取第三数据包。其中,第三数据包为第一数据包的下一数据包,也即,如果抓包线程判断出不结束线程,则抓包线程继续从网口抓取下一数据包
这样,抓包线程不仅可以在跳出指令的控制下,终止该线程,还可以循环执行抓包/存储(即,存至内存中)操作。
实施例4
根据本发明实施例,提供了一种数据的存盘装置的装置实施例。
图6是根据本发明实施例的一种数据的存盘装置的示意图,该装置包括:读取单元602和存储单元604。读取单元602用于从内存中读取第二数据包,第二数据包为在从网口抓取的第一数据包中添加了标识信息的数据包;以及存储单元604用于将读取的第二数据包存储至硬盘中。
实施时,采集服务器在一个线程中执行数据包抓取任务,即先从网口抓取来自互联网的第一数据包,再在抓取的第一数据包中添加标识信息以得到第二数据包,然后将该第二数据包写入本采集服务器的内存中;之后,采集服务器在另一个线程中执行数据包存盘任务,即先从内存中读取前述的第二数据包,再将读取的第二数据包存储至硬盘中。
也即,采集服务器在一个线程中从网口抓取数据包,接着为抓取的数据包添加编号信息以打包成一个新数据包,从而将新数据包写到内存中,然后采集服务器在这个线程中循环执行这些步骤;采集服务器在另一个线程中读取内存中的数据包(即前述的新数据包),并检测该数据包的编号,如果该编号的数据包之前尚未读取过,则将其存入硬盘中;如果该编号的数据包之前已经读取过,则忽略该数据包,然后采集服务器在这个线程中循环执行这些步骤。
通过本发明实施例,达到了避免使用锁而导致数据包丢包的目的,从而实现了降低数据丢包率的技术效果。
可选地,读取单元还可以用于使得存盘线程从内存中读取第二数据包;以及存储单元还可以用于使得存盘线程将读取的第二数据包存储至硬盘中。其中,抓包线程循环执行抓包并将抓取的数据包存储在内存中的步骤的同时,存盘数据循环执行从内存中读取数据包并将其拷贝至硬盘中的步骤。
这样,采集服务器可以分别在两个线程中执行抓包操作和存盘操作,并且互不干扰,即保持了内存中数据的完整性,又降低了丢包率。
进一步可选地,上述存盘装置还包括:第二判断单元,用于使得在存盘线程从内存中读取第二数据包之后,存盘线程根据标识信息判断第二数据包是否为被首次读取的数据包;存储单元还用于使得在存盘线程根据标识信息判断出第二数据包为被首次读取的数据包时,执行存盘线程将读取的第二数据包存储至硬盘中的步骤;和/或,读取单元还用于使得在存盘线程根据标识信息判断出第二数据包不为被首次读取的数据包时,存盘线程从内存中读取第三数据包。
通过本发明实施例,采用分析标识信息的方式,存盘线程可以判断当前读取的数据包是否是首次被读取的数据包,如果是首次被读取的数据包,则将其拷贝至硬盘中,否则,则不处理,并继续读取内存中的其他数据。这样,可以防止同一数据被重复存储至硬盘中而导致硬盘空间浪费、硬盘数据盈余和拷贝数据的工作效率低等。
可选地,上述存盘装置还可以包括:删除单元,用于使得存盘线程将读取的第二数据包存储至硬盘中之前,存盘线程从第二数据包中删除标识信息,得到处理后的数据包,其中,存储单元还用于使得存盘线程将处理后的第二数据包存储至硬盘中。
这样,一方面,可以使得存盘线程实际存储至硬盘中的数据包与抓包线程实际抓取的数据包保持一致,另一方面,可以节约硬盘的存储空间,防止不必要数据(如标识信息)占用存储空间而导致资源浪费。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (10)
1.一种数据的抓包方法,其特征在于,包括:
从网口抓取第一数据包;
在抓取的第一数据包中添加标识信息,得到第二数据包;以及
将所述第二数据包写入内存。
2.根据权利要求1所述的抓包方法,其特征在于,
抓包线程从所述网口抓取所述第一数据包;
所述抓包线程在所述抓取的第一数据包中添加所述标识信息,得到所述第二数据包;以及
所述抓包线程将所述第二数据包写入所述内存。
3.根据权利要求2所述的抓包方法,其特征在于,在所述抓包线程将所述第二数据包写入所述内存之后,所述抓包方法还包括:
所述抓包线程判断是否结束线程;
如果所述抓包线程判断出结束线程,则结束;和/或
如果所述抓包线程判断出不结束线程,则所述抓包线程从所述网口抓取第三数据包。
4.一种数据的存盘方法,其特征在于,包括:
从内存中读取第二数据包,所述第二数据包为在从网口抓取的第一数据包中添加了标识信息的数据包;以及
将读取的第二数据包存储至硬盘中。
5.根据权利要求4所述的存盘方法,其特征在于,
存盘线程从所述内存中读取所述第二数据包;以及
所述存盘线程将所述读取的第二数据包存储至所述硬盘中。
6.根据权利要求5所述的存盘方法,其特征在于,在存盘线程从所述内存中读取所述第二数据包之后,所述存盘方法还包括:
所述存盘线程根据所述标识信息判断所述第二数据包是否为被首次读取的数据包;
如果所述存盘线程根据所述标识信息判断出所述第二数据包为被首次读取的数据包,则执行所述存盘线程将所述读取的第二数据包存储至所述硬盘中的步骤;和/或
如果所述存盘线程根据所述标识信息判断出所述第二数据包不为被首次读取的数据包,则存盘线程从所述内存中读取第三数据包。
7.根据权利要求5所述的存盘方法,其特征在于,所述存盘线程将所述读取的第二数据包存储至所述硬盘中之前,所述存盘方法还包括:
所述存盘线程从所述第二数据包中删除所述标识信息,得到处理后的数据包,
其中,所述存盘线程将所述处理后的第二数据包存储至所述硬盘中。
8.一种数据的抓包装置,其特征在于,包括:
抓包单元,用于从网口抓取第一数据包;
添加单元,用于在抓取的第一数据包中添加标识信息,得到第二数据包;以及
写入单元,用于将所述第二数据包写入内存。
9.根据权利要求8所述的抓包装置,其特征在于,
所述抓包单元还用于使得抓包线程从所述网口抓取所述第一数据包;
所述添加单元还用于使得所述抓包线程在所述抓取的第一数据包中添加所述标识信息,得到所述第二数据包;以及
所述写入单元还用于使得所述抓包线程将所述第二数据包写入所述内存。
10.一种数据的存盘装置,其特征在于,包括:
读取单元,用于从内存中读取第二数据包,所述第二数据包为在从网口抓取的第一数据包中添加了标识信息的数据包;以及
存储单元,用于将读取的第二数据包存储至硬盘中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510303068.1A CN106293888A (zh) | 2015-06-04 | 2015-06-04 | 数据的抓包、存盘方法及数据的抓包、存盘装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510303068.1A CN106293888A (zh) | 2015-06-04 | 2015-06-04 | 数据的抓包、存盘方法及数据的抓包、存盘装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN106293888A true CN106293888A (zh) | 2017-01-04 |
Family
ID=57656583
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510303068.1A Pending CN106293888A (zh) | 2015-06-04 | 2015-06-04 | 数据的抓包、存盘方法及数据的抓包、存盘装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106293888A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107256180A (zh) * | 2017-05-19 | 2017-10-17 | 腾讯科技(深圳)有限公司 | 数据处理方法、装置及终端 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101783941A (zh) * | 2009-09-15 | 2010-07-21 | 上海海事大学 | 一种基于ip网络的实时视频传输方法 |
CN101841470A (zh) * | 2010-03-29 | 2010-09-22 | 东南大学 | 一种基于Linux的底层数据包的高速捕获方法 |
CN104184659A (zh) * | 2013-05-22 | 2014-12-03 | 上海贝尔股份有限公司 | 一种用于获取网络中数据包的方法与设备 |
CN104243344A (zh) * | 2014-10-11 | 2014-12-24 | 网宿科技股份有限公司 | 一种有效数据包捕获方法及请求重定向服务器 |
-
2015
- 2015-06-04 CN CN201510303068.1A patent/CN106293888A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101783941A (zh) * | 2009-09-15 | 2010-07-21 | 上海海事大学 | 一种基于ip网络的实时视频传输方法 |
CN101841470A (zh) * | 2010-03-29 | 2010-09-22 | 东南大学 | 一种基于Linux的底层数据包的高速捕获方法 |
CN104184659A (zh) * | 2013-05-22 | 2014-12-03 | 上海贝尔股份有限公司 | 一种用于获取网络中数据包的方法与设备 |
CN104243344A (zh) * | 2014-10-11 | 2014-12-24 | 网宿科技股份有限公司 | 一种有效数据包捕获方法及请求重定向服务器 |
Non-Patent Citations (1)
Title |
---|
何建敏: "《计算机应用软件开发基础》", 31 December 1994 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107256180A (zh) * | 2017-05-19 | 2017-10-17 | 腾讯科技(深圳)有限公司 | 数据处理方法、装置及终端 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105224692B (zh) | 支持多核处理器的sdn多级流表并行查找的***及方法 | |
CN104778222B (zh) | 基于usb存储设备的媒体库建立及更新方法 | |
CN104699422B (zh) | 缓存数据的确定方法及装置 | |
CN104063293B (zh) | 一种数据备份方法及流计算*** | |
CN104821924B (zh) | 一种网络数据包处理方法、装置和网络处理设备 | |
CN107391280A (zh) | 一种小文件的接收和存储方法及装置 | |
CN103227778B (zh) | 内存访问方法、设备和*** | |
CN106557272B (zh) | 一种高效的传感器历史数据归档方法 | |
CN102549552A (zh) | 用于处理流感知网络节点中的数据分组的方法 | |
CN104866528B (zh) | 多平台数据采集方法及*** | |
CN106776456B (zh) | 基于fpga+npu的高速正则表达式匹配混合***及方法 | |
CN103559017B (zh) | 基于gpu异构计算平台的字符串匹配方法及*** | |
CN103488717B (zh) | 一种无锁数据汇聚方法及装置 | |
CN108183893A (zh) | 一种分片包检测方法、检测装置、存储介质和电子设备 | |
CN106407224A (zh) | 一种键值存储***中文件压实的方法和装置 | |
CN104899161B (zh) | 一种基于云存储环境的连续数据保护的缓存方法 | |
CN106330788B (zh) | 报文分片传输方法和装置 | |
CN107357630A (zh) | 一种实现虚拟机同步的方法、装置和存储介质 | |
CN110231995A (zh) | 一种基于Actor模型的任务调度方法、装置及存储介质 | |
CN103858393B (zh) | 用于包的并行处理的包处理电路 | |
CN107864391A (zh) | 视频流缓存分发方法及装置 | |
CN106407226B (zh) | 一种数据处理方法、备份服务器及存储*** | |
CN101594201B (zh) | 链式队列管理结构整合错误数据过滤的方法 | |
CN104050193A (zh) | 生成报文的方法和实现该方法的数据处理*** | |
CN103064749B (zh) | 一种进程间通信方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Address after: 100083 No. 401, 4th Floor, Haitai Building, 229 North Fourth Ring Road, Haidian District, Beijing Applicant after: Beijing Guoshuang Technology Co.,Ltd. Address before: 100086 Cuigong Hotel, 76 Zhichun Road, Shuangyushu District, Haidian District, Beijing Applicant before: Beijing Guoshuang Technology Co.,Ltd. |
|
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20170104 |