一种NAT后主机数量检测方法与流程

文档序号:18249437发布日期:2019-07-24 09:37阅读:673来源:国知局
一种NAT后主机数量检测方法与流程

本发明涉及网络测量技术,具体来说,涉及对NAT后主机数量的被动检测技术。



背景技术:

随着互联网规模的不断扩大,IP地址资源变得越来越紧张。为了解决IP地址短缺的问题,因特网工程任务组于1994年提出了网络地址转换技术(下称NAT)。其典型结构如图1所示,主机在局域网内部使用私有地址,而当内部节点要与外部网络进行通讯时,就在网关处将内部地址替换成公用地址,从而在外部公网上正常使用。NAT可以使多台计算机共享internet连接,这一功能很好地解决了公用地址紧缺的问题。

虽然NAT具有缓解IP地址短缺压力,提高网络使用的隐私性等优点。但由于其改变了数据包原有的IP地址信息,所以给网络的监管与统计带来了严重的影响。比如,在统计局域网内连接外网的主机数量方面,由于NAT的采用,我们无法再通过统计IP地址数的方式来确定连接外网的主机数量。为了解决这一问题,相关研究人员已经设计了一系列的检测方案,对NAT后主机数量进行检测。检测方案可分为主动检测和被动检测两种。

在现有的被动检测方法中,比较典型的有IP ID序列法、timestamp检测法以及cookie检测法。其中IP ID检测法利用某些操作系统IP报文中ID字段与所发IP报文数目同步递增的特点,通过检测网关出口流量中连续的ID序列段数目来估计主机数目。而timestamp检测法利用不同主机发出的TCP报文中timestamp字段与接收时间表现出不同的线性关系这一特点,通过计算不同的线性关系数目来估计主机数目。对于cookie检测法,则是通过提取所捕获http报文的cookie字段,统计同一网站下不同cookie的数量来估计主机数目。

以上三种方法虽然经过不断改进,但始终存在一定的局限性。其中,对于IP ID序列法,由于许多操作系统并不按与所发IP报文数目同步递增的方式处理ID字段,且算法本身还会受丢包、延时、序列段交叉的影响,所以难以有效估计NAT后的主机数目。而对于timestamp检测法,由于timestamp为TCP报文的选项字段,许多操作系统并不使用,所以也不能得出准确的结果。最后cookie检测法不仅涉嫌侵犯用户隐私,同时由于https的广泛采用,也显得不适用。通过以上分析,发明人发现现有被动检测手段在检测NAT后主机数目方面均存在一定的缺陷,因此,设计一种新的被动检测方案来对NAT后主机数目进行精准有效的估计是非常必要的。



技术实现要素:

因此,为了达到上述目的,本发明提供一种新的NAT后主机数量检测方法,更加精准有效的估计NAT后主机。

本发明的目的是通过以下技术方案实现的:

本发明的一种NAT后主机数量检测方法,包括如下步骤:

S1、根据每一种操作系统特征将流量按照操作系统类型进行分类;此处的操作系统特征采用的是操作系统指纹特征,每一类操作系统指纹特征是指在网络数据包中能标志发送方所安装的操作系统类型的信息,一般情况下,操作系统指纹特征采用IP报文值与TCP报文窗口大小值的组合,因为每一类操作系统对应的IP报文值与TCP报文窗口大小值各不相同,所以以IP报文值与TCP报文窗口大小值的组合作为识别操作系统的指纹特征。

S2、针对每一类操作系统所对应的流量,确定一个待检应用程序;根据部署环境,选择用户使用量第一的应用程序作为此类操作系统的待检应用程序。

S3、针对每一类操作系统对应的流量,统计其对应待检应用程序包含的TCP长连接,确定每一类操作系统对应的主机数量;针对每一种操作系统,遍历其对应流量中的所有TCP连接记录,统计TCP连接记录中的其对应待检应用程序对应的TCP长连接数,TCP长连接数即为相应操作系统对应的主机数量;

S4、根据每一类操作系统对应的主机数量,得到NAT后主机的总数。

其中,所述步骤S3中,包括如下步骤:

S31、读取操作系统下统计的一条TCP连接记录;

S32、判断步骤S31读取的TCP连接记录中的源IP或者目的IP是否位于此类操作系统的待检应用程序对应服务器IP网段内,若是,转到步骤S33;若否,转到步骤S35;

S33、判断此条TCP连接的持续时间是否大于时间阈值,若是,转到步骤S34;若否,转到步骤S35;

S34、判断此条TCP连接的数据传输速率是否小于速率阈值,若是,则本类操作系统下的待检应用程序的长连接数加1;若否,转到步骤S35;

S35、判断是否遍历完此类操作系统下的所有TCP连接,若是,本类操作系统对应的待检应用程序的TCP长连接数统计结束,转到下一类操作系统,针对下一类操作系统重复执行步骤S31至S35,直到遍历完所有类型操作系统的TCP连接记录;若否,转到步骤S31。

需要说明的是,上述步骤中的时间阈值根据不同部署环境由试验确定;同类操作系统对应的不同待检应用程序,其时间阈值不一致。时间阈值为以下三者之一:10分钟、已释放的TCP连接中持续时间最长的一条TCP连接的持续时间的2倍、30分钟。

需要说明的是,上述步骤中的速率阈值根据不同部署环境由实验确定;同类操作系统对应的不同待检应用程序,其速率阈值不一致。速率阈值为不同部署环境下测量得到的待检应用程序TCP长连接上单次数据交互所传输的最大数据量与测量得到的待检应用程序TCP长连接上每两次数据交互之间的最短时间间隔的比值乘以调整系数,调整系数是1至5范围内的任意正整数。

相对于已有的NAT后主机数目检测方案,本方案具有检测精度高、处理速度快、空间占用少、保障用户隐私的优点。首先,本方案通过流量分类及为每种操作系统类型流量指定待检程序的方法,覆盖了尽可能多的主机,而以往方法通常都是针对特定系统、特定协议或特定的用户行为,在主机覆盖范围方面不如本发明,因此其检测精度也较本发明低。其次,本发明处理的数据粒度是流级的,而现有方案大多都是包级的,流级数据相较于包级数据过滤了大量无效信息,所以无论从处理速度和空间占用方面来说,本发明均优于已有方案。最后,本发明检测过程中,不读取用户传输的任何数据内容,充分保护了用户隐私。

附图说明

以下参照附图对本发明实施例作进一步说明,其中:

图1为现有技术下NAT结构示意图;

图2为根据本发明实施例的一种NAT后主机数量检测方法的客户与服务器连接示意图;

图3是根据本发明的实施例的一种NAT后主机数量检测方法的主机数量检测主要流程示意图;

图4是根据本发明的实施例的一种NAT后主机数量检测方法的TCP长连接统计流程示意图;

图5是根据本发明的实施例的一种NAT后主机数量检测方法的网络场景示意图。

具体实施方式

为了使本发明的目的,技术方案及优点更加清楚明白,以下结合附图通过具体实施例对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。

首先,介绍一下本发明方法提出的理论依据。如今,使用C/S架构的应用程序广泛存在于PC机及各种智能终端设备。如图2所示,在C/S架构体系下,客户端与服务器之间通常存在一条TCP长连接和多条TCP短连接。其中,TCP短连接用于客户与服务器之间的即时数据传输,当传输完成后连接就关闭;而TCP长连接则用于客户向服务器传递在线信息及双方某些控制信息的交互。发明人通过研究发现,应用程序的TCP长连接具有如下特征:1.与客户端应用程序一一对应;2.服务端IP位于固定网段内;3.连接持续时间长,存在于客户端的整个生命周期内;4.TCP长连接的平均数据传输速率远低于TCP短连接。基于以上特征,我们就可以通过分析网关出口流量中所有TCP连接的目的IP、持续时间以及数据传输速率,识别特定程序的TCP长连接,并统计出该程序在一定时间内对应的TCP长连接数,得到该时间段内处于运行状态的特定程序总数。又由于程序与主机通常是一一对应的,所以我们就可以进一步计算出当前时间处于活跃状态的主机总数。

基于上述发现,本发明提出一种NAT后主机数量检测方法。从总体思路上来说,本发明提出的针对NAT后主机数量检测方法是一种基于流级的检测方案,通过分析网关出口流量中所有TCP连接的目的IP、持续时间以及数据传输速率,识别特定程序的TCP长连接,并统计该程序在一定时间内对应的TCP长连接数,以此为依据,进一步计算出当前时间处于活跃状态的主机总数。

下面结合附图详细说明本发明。

图5示出了一种常见网络场景,在该场景中,在带NAT功能的网关路由器后主要搭载andriod、ios、windows等系统类型的主机,本实施例中分别用OS1、OS2、...、OSn指代上述不同地操作系统,下面将参照图5,结合图3和图4对本实施例的NAT后主机数量检测方法进行介绍,其包括:

A1、获取网关的流量数据;

在本实施例中,由于客户端是通过网关路由器连接到服务器,因此可以获得网关路由器的镜像流量数据。根据其他实施例,也可以通过交换机等获取流量数据。

A2、将捕获的流量按操作系统类型分类;

在对流量进行分类时,利用操作系统指纹特征将流量分成不同的类型;其中,操作系统指纹特征指的是在网络数据包中能标志发送方所安装的操作系统类型的信息,由于这样的信息有很多,所以操作系统指纹特征的选取方式也有多种。

根据本发明的一个实施例,选取行业内使用较为广泛且比较高效的一种指纹特征:IP报文TTL值加TCP报文窗口大小值的组合作为操作系统指纹特征用于识别操作系统对应的流量。

在图5的实施例中,将流量按照操作系统OS1、OS2、...、OSn的指纹特征划分为OS1型流量、OS2型流量、...、OSn型流量。

A3、针对每一类操作系统对应的流量,确定一个待检应用程序;

其中,操作系统对应的待检应用程序的确定主要以特定部署环境中应用程序的普及程度为依据;根据本发明的一个实施例,在部署环境及操作系统类型确定的前提下,可以选取用户使用量第一的应用程序作为待检应用程序;对于不同的部署环境,所选取的待检应用程序可以不同。

为每一种操作系统确定一个待检应用程序,例如对于OS1系统类型流量,可以指定APP1作为待检应用程序,对于OS2系统类型流量,可以指定APP2作为待检应用程序,以此类推,对于OSn系统类型流量,可以指定APPn作为待检应用程序;建立信息记录表,如表1所示:

表1

A4、提取每一类操作系统对应的流量中的TCP连接,形成TCP连接记录;

例如,TCP连接记录包含以下信息:源IP、目的IP、源端口、目的端口、数据传输总量、第一个报文到达时间、最后一个报文到达时间;因此,针对图5的实施例,分别提取OS1型流量、OS2型流量、...、OSn型流量中的TCP连接记录,TCP连接记录包含以下信息:源IP、目的IP、源端口、目的端口、数据传输总量、第一个报文到达时间、最后一个报文到达时间;如表2所示:

表2

A5、分析各类型操作系统对应的流量中的TCP连接记录,统计其中每类操作系统对应的待检应用程序包含的TCP长连接数;

由于该TCP长连接数与该时间段内处于运行状态的特定程序总数相对应,并且由于程序与主机通常是一一对应的,因此可以将待检应用程序对应的TCP长连接数作为对该类型操作系统对应的系统主机数量的估计。

例如,针对OS1型流量、OS2型流量、...、OSn型流量中的TCP连接记录,对这些TCP连接记录进行分析,以确定特定应用程序所包含的TCP长连接数,从而估计出相应操作系统对应地主机数。对OS1系统类型的TCP连接记录分析而言,由于其对应的待检应用程序为APP1,所以对于OS1型流量,我们只需要检测APP1包含的TCP长连接数NAPP1即为OS1系统类型对应的主机数量Nos1;对于对OS2系统类型的TCP连接记录分析而言,由于其对应的待检应用程序为APP2,所以对于OS2型流量,我们只需要检测APP2包含的TCP长连接数NAPP2即为为OS2系统类型对应的主机数量Nos2;以此类推,对OSn系统类型的TCP连接记录分析而言,由于其对应的待检应用程序为APPn,所以对于OSn型流量,只需要检测APPn包含的TCP长连接数NAPPn即为OSn系统类型对应的主机数量Nosn。

根据本发明的一个实施例,如图4所示,统计每类操作系统对应的待检应用程序的TCP长连接数时,针对每类操作系统对应的流量执行如下步骤:

B1、读取OS1型流量中的一条TCP连接记录;

B2、判断此条TCP连接记录中的dstIp或srcIp是否处于预先设置的APP1服务器网段内;

B3、.根据此条TCP连接记录中的第一个报文到达时间ts与最后一个报文到达时间te计算出连接持续时间tm=te-ts,判断tm是否大于待检应用程序的时间阈值T;

B4、根据此条TCP连接记录中的数据传输总量totalBytes以及步骤B3中获得的连接持续时间tm计算出平均数据传输速率ve=totalBytes/tm,并判断ve是否小于速率阈值V;

B5、如果步骤B3和步骤B4中的判断结果均为是,则此条TCP连接记录对应的待检应用程序的TCP长连接数加1,然后读取下一条TCP连接记录,重复步骤B2至B5;若步骤B3和步骤B4中有一个判断结果为否,则直接跳出读取下一条TCP连接记录,重复步骤B2至B5;遍历完OS1系统类型的所有TCP连接记录,得到待检应用程序APP1包含的TCP长连接数NAPP1,从而计算出OS1系统类型流量对应的主机数为NOS1=NAPP1。按照同样的方法,可以计算出所有类型操作系统对应主机数量,从而计算出NAT后主机总数。

需要说明的是,上述实施例中,对于不同待测应用程序,其服务器网段不同,速率阈值V也往往不同;待测应用程序的服务器网段可通过解析DNS报文获得;每一待检应用程序的速率阈值V按如下公式计算:

其中,

maxSizePerTrans:测量得到的待检应用程序TCP长连接上单次数据交互所所传输的最大数据量;

minInterval:测量得到的待检应用程序TCP长连接上每两次数据交互之间的最短时间间隔;

adjustFactor:调整系数默认取5,也可根据实际情况进行一定程度地调整,不过至少应该大于1。

对于不同待测应用程序,其时间阈值T也是不相同的,时间阈值在检测过程中可动态变化,每一待检应用程序的计算公式如下:

T=max(max(2*MCTs,10minutes),min(2*MCTs,30minutes)),其中,

MCTs为在已释放的TCP连接中,持续时间最长的一条TCP连接的持续时间;当2*MTs>30min时,T取30min;当2*MTs<10min时,T取10min;当10min<=2*MTs<=30min时,T取2*MTs。

在图5的实施例中,NAT后主机总数N总,N总=NOS1+NOS2+...+NOSn,如表3所示:

表3

如上实施方式所述,本方案采用基于TCP长连接的流级识别方法,能成功检测出NAT后活跃主机总数,而且从检测精度、处理速度、空间占用、隐私保护等方面综合考虑,其效果也优于现有检测方案。相对于已有的NAT后主机数目检测方案,本方案具有检测精度高、处理速度快、空间占用少、保障用户隐私的优点。首先,本方案通过流量分类及为每种操作系统类型流量指定待检程序的方法,覆盖了尽可能多的主机,而以往方法通常都是针对特定系统、特定协议或特定的用户行为,在主机覆盖范围方面不如本方案,因此其检测精度也较本方案低。其次,本方案处理的数据粒度是流级的,而现有方案大多都是包级的,流级数据相较于包级数据过滤了大量无效信息,所以无论从处理速度和空间占用方面来说,本方案均优于已有方案。最后,本方案检测过程中,不读取用户传输的任何数据内容,充分保护了用户隐私。

需要说明的是,虽然上文按照特定顺序描述了各个步骤,但是并不意味着必须按照上述特定顺序来执行各个步骤,实际上,这些步骤中的一些可以并发执行,甚至改变顺序,只要能够实现所需要的功能即可。

本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。

计算机可读存储介质可以是保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以包括但不限于电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。

以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1