1.一种基于流程解耦的分布式网络探测任务自适应高效调度方法,其特征在于,所述方法包括:步骤S1、控制端接收用户探测任务和探测模式,从中获得指定的目标IP地址范围和端口列表;开展任务规划,对目标IP地址进行分块及分片,嵌套遍历各个分片和端口,并生成多个子任务,将生成的全部子任务推送到消息服务器的任务队列;步骤S2、分布式探测节点集群中的各个探测节点持续监听消息服务器的任务队列,并实时监控自身任务负载和性能负载的状态,负载存在空闲时主动从消息服务器拉取子任务;步骤S3、子任务到达探测节点后,探测节点基于子任务中所包含的地址集、白名单、黑名单、负载权重,在本地生成总的探测任务列表,并根据任务分片编号实施探测,同时更新当前任务负载和性能负载的状态;步骤S4、探测节点将多个探测结果返回报文推送至消息服务器的结果队列;控制端从消息服务器的结果队列拉取探测结果返回报文,并根据任务类型将探测结果分配到不同的本地结果队列;步骤S5、从不同的本地结果队列中读取不同任务类型的探测结果,经数据处理后储存到ES数据库,以供下游应用使用相关数据。
2.根据权利要求1所述的基于流程解耦的分布式网络探测任务自适应高效调度方法,其特征在于,在步骤S1中,控制端接收用户探测任务和探测模式,从中获得指定的目标IP地址范围和端口列表,目标IP地址范围为指定的IP段或指定的地域;其中:若探测模式为精准探测,则先执行分块过程,通过查询GeoIP数据库对目标IP地址进行分块,并为每个分块添加地域标签Geo-Tag,而后对每个分块进行分片;其中,精准探测指视域优先的探测模式;若探测模式为随机探测,则直接执行分片过程;在执行分片过程时,根据目标IP地址范围计算待探测的IP地址总数Total_IPs,并采用自适应策略确定分片数Num_AddrSlices;其中:Num_AddrSlices = ceil(sqrt(Total_IPs)) 或者Num_AddrSlices = k ceil(sqrt(Total_IPs))其中,ceil()表示向上取整,sqrt()表示求平方根,k为调节系数。
3.根据权利要求2所述的基于流程解耦的分布式网络探测任务自适应高效调度方法,其特征在于,在步骤S1中,对各个分片和端口进行嵌套遍历,并生成多个子任务;其中:Num_SubTasks = Num_AddrSlices×Num_PortsNum_SubTasks表示子任务数,Num_Ports表示端口数;一个子任务至少包括一个分片以及对应的一个端口;将生成的全部子任务推送到消息服务器的任务队列,由分布式探测节点集群中的各个探测节点异步执行对任务队列的持续监听。
4.根据权利要求3所述的基于流程解耦的分布式网络探测任务自适应高效调度方法,其特征在于,在步骤S2中:若探测模式为精准探测,针对带有地域标签Geo-Tag的子任务仅允许部分探测节点从消息服务器拉取该子任务,所述部分探测节点指,对Geo-Tag对应的地域进行视域评估且评估结果靠前的n个探测节点;若探测模式为随机探测,针对不带有地域标签Geo-Tag的子任务,允许任一空闲探测节点拉取该子任务。
5.根据权利要求4所述的基于流程解耦的分布式网络探测任务自适应高效调度方法,其特征在于,在步骤S2中:预设探测节点的任务负载和性能负载的阈值,以此来调控探测节点的资源利用率和不同优先级任务的执行;每个子任务均有一个负载权重,探测节点拉取子任务的前提是当前的任务负载和性能负载均小于预设阈值。
6.根据权利要求5所述的基于流程解耦的分布式网络探测任务自适应高效调度方法,其特征在于,在步骤S3中,探测节点实施探测具体包括:根据白名单和黑名单对地址集内的目标IP地址进行过滤,生成需要探测的目标IP地址列表TargetList;基于TargetList索引序号对分片数取模,若取模的值等于当前探测节点拉取的任务分片编号,则对该索引序号对应的地址进行探测。
7.根据权利要求6所述的基于流程解耦的分布式网络探测任务自适应高效调度方法,其特征在于,在步骤S4中,探测节点将探测结果暂存在缓冲区,待缓存区中存在预定数量的多个探测结果时,将多个探测结果进行打包和压缩,以生成探测结果返回报文。
8.根据权利要求7所述的基于流程解耦的分布式网络探测任务自适应高效调度方法,其特征在于,在步骤S4中,控制端从消息服务器的结果队列中持续拉取探测结果返回报文,并对其进行解压缩处理,解析出原始探测结果;控制端根据任务类型将探测结果分配到不同的本地结果队列,本地结果队列至少包括TCP结果队列、UDP结果队列、服务识别队列、漏洞扫描队列。