一种数据包检测方法、装置、系统、设备和存储介质与流程

文档序号:17488619发布日期:2019-04-23 20:12阅读:153来源:国知局
本发明实施例涉及互联网通信技术,尤其涉及一种数据包检测方法、装置、系统、设备和存储介质。
背景技术
::随着互联网的快速发展,数据传输量逐渐增大和网络组成也日益复杂,从而网络发生拥塞的可能性也越来越大。因此,对数据传输过程中,丢包检测技术变得尤为重要,以检测数据丢包率。传统的因特网包探索器(packetinternetgroper,ping)丢包检测技术利用internet控制报文协议(internetcontrolmessageprotocol,icmp)进行丢包检测,即源主机发送icmp回送请求消息至目的主机,目的主机必须返回icmp回送应答信息给源主机,从而源主机根据发送请求和应答请求计算出丢包率。但由于防火墙会屏蔽icmp协议,并且常使用的是传输控制协议(transmissioncontrolprotocol,tcp)和用户数据报协议(userdatagramprotocol,udp),以及icmp协议只能检测到主机,而无法具体到主机的端口号。若使用ping丢包检测技术进行丢包检测,会造成丢包检测准确度低。针对传统ping丢包检测技术的缺陷,提出了tcpping丢包检测技术。图1是现有技术中tcp三次握手建立连接的通信示意图。在如图1所示的tcp三次握手建立连接的基础上,发展出的半连接技术进行丢包检测,图2是现有技术中目的主机端口处于打开状态时半连接的通信示意图。具体是:源主机向目的主机发送同步序列编号(synchronizesequencenumbers,syn)包,如果目的主机端口处于打开状态,目的主机向源主机回应syn消息和确认字符(acknowledgement,ack)组成的syn+ack包,如图2所示;图3是现有技术中目的主机端口处于关闭状态时半连接的通信示意图,如果目的主机端口处于关闭状态,则目的主机向源主机回应连接重置(reset,rst)消息或者rst+ack包,如图3所示;然后对源主机向目的主机发送的数据包和目的主机向源主机返回的回包的数量进行计算,以得到数据丢包率。但源主机只根据源主机向目的主机发送的数据包数量和目的主机向源主机返回的回包数量计算数据丢包率,从而无法确定是上行数据丢包还是下行数据丢包。技术实现要素:本发明提供一种数据包检测方法、装置、系统、设备和存储介质,以解决现有技术中在对数据包进行检测时,无法确定是上行数据丢包还是下行数据丢包的技术问题。第一方面,本发明实施例提供了一种数据包检测方法,该方法包括:将通过本机进程封装的数据包发送给目的主机,所述数据包携带空置的目的主机收包字段和目的主机发包字段;通过用户态进程接收所述目的主机的回包,所述回包中的目的主机收包字段携带目的主机的收包个数和所述目的主机发包字段携带目的主机的发包个数;根据本机的发包个数和目的主机的收包个数,确定下行数据丢包率;根据本机的收包个数和目的主机的发包个数,确定上行数据丢包率。进一步的,在所述将通过本机进程封装的数据包发送给目的主机之前,还包括:对本机设置防火墙规则,以确定目的主机;所述防火墙规则包括本机对应的源端口和目的主机对应的目的端口。进一步的,所述防火墙规则为iptables防火墙规则。进一步的,所述通过用户态进程接收所述目的主机的回包,包括:通过所述防火墙拦截目的主机的回包,并存储到nfqueue队列;从所述nfqueue队列中读取所述目的主机的回包。进一步的,所述将通过本机进程封装的数据包发送给目的主机,包括:本机进程通过原始套接字对数据进行封装,以得到数据包;将所述数据包发送给目的主机。进一步的,在根据本机的发包个数和目的主机的收包个数,确定下行数据丢包率之前,还包括:获取本机的发包个数和本机的收包个数。第二方面,本发明实施例提供了一种数据包检测方法,该方法包括:通过用户态进程接收源主机发送的数据包,所述数据包携带空置的目的主机收包字段和目的主机发包字段;将本机对所述数据包的收包个数配置在所述目的主机的收包字段中,将本机待发送回包的发包个数配置在所述目的主机的发包字段中,并将配置好的收包字段和发包字段以及数据封装,得到回包;将所述回包发送至所述源主机,以使所述源主机根据源主机的发包个数和目的主机的收包个数,确定下行数据丢包率;根据源主机的收包个数和目的主机的发包个数,确定上行数据丢包率。进一步的,在通过用户态进程接收源主机发送的数据包之前,还包括:对本机设置防火墙规则,以确定源主机;所述防火墙规则包括源主机对应的源端口和本机对应的目的端口。进一步的,所述防火墙规则为iptables防火墙规则。进一步的,所述通过用户态进程接收源主机发送的数据包,包括:通过所述防火墙拦截源主机发送的数据包,并存储到nfqueue队列;从所述nfqueue队列中读取所述源主机发送的数据包。第三方面,本发明实施例提供了一种数据包检测装置,该装置包括:数据包发送模块,用于将通过本机进程封装的数据包发送给目的主机,所述数据包携带空置的目的主机收包字段和目的主机发包字段;回包接收模块,用于通过用户态进程接收所述目的主机的回包,所述回包中的目的主机收包字段携带目的主机的收包个数和所述目的主机发包字段携带目的主机的发包个数;丢包率确定模块,用于根据本机的发包个数和目的主机的收包个数,确定下行数据丢包率;根据本机的收包个数和目的主机的发包个数,确定上行数据丢包率。进一步的,所述数据包检测装置,还包括:目的主机确定模块,用于对本机设置防火墙规则,以确定目的主机;所述防火墙规则包括本机对应的源端口和目的主机对应的目的端口。进一步的,所述防火墙规则为iptables防火墙规则。进一步的,所述回包接收模块,包括:回包存储单元,用于通过所述防火墙拦截目的主机的回包,并存储到nfqueue队列;回包读取单元,用于从所述nfqueue队列中读取所述目的主机的回包。进一步的,所述数据包发送模块,包括:数据包封装单元,用于本机进程通过原始套接字对数据进行封装,以得到数据包;数据包发送单元,用于将所述数据包发送给目的主机。进一步的,所述数据包检测装置,还包括:获取模块,用于获取本机的发包个数和本机的收包个数。第四方面,本发明实施例提供了一种数据包检测装置,该装置包括:数据包接收模块,用于通过用户态进程接收源主机发送的数据包,所述数据包携带空置的目的主机收包字段和目的主机发包字段;回包确定模块,用于将本机对所述数据包的收包个数配置在所述目的主机的收包字段中,将本机待发送回包的发包个数配置在所述目的主机的发包字段中,并将配置好的收包字段和发包字段以及数据封装,得到回包;回包发送模块,用于将所述回包发送至所述源主机,以使所述源主机根据源主机的发包个数和目的主机的收包个数,确定下行数据丢包率;根据源主机的收包个数和目的主机的发包个数,确定上行数据丢包率。进一步的,所述数据包检测装置,还包括:源主机确定模块,用于对本机设置防火墙规则,以确定源主机;所述防火墙规则包括源主机对应的源端口和本机对应的目的端口。进一步的,所述防火墙规则为iptables防火墙规则。进一步的,所述数据包接收模块,包括:数据包存储单元,用于通过所述防火墙拦截源主机发送的数据包,并存储到nfqueue队列;数据包读取单元,用于从所述nfqueue队列中读取所述源主机发送的数据包。第五方面,本发明实施例提供了一种数据包检测系统,包括:源主机和目的主机,所述源主机配置如第三方面所述的数据包检测装置,所述目的主机配置如第四方面所述的数据包检测装置,所述源主机与所述目的主机之间进行数据包交互。第六方面,本发明实施例提供了一种数据包检测设备,包括:存储器以及一个或多个处理器;所述存储器,用于存储一个或多个程序;当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如第一方面或第二方面所述的数据包检测方法。第七方面,本发明实施例提供了一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行如第一方面或第二方面所述的数据包检测方法。本发明通过本机进程封装的数据包发送给目的主机,然后通过用户态进程接收目的主机的回包,以根据本机的发包个数和目的主机的收包个数,确定下行数据丢包率;根据本机的收包个数和目的主机的发包个数,确定上行数据丢包率的技术手段,解决了现有技术中对数据包进行检测时,无法确定是上行数据丢包还是下行数据丢包的技术问题,实现了对数据包进行双向丢包检测的技术效果。附图说明图1是现有技术中tcp三次握手建立连接的通信示意图;图2是现有技术中目的主机端口处于打开状态时半连接的通信示意图;图3是现有技术中目的主机端口处于关闭状态时半连接的通信示意图;图4是本发明实施例一提供的一种数据包检测方法的流程图;图5是本发明实施例一提供的一种数据包包头的组成示意图;图6是本发明实施例二提供的一种数据包检测方法的流程图;图7是本发明实施例三提供的一种数据包检测方法的流程图;图8是本发明实施例四提供的一种数据包检测方法的流程图;图9是本发明实施例五提供的一种数据包检测方法的流程图;图10是本发明实施例六提供的一种源主机和目的主机之间的通信流程图;图11是本发明实施例七提供的一种数据包检测装置的结构框图;图12是本发明实施例八提供的一种数据包检测装置的结构框图;图13是本发明实施例九提供的一种数据包检测系统的结构框图;图14是本发明实施例十提供的一种数据包检测设备的结构示意图。具体实施方式下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。在此需要说明的是,本方案适用于机房间网络延时、数据包检测的场景,为了便于对本方案进行具体解释说明,以数据包检测为例,对本方案的实施过程进行说明。其中,数据包检测是对目的主机和源主机之间在数据包传输过程中,对数据包丢包进行检测的情况,一般情况下,当目的主机和源主机之间所传输数据包在一定时间内未接收到,即可认为存在数据包丢包的情况。示例性地,假设目的主机和源主机之间所传输的数据包在1000ms内未接收到,即可认为存在数据包丢包情况。而网络延时和数据包检测的原理是类似的,当源主机和目的主机之间所传输数据包的接收时间超过正常情况下数据包的接收时间,即可认为存在网络延时的情况。示例性地,假设在正常情况下,数据包传输过程中目的主机和源主机之间的数据包接收时间为100ms,但此时目的主机和源主机之间所传输数据包的接收时间超过100ms,则认为存在网络延时的情况。实施例一图4是本发明实施例一提供的一种数据包检测方法的流程图,本实施例中提供的数据包检测方法可以由数据包检测设备执行,该数据包检测设备可以通过软件和/或硬件的方式实现,该数据包检测设备可以是两个或多个物理实体构成,也可以是一个物理实体构成。本实施例中数据包检测设备为源主机。参考图4,该数据包检测方法具体包括如下步骤:s110、将通过本机进程封装的数据包发送给目的主机。其中,数据包携带空置的目的主机收包字段和目的主机发包字段。在实施例中,本机可以理解为作为数据包或回包发送方对应的主机机器。需要理解的是,在本机将数据包发送给目的主机之前,本机通过用户进程对数据进行封装,以得到数据包。其中,在数据包包头中至少包括:协议头、目的主机收包字段、目的主机发包字段、序列号等。图5是本发明实施例一提供的一种数据包包头的组成示意图。示例性地,在如图5所示的示意图中,只是示出数据包包头中目的主机收包字段和目的主机发包字段的组成,在实施例中,以dst_recv表示目的主机收包字段,以及以dst_send表示目的主机发包字段,同时目的主机收包字段和目的主机发包字段均为16位,每8位为一个字节,在图中示例性地表示出数据包包头中的目的主机收包字段和目的主机发包字段在数据包包头中的位置,但对此并不进行限定,同时,数据包包头中还包括协议头和序列号,其中,协议头用来确定本机和目的主机之间所要采用的数据传输协议的类型,也就是说,协议头的组成与所采用的协议类型有关,并且协议头的组成是现有技术,在此不再赘述。示例性地,数据传输协议可为tcp或udp协议,可直接参考现有技术中对tcp或udp协议头的组成。在实施例中,目的主机收包字段和目的主机发包字段是空置的,也就是说,在本机将数据包发送给目的主机之前,目的主机收包字段对应的目的主机收包个数为0,以及目的主机发包字段对应的目的主机发包个数也为0。可以理解为dst_recv对应的数值为00000000,以及dst_send对应的数值也为00000000。在此需要说明的是,为了便于对数据丢包率进行统计,在实施例中,以轮为单位,对每轮中本机向目的主机发送的数据包总个数,以及本机接收目的主机的数据包总个数、目的主机向源主机发送的数据包总个数、目的主机接收源主机发送的数据包总个数进行统计,为了便于查询到对应的轮,在实施例中,以本轮中本机向目的主机发送第一个数据包的时间为序列号,可以理解为序列号为一轮中第一个数据包的发送时间,示例性地,在第10轮中,第一个数据包的发送时间为上午8点30分20秒,则序列号可记为083020;又如,在第11轮中,第一个数据包的发送时间为上午8点30分40秒,则序列号可记为083040。当想查找到第10轮中,可直接输入序列号083020即可查找到对应的轮数。s120、通过用户态进程接收目的主机的回包。其中,回包中的目的主机收包字段携带目的主机的收包个数和目的主机发包字段携带目的主机的发包个数。其中,一个运行程序至少有一个进程,而一个进程至少有一个线程。在实施例中,用户态进程可支持多线程。也就是说,在数据包的传输过程中,本机可采用不同的线程接收目的主机的回包。示例性地,用户态进程支持五个线程,分别为11、22、33、44和55。在用户态进程中的线程11接收目的主机的第一个回包,则可利用线程22接收目的主机的第二个回包。在实施例中,在本机接收到目的主机的回包时,直接通过本机中预先配置的防火墙对回包进行拦截,然后将回包存储至预设队列中,并通过用户态进程读取预设队列中的回包,以对回包进行解析处理。当然,若本机未接收到目的主机的回包时,将不执行步骤s120,直接认为目的机的回包在数据传输过程中出现丢包的情况。在此需要说明的是,在回包中目的主机收包字段携带目的主机的收包个数和目的主机发包字段携带目的主机的发包个数,需要理解的是,在目的主机接收到本机发送的数据包之后,目的主机将对目的主机收包字段和目的主机发包字段进行配置修改,即将目的主机收包字段dst_recv对应的数值进行加1操作,即调整为00000001,以及目的主机发包字段dst_send对应的数值也进行加1操作,即也调整为00000001。在此需要说明的是,目的主机收包字段对应的目的主机的收包个数,以及目的主机发包字段对应的目的主机的发包个数是相同的。s130、根据本机的发包个数和目的主机的收包个数,确定下行数据丢包率;根据本机的收包个数和目的主机的发包个数,确定上行数据丢包率。其中,下行数据丢包率可以理解为本机的发包个数的目的主机的收包个数之间的差值,与本机的发包个数的比值;而上行数据丢包率可以理解为目的主机的发包个数和本机的收包个数之间的差值,与目的主机的发包个数的比值。需要理解的是,当源主机作为本机时,下行可以理解为源主机发送数据包,而目的主机接收对应的数据包;上行可以理解为目的主机回送数据包,而源主机接收对应的回送数据包。示例性地,以源主机为客户机主机,目的主机为服务器主机,并且以源主机为本机为例,对下行数据丢包率和上行数据丢包率进行解释说明。具体来说,假设以一轮为单位对源主机和目的主机之间的数据丢包率进行统计,其中,假设一轮的总时长为20秒,每100毫秒源主机向目的主机发送一个数据包,也就是说,源主机在一轮内会向目的主机发送200个数据包,即本机的发包个数为200。作为本机的客户机主机向服务器主机发送数据包,当服务器主机接收到对应的数据包后,服务器主机将目的主机的收包个数从0调整为1;而当服务器主机未接收到对应的数据包后,服务器主机不对目的主机的收包个数进行调整,依次类推,直到客户机主机将200个数据包全部发送至目的主机,在此假设服务器主机在该轮内接收到180个数据包,即目的主机的收包个数为180,则下行丢包数为20,从而可确定下行数据丢包率为0.1。同样地,在服务器主机接收到客户机主机发送的数据包之后,对该数据包进行处理,以生成该数据包对应的回包,然后服务器主机将回包返回给客户机主机,若客户机主机接收到该回包,则本机的收包个数从0调整为1;而若客户机主机未接收到对应的回包时,客户机主机不对本机的收包个数进行调整,依次类推,直到服务器主机将180个数据包对应的回包反馈至客户机主机,即目的主机的发包个数为180个,在此假设客户机主机在该轮内接收到172个对应的回包,即本机的收包个数为172个,即上行丢包数为8个,从而可确定上行数据丢包率为0.044。在此需要说明的是,当本机向目的主机发送一个数据包后,目的主机在1000毫秒内仍未接收到该数据包时,就认为本机向目的主机所发送的数据包,在数据传输过程中出现丢包的情况。本实施例的技术方案,通过将本机进程封装的数据包发送给目的主机,然后用户态进程接收目的主机针对数据包的回包,并在回包中的目的主机收包字段携带目的主机的收包个数和所述目的主机发包字段携带目的主机的发包个数,然后根据本机的发包个数和目的主机的收包个数,确定下行数据丢包率;根据本机的收包个数和目的主机的发包个数,确定上行数据丢包率的技术手段,解决了现有技术中在对数据包进行检测时,无法确定是上行数据丢包还是下行数据丢包的技术问题,实现了对数据包进行双向丢包检测的技术效果。实施例二图6是本发明实施例二提供的一种数据包检测方法的流程图。本实施例是在上述实施例一的基础上,对数据包检测方法作进一步说明,参考图6,该数据包检测方法具体包括如下步骤:s210、对本机设置防火墙规则,以确定目的主机。其中,防火墙规则包括本机对应的源端口和目的主机对应的目的端口。其中,防火墙规则为iptables防火墙规则。其中,iptables是一种包过滤防火墙,可实现封包过滤、封包重定向和网络地址转换等功能。在实施例中,主要应用iptables防火墙的封包过滤和封包重定向两个功能。可以理解为,封包过滤即防火墙对数据包/回包的拦截,而封包重定向为将拦截的数据包/回包存储至预设队列中。在实施例中,预设队列为nfqueue队列。其中,nfqueue是iptables的一种规则目标,它用于将数据包从内核传给用户态进程,由用户态进程来裁决如何处理该数据包,并将裁决结果返回内核,nfqueue为iptables防火墙中常用的一种规则目标,具体解释在此不再说明。其中,防火墙规则存储在内核的信息包过滤表中,并指定了源端口、目的端口和传输协议等。比如,传输协议可包括tcp、udp。示例性地,防火墙规则的配置可为:iptables-traw-aprerouting-ptcp--sportsrc_port_num--dportdst_port_num-jnfqueue--queue-numq_num,其中,-t是一种表选项,用于指定命令应用于哪个iptables内置表中;iptables内置了4个表,即raw表、filter表、nat表和mangle表,分别用于实现包过滤,网络地址转换和包重构的功能,在实施例中,采用优先级最高的raw表,从而可以对收到的数据包在连接跟踪前进行处理;-a,即-append,用于在规则列表的最后增加1条规则;-p表示的是协议类型,用来指定数据包匹配的协议,在实施例中采用tcp协议对数据包检测进行说明;--sport表示的是源端口号,用来指定数据包匹配的源端口号,比如,src_port_num为8190;--dport表示的是目的端口号,用来指定数据包匹配的目的端口号,比如,dst_port_num可为8191;queue-num表示的是nfqueue队列号,比如,q_num可为8196。当然,本实施例中只是示例性地对防火墙规则的配置进行举例说明,对此并不进行限定。s220、本机进程通过原始套接字对数据进行封装,以得到数据包。其中,数据包携带空置的目的主机收包字段和目的主机发包字段。其中,原始套接字,可以接收本机网卡上的数据帧或数据包。在实施例中,数据可以理解为用于在数据包包头所添加的字段信息,比如,数据可以为数据包中的目的主机收包字段、目的主机发包字段,以及序列号字段等。可以理解为,在本机接收到数据包包头中各个字段信息后,本机进程通过原始套接字对各个字段信息进行封装,以使各个字段信息封装在一个数据包中。需要注意的是,在数据包包头中需包括:协议头、目的主机收包字段、目的主机发包字段和序列号。其中,协议头用来定义所采用的数据传输协议。s230、将数据包发送给目的主机。在实施例中,在通过本机进程对各个字段信息的数据进行封包,得到数据包之后,本机直接通过预先设置的数据传输协议将数据包发送至对应的目的主机。其中,预先设置的数据传输协议可包括tcp和udp协议。s240、通过防火墙拦截目的主机的回包,并存储到nfqueue队列。其中,回包中的目的主机收包字段携带目的主机的收包个数和目的主机发包字段携带目的主机的发包个数。在实施例中,回包可以理解为目的主机对数据包进行处理后,而得到的另一个数据包。示例性地,当本机发送的数据包为16,则目的主机的回包也是16,可以理解为,回包只是对数据包包头中各个字段对应的数据信息进行修改而得到的一个数据包。需要理解的是,在本机将数据包发送给目的主机之前,数据包包头中的目的主机收包字段和目的主机发包字段对应的数据包个数均为0,在本机将数据包发送给目的主机,同时目的主机成功接收到该数据包后,目的主机的回包中的目的主机收包字段对应的目的主机的收包个数调整为1;而目的主机发包字段对应的目的主机的发包个数也调整为1。以此类推,回包中的目的主机收包字段携带的目的主机的收包个数,以及目的主机发包字段携带目的主机的发包个数,会随着本机向目的主机发送的数据包个数而变化。其中,防火墙可为iptables防火墙。在实施例中,在本机接收到目的主机的回包时,本机预先配置的iptables防火墙会对该回包进行拦截,然后存储到nfqueue队列中,从而避免了本机通过内核对回包进行处理的过程。在此需要说明的是,tcp协议用于无线网络、有线/无线混合网络中的一种面向连接的、可靠的数据流传输协议。示例性地,在数据传输过程中,当源主机采用tcp协议向目的主机发送数据包的过程中,若目的主机出现数据包丢失现象时,源主机会自动对丢失的数据包进行重传,以保证源主机与目的主机的通信顺畅。为了避免出现重传的现象,以防止出现无法统计数据包发送个数和数据包接收个数的情况。在本实施例中,在本机中设置了防火墙规则,即使在本机未接收到目的主机回包时,目的主机也不会再次重传上一次所返回的回包,从而便于统计目的主机的发包个数。s250、从nfqueue队列中读取目的主机的回包。在实施例中,用户态进程从nfqueue队列中读取目的主机的回包,并对该回包进行解析,以得到目的主机的发包个数和目的主机的收包个数,以便于对数据丢包率进行统计。s260、获取本机的发包个数和本机的收包个数。在实施例中,在本机向目的主机发送一个数据包时,本机自动将本机的发包个数进行加1操作,而在本机成功接收到目的主机返回的回包时,本机也将本机的收包个数进行加1操作,以便于对数据丢包率进行统计。需要理解的是,本机的发包个数和本机的收包个数对应的数据信息保存在本机进程的一个内存map数据结构中,在本机接收到一轮中目的主机返回的最后一个回包时,就可以认为是触发本机进程自动从该内存map数据结构中获取本机的发包个数和本机的收包个数的指令。在此需要说明的是,将本机的发包个数和本机的收包个数对应的数据信息保存在本机进程的一个内存map数据结构中,是为了使得本机进程对数据信息的访问速度更快。s270、根据本机的发包个数和目的主机的收包个数,确定下行数据丢包率;根据本机的收包个数和目的主机的发包个数,确定上行数据丢包率。在实施例中,在确定本机的发包个数和目的主机的收包个数之后,可对下行丢包数进行计算,然后将下行丢包数和本机的发包个数的比值,记为下行数据丢包率;同样地,在确定本机的收包个数和目的主机的发包个数之后,可计算出上行丢包数,然后将上行丢包数目的主机的发包个数的比值,记为上行数据丢包率。本实施例的技术方案,在上述实施例的基础上,通过对本机设置iptables防火墙规则,以确定目的主机;然后防火墙拦截目的主机的回包,并存储到nfqueue队列,并从nfqueue队列中读取目的主机的回包,避免了本机和目的主机之间采用tcp协议时,因数据包传输失败而再次重传数据包,导致本机或目的主机的发包个数增加,而降低了数据丢包率的计算准确度。实施例三图7是本发明实施例三提供的一种数据包检测方法的流程图,本实施例中提供的数据包检测方法可以由数据包检测设备执行,该数据包检测设备可以通过软件和/或硬件的方式实现,该数据包检测设备可以是两个或多个物理实体构成,也可以是一个物理实体构成。本实施例中数据包检测设备为目的主机。参考图7,该数据包检测方法具体包括如下步骤:s310、通过用户态进程接收源主机发送的数据包。其中,数据包携带空置的目的主机收包字段和目的主机发包字段。在实施例中,源主机为向目的主机发送数据包的主机机器。需要理解的是,在目的主机接收到源主机发送的数据包后,通过目的主机中预先配置的防火墙对数据包进行拦截,然后将数据包存储至预设队列中,并通过用户态进程读取预设队列中的数据包,以对数据包进行解析处理。在目的主机接收到源主机发送的数据包之后,以及在目的主机对数据包进行解析处理之前,该数据包中携带的目的主机收包字段和目的主机发包字段均为空置的,也可理解为该目的主机收包字段和目的主机发包字段分别对应的目的主机收包个数和目的主机发包个数均为0。其中,采用用户态进程接收数据包,是为了避免通过内核对数据包进行解析处理的过程。当然,若目的主机未接收到源主机发送的数据包时,将不执行步骤s310,直接认为源主机发送的数据包在数据传输过程中出现丢包的情况。s320、将本机对数据包的收包个数配置在目的主机的收包字段中,将本机待发送回包的发包个数配置在目的主机的发包字段中,并将配置好的收包字段和发包字段以及数据封装,得到回包。在本实施例中,本机指的是目的主机,可以理解为以目的主机为执行主体时,目的主机相对于其他主机来说,目的主机就是本机。本机待发送回包的发包个数,可以理解为目的主机向源主机所要返回的回包的个数。在实施例中,在目的主机通过用户态进程从预设队列中读取数据包之后,用户态进程对数据包中的字段信息进行解析处理,并将本机对数据包的收包个数配置在目的主机的收包字段中,即对目的主机的收包字段对应的目的主机的收包个数进行加1操作,同时将本机待发送回包的发包个数配置在目的主机的发包字段中,即对目的主机的发包字段对应的目的主机的发包个数进行加1操作,然后通过原始套接字对配置好的收包字段和发包字段以及对应的数据信息进行封装,以得到回包。s330、将回包发送至源主机,以使源主机根据源主机的发包个数和目的主机的收包个数,确定下行数据丢包率;根据源主机的收包个数和目的主机的发包个数,确定上行数据丢包率。其中,源主机的发包个数为源主机向目的主机发送的数据包总个数;目的主机的收包个数为目的主机接收到源主机所发送的数据包总个数;源主机的收包个数为源主机接收到目的主机所返回的回包总个数;目的主机的发包个数为目的主机向源主机返回的回包总个数。在此需要注意的是,目的主机的收包个数和目的主机的发包个数是相同的。在实施例中,作为本机的目的主机将封装好的回包发送至源主机,在源主机接收到目的主机的回包时,源主机对源主机的收包个数进行加1操作,以更新源主机的收包个数。具体来说,源主机在确定源主机的发包个数和目的主机的收包个数之后,可通过源主机的发包个数和目的主机的收包个数之间的差值,计算得到对应的下行丢包数,然后将下行丢包数和源主机的发包个数之间的比值记为下行数据丢包率;同样地,在确定源主机的收包个数和目的主机的发包个数之后,可通过目的主机的发包个数和源主机的收包个数之间的差值,计算得到对应的上行丢包数,然后将上行丢包数和目的主机的发包个数之间的比值记为上行数据丢包率。本实施例的技术方案,通过用户态进程接收源主机发送的数据包;将本机对数据包的收包个数配置在所述目的主机的收包字段中,将本机待发送回包的发包个数配置在目的主机的发包字段中,并将配置好的收包字段和发包字段以及数据封装,得到回包;然后将回包发送至源主机,以使源主机根据源主机的发包个数和目的主机的收包个数,确定下行数据丢包率;根据源主机的收包个数和目的主机的发包个数,确定上行数据丢包率,解决了现有技术中在对数据包进行检测时,无法确定是上行数据丢包还是下行数据丢包的技术问题,实现了对数据包进行双向丢包检测的技术效果。实施例四图8是本发明实施例四提供的一种数据包检测方法的流程图。本实施例是在上述实施例三的基础上,对数据包检测方法作进一步说明,参考图8,该数据包检测方法具体包括如下步骤:s410、对本机设置防火墙规则,以确定源主机。其中,防火墙规则包括源主机对应的源端口和本机对应的目的端口。在实施例中,防火墙规则为iptables防火墙规则。示例性地,防火墙规则可为:iptables-traw-aprerouting-ptcp--sportdst_port_num--dportsrc_port_num-jnfqueue--queue-numq_num。在此需要说明的是,目的主机中防火墙规则的配置和源主机中防火墙的配置是类似的,只是在源端口号和目的端口号有区别,在实施例二中作为目的端口号的dst_port_num,其在本实施例中作为源端口号;同样的,在实施例二中作为源端口号的src_port_num,其在本实施例中作为目的端口号。同时,对防火墙规则中的各个字段所表示的含义见上述实施例二中的详细描述,在此不再赘述。s420、通过防火墙拦截源主机发送的数据包,并存储到nfqueue队列。在实施例中,在本机接收到源主机发送的数据包时,iptables防火墙会对该数据包进行拦截,然后存储到nfqueue队列中,从而避免了本机通过内核对数据包进行处理的过程。其中,nfqueue是iptables的一种规则目标,它用于将数据包从内核传给用户态进程,由用户态进程来裁决如何处理该数据包,并将裁决结果返回内核,nfqueue为iptables防火墙中常用的一种规则目标,具体解释在此不再说明。s430、从nfqueue队列中读取源主机发送的数据包。在实施例中,用户态进程从nfqueue队列中读取源主机的数据包,并对该数据包进行解析,以确定目的主机的收包个数,以便于对数据丢包率进行统计。s440、将本机对数据包的收包个数配置在目的主机的收包字段中,将本机待发送回包的发包个数配置在目的主机的发包字段中,并将配置好的收包字段和发包字段以及数据封装,得到回包。s450、将回包发送至源主机,以使源主机根据源主机的发包个数和目的主机的收包个数,确定下行数据丢包率;根据源主机的收包个数和目的主机的发包个数,确定上行数据丢包率。本实施例的技术方案,在上述实施例的基础上,通过对本机设置iptables防火墙规则,以确定源主机;然后防火墙拦截源主机的数据包,并存储到nfqueue队列,并从nfqueue队列中读取源主机的数据包,避免了本机和源主机之间采用tcp协议时,因数据包传输失败而再次重传回包,导致本机或源主机的发包个数增加,而降低了数据丢包率的计算准确度。实施例五图9是本发明实施例五提供的一种数据包检测方法的流程图。本实施例是在上述实施例的基础上,以源主机和目的主机之间的交互为例,对数据包检测方法进行说明,参考图9,该数据包检测方法具体包括如下步骤:s501、对源主机设置防火墙规则,以确定目的主机;对目的主机设置防火墙规则,以确定源主机。s502、源主机进程通过原始套接字对数据进行封装,以得到数据包。其中,数据包携带空置的目的主机收包字段和目的主机发包字段。s503、源主机将数据包发送给目的主机。s504、目的主机通过防火墙拦截源主机发送的数据包,并存储到nfqueue队列。s505、目的主机从nfqueue队列中读取源主机发送的数据包。s506、将目的主机对数据包的收包个数配置在目的主机的收包字段中,将目的主机待发送回包的发包个数配置在目的主机的发包字段中,并将配置好的收包字段和发包字段以及数据封装,得到回包。s507、目的主机将回包发送至源主机。其中,回包中的目的主机收包字段携带目的主机的收包个数和目的主机发包字段携带目的主机的发包个数。s508、源主机通过防火墙拦截目的主机的回包,并存储到nfqueue队列。s509、源主机从nfqueue队列中读取目的主机的回包。s510、源主机获取源主机的发包个数和源主机的收包个数。s511、源主机根据源主机的发包个数和目的主机的收包个数,确定下行数据丢包率;根据源主机的收包个数和目的主机的发包个数,确定上行数据丢包率。本实施例的技术方案,通过在源主机和目的主机中配置防火墙规则,以使目的主机和源主机通过防火墙对数据包或回包进行拦截,并存储至对应的nfqueue队列中,然后通过用户态进程从nfqueue队列中读取对应的数据包或回包,以对源主机和目的主机的发包个数和收包个数进行更新,实现了对数据包进行双向丢包检测的技术效果。实施例六图10是本发明实施例六提供的一种源主机和目的主机之间的通信流程图。本实施例是在上述实施例的基础上,作为一个优选实施例,对源主机和目的主机之间的通信进行说明,参考图10。该通信流程具体包括如下步骤:s610:源主机进程对数据进行封装,以得到数据包。其中,数据包携带空置的目的主机收包字段和目的主机发包字段。s620:源主机进程将数据包发送至目的主机,以使目的主机通过防火墙对数据包进行拦截,并存储至目的主机的nfqueue队列。其中,防火墙或iptables防火墙。s630:目的主机进程读取nfqueue队列中的数据包,并对数据包进行处理,以生成数据包对应的回包。其中,回包中的目的主机收包字段携带目的主机的收包个数和目的主机发包字段携带目的主机的发包个数。目的主机进程为目的主机的用户态进程。s640:目的主机将回包发送至源主机,以使源主机通过防火墙对回包进行拦截,并存储至源主机的nfqueue队列。s650:源主机进程读取nfqueue队列中的回包,并对回包进行处理,以确定下行数据丢包率和上行数据丢包率。其中,源主机进程为源主机中的用户态进程。本实施例的技术方案,通过在源主机和目的主机中配置防火墙规则,以使目的主机和源主机通过防火墙对数据包或回包进行拦截,并存储至对应的nfqueue队列中,然后通过用户态进程从nfqueue队列中读取对应的数据包或回包,以对源主机和目的主机的发包个数和收包个数进行更新,实现了对数据包进行双向丢包检测的技术效果。实施例七图11是本发明实施例七提供的一种数据包检测装置的结构框图。参考图11,该数据包检测装置包括:数据包发送模块710、回包接收模块720和丢包率确定模块730。其中,数据包发送模块710,用于将通过本机进程封装的数据包发送给目的主机,所述数据包携带空置的目的主机收包字段和目的主机发包字段;回包接收模块720,用于通过用户态进程接收所述目的主机的回包,所述回包中的目的主机收包字段携带目的主机的收包个数和所述目的主机发包字段携带目的主机的发包个数;丢包率确定模块730,用于根据本机的发包个数和目的主机的收包个数,确定下行数据丢包率;根据本机的收包个数和目的主机的发包个数,确定上行数据丢包率。本实施例的技术方案,通过本机进程封装的数据包发送给目的主机,然后通过用户态进程接收目的主机的回包,以根据本机的发包个数和目的主机的收包个数,确定下行数据丢包率;根据本机的收包个数和目的主机的发包个数,确定上行数据丢包率的技术手段,解决了现有技术中对数据包进行检测时,无法确定是上行数据丢包还是下行数据丢包的技术问题,实现了对数据包进行双向丢包检测的技术效果。在上述实施例的基础上,所述数据包检测装置,还包括:目的主机确定模块,用于对本机设置防火墙规则,以确定目的主机;所述防火墙规则包括本机对应的源端口和目的主机对应的目的端口。在上述实施例的基础上,所述防火墙规则为iptables防火墙规则。在上述实施例的基础上,所述回包接收模块720,包括:回包存储单元,用于通过所述防火墙拦截目的主机的回包,并存储到nfqueue队列;回包读取单元,用于从所述nfqueue队列中读取所述目的主机的回包。在上述实施例的基础上,所述数据包发送模块710,包括:数据包封装单元,用于本机进程通过原始套接字对数据进行封装,以得到数据包;数据包发送单元,用于将所述数据包发送给目的主机。在上述实施例的基础上,所述数据包检测装置,还包括:获取模块,用于获取本机的发包个数和本机的收包个数。上述数据包检测装置可执行本发明任意实施例所提供的应用于源主机的数据包检测方法,具备执行方法相应的功能模块和有益效果。实施例八图12是本发明实施例八提供的一种数据包检测装置的结构框图。参考图12,该数据包检测装置包括:数据包接收模块810、回包确定模块820和回包发送模块830。其中,数据包接收模块810,用于通过用户态进程接收源主机发送的数据包,所述数据包携带空置的目的主机收包字段和目的主机发包字段;回包确定模块820,用于将本机对所述数据包的收包个数配置在所述目的主机的收包字段中,将本机待发送回包的发包个数配置在所述目的主机的发包字段中,并将配置好的收包字段和发包字段以及数据封装,得到回包;回包发送模块830,用于将所述回包发送至所述源主机,以使所述源主机根据源主机的发包个数和目的主机的收包个数,确定下行数据丢包率;根据源主机的收包个数和目的主机的发包个数,确定上行数据丢包率。本实施例的技术方案,通过用户态进程接收源主机发送的数据包;将本机对数据包的收包个数配置在所述目的主机的收包字段中,将本机待发送回包的发包个数配置在目的主机的发包字段中,并将配置好的收包字段和发包字段以及数据封装,得到回包;然后将回包发送至源主机,以使源主机根据源主机的发包个数和目的主机的收包个数,确定下行数据丢包率;根据源主机的收包个数和目的主机的发包个数,确定上行数据丢包率,解决了现有技术中在对数据包进行检测时,无法确定是上行数据丢包还是下行数据丢包的技术问题,实现了对数据包进行双向丢包检测的技术效果。在上述实施例的基础上,所述数据包检测装置,还包括:源主机确定模块,用于对本机设置防火墙规则,以确定源主机;所述防火墙规则包括源主机对应的源端口和本机对应的目的端口。在上述实施例的基础上,所述防火墙规则为iptables防火墙规则。在上述实施例的基础上,所述数据包接收模块810,包括:数据包存储单元,用于通过所述防火墙拦截源主机发送的数据包,并存储到nfqueue队列;数据包读取单元,用于从所述nfqueue队列中读取所述源主机发送的数据包。上述数据包检测装置可执行本发明任意实施例所提供的应用于目的主机的数据包检测方法,具备执行方法相应的功能模块和有益效果。实施例九图13是本发明实施例九提供的一种数据包检测系统的结构框图。参考图13,该数据包检测系统包括:源主机910和目的主机920。其中,源主机910和目的主机920通信连接,用于进行数据包交互传输。同时,源主机910和目的主机920均可为任一种后台服务器,同时该后台服务器可对数据包进行处理以及存储。具体的,源主机910上配置有上述实施例七所描述的数据包检测装置,目的主机920上配置有上述实施例八所描述的数据包检测装置。其中,源主机910和目的主机920的数量分别可以为一个,也可以为多个。需要说明的是,本实施例中源主机910和目的主机920的数量不作限定,并且,一个源主机910可对应多个目的主机920,同时一个目的主机920可对应多个源主机910。同时,本实施例中的源主机910和目的主机920可以分别执行上述各个对应的数据包检测方法,具体的执行过程可参见上述数据包检测方法,在此不再赘述。实施例十图14是本发明实施例十提供的一种数据包检测设备的结构示意图。参考图14,该数据包检测设备包括:处理器1010、存储器1020、输入装置1030以及输出装置1040。该数据包检测设备中处理器1010的数量可以是一个或者多个,图14中以一个处理器1010为例。该数据包检测设备中存储器1020的数量可以是一个或者多个,图14中以一个存储器1020为例。该数据包检测设备的处理器1010、存储器1020、输入装置1030以及输出装置1040可以通过总线或者其他方式连接,图14中以通过总线连接为例。实施例中,数据包检测设备可以是后台服务器,以对数据进行处理并存储。存储器1020作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明任意实施例所述的数据包检测设备对应的程序指令/模块(例如,数据包发送模块710、回包接收模块720以及丢包率确定模块730)。存储器1020可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据设备的使用所创建的数据等。此外,存储器1020可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器1020可进一步包括相对于处理器1010远程设置的存储器,这些远程存储器可以通过网络连接至设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。输入装置1030可用于接收输入的数字或者字符信息,以及产生与数据包检测设备的用户设置以及功能控制有关的键信号输入,还可以是用于获取图像的摄像头以及获取音频数据的拾音设备。输出装置1040可以包括扬声器等音频设备。需要说明的是,输入装置1030和输出装置1040的具体组成可以根据实际情况设定。处理器1010通过运行存储在存储器1020中的软件程序、指令以及模块,从而执行设备的各种功能应用以及数据处理,即实现上述的数据包检测方法。上述提供的数据包检测设备可用于执行上述任意实施例提供的应用于源主机的数据包检测方法,具备相应的功能和有益效果。需要说明的是,当数据包检测设备为目的主机时,对应的存储器1020中存储的程序可以是本发明实施例所提供应用于目的主机的数据包检测方法对应的程序指令/模块,处理器1010通过运行存储在存储器1020中的软件程序、指令以及模块,从而执行计算机设备的各种功能应用以及数据处理,即实现上述方法实施例中应用于目的主机的数据包检测方法。可以理解的是,上述数据包检测设备为目的主机时,可执行本发明任意实施例所提供的应用于目的主机的数据包检测方法,且具备相应的功能和有益效果。实施例十一本发明实施例十一还提供一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行一种数据包检测方法,包括:将通过本机进程封装的数据包发送给目的主机,该数据包携带空置的目的主机收包字段和目的主机发包字段;通过用户态进程接收目的主机的回包,该回包中的目的主机收包字段携带目的主机的收包个数和目的主机发包字段携带目的主机的发包个数;根据本机的发包个数和目的主机的收包个数,确定下行数据丢包率;根据本机的收包个数和目的主机的发包个数,确定上行数据丢包率。当然,本发明实施例所提供的一种包含计算机可执行指令的存储介质,其计算机可执行指令不限于如上所述的应用于源主机数据包检测方法操作,还可以执行本发明任意实施例所提供的应用于源主机的数据包检测方法中的相关操作,且具备相应的功能和有益效果。通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本发明可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、闪存(flash)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是机器人,个人计算机,服务器,或者网络设备等)执行本发明任意实施例所述的数据包检测方法。值得注意的是,上述数据包检测装置中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。本发明实施例还提供了另一种计算机可读存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行一种应用于目的主机的数据包检测方法,该方法包括:通过用户态进程接收源主机发送的数据包,该数据包携带空置的目的主机收包字段和目的主机发包字段;将本机对数据包的收包个数配置在目的主机的收包字段中,将本机待发送回包的发包个数配置在目的主机的发包字段中,并将配置好的收包字段和发包字段以及数据封装,得到回包;将回包发送至源主机,以使源主机根据源主机的发包个数和目的主机的收包个数,确定下行数据丢包率;根据源主机的收包个数和目的主机的发包个数,确定上行数据丢包率。对存储介质的介绍可参见上述实施例中的内容解释。应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(pga),现场可编程门阵列(fpga)等。在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1