一种互联网旁路监测系统的TCP连接管理方法转让专利

申请号 : CN200710178168.1

文献号 : CN101447896B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 王湘煜袁丹

申请人 : 北京九合创胜网络科技有限公司

摘要 :

本发明公开一种互联网旁路监测系统的TCP连接管理方法。该方法包括:监测系统初始化完成后接收数据包,根据数据包查找与该数据包对应的连接;若找到与所述数据包对应的连接结点,则设置该结点的连接状态;若未找到则进行应用层数据处理,并根据处理结果找到的应用层协议建立连接结点,将建立的连接结点加入到超时队列;设置并检查结点的连接状态,若连接状态变化到结束状态,则删除连接结点,并更新超时队列;若连接状态未变化到结束状态,则更新连接结点所维护的定时器,并根据连接结点所处状态设置定时器的时长;判断是否需要检查超时队列,若是则进行检查并删除超时的连接结点。该方法实现方便的对监测系统所监测的TCP连接进行管理。

权利要求 :

1.一种互联网旁路监测系统的TCP连接管理方法,其特征在于,包括:监测系统初始化完成后接收数据包,根据数据包查找与该数据包对应的连接结点;

若找到与所述数据包对应的连接结点,则设置该连接结点的连接状态;若未找到与所述数据包对应的连接结点则进行应用层数据处理,并根据处理结果找到的数据包所属的应用层协议建立连接结点,将建立的连接结点加入到超时队列并设置该连接结点的连接状态;其中所述进行应用层数据处理的步骤包括:监测系统进行应用层数据处理,对应用层协议进行初始化后接收数据包;取应用层数据并判断是否有数据,若有则查找数据包对应的连接;若找到该连接则调用应用层协议来处理数据;若未找到则查找数据包所属的应用层协议,若找到则进行实例化应用层协议的操作;

检查连接结点的连接状态,若连接状态变化到结束状态,则删除连接结点,并更新超时队列;

若连接结点的连接状态未变化到结束状态,则更新连接结点所维护的定时器,并根据连接结点所处状态设置定时器的时长;

判断是否需要检查超时队列,若是则进行检查并删除超时的连接结点。

2.根据权利要求1所述的方法,其特征在于,所述方法进一步包括:每个连接结点对应维护一个定时器。

3.根据权利要求1所述的方法,其特征在于,所述设置连接结点的连接状态的步骤还包括:以符合监测系统使用的TCP状态变迁来设置连接结点的连接状态。

4.根据权利要求1所述的方法,其特征在于,所述的判断是否需要检查超时队列的步骤还包括:若判断结果为不需要检查,则继续进行接收数据包的操作。

5.根据权利要求1所述的方法,其特征在于,所述的判断是否有数据的步骤还包括:若没有数据则继续执行接收数据包。

6.根据权利要求1所述的方法,其特征在于,所述的查找数据包所属的应用层协议的步骤进一步包括:若未找到该协议则继续执行接收数据包。

说明书 :

一种互联网旁路监测系统的TCP连接管理方法

技术领域

[0001] 本发明涉及网络安全技术,尤其涉及一种互联网中旁路式数据监测中的TCP连接管理方法。

背景技术

[0002] 数据监测是指通过还原网络中的原始数据,分析网络状态或过滤网络数据的行为,起到对网络中的协议连接状态进行管理的目的,通过数据监测管理员可以监控网络资源是否被合法使用。
[0003] TCP/IP(Trans control protocol/Internet Protocol)协议栈已成为目前互联网中的实际连接标准。TCP协议是属于TCP/IP协议栈中的传输层,它向应用层提供一种面向连接,可靠的字节流服务。面向连接意味着两个TCP的应用,通常是一个客户和一个服务器之间在彼此交换数据之前必须建立一个TCP连接。当连接建立后,才能在彼此之间交换数据,进行通信。完成通信后,必须释放连接。通过在IP协议头中获得连接双方的IP地址和端口号,可以确定唯一的连接。
[0004] 为维持和保证一个TCP连接,TCP协议对连接的建立,维护和拆除都有相应的处理规定,并形成标准的TCP状态变迁图(见附图1)及对应状态下的定时器,反应不同时间和情况下的连接状态,用于保证各种正常或异常条件下的都能正常工作。
[0005] 在标准的TCP连接状态监测中,是从客户端和服务器端通信双方的角度来定义一个TCP连接的状态变迁,而监测系统需要从第三方的角度来管理一个TCP连接。虽然监测的是相同的数据,但TCP协议栈与监测系统之间在管理TCP连接上还存在一些区别,这也是利用TCP标准状态变迁图进行监测管理所存在的问题。
[0006] 从上述对现有标准的TCP连接状态监测中,发明人发现上述现有技术至少存在以下问题:
[0007] (1)操作系统中标准TCP协议栈管理的连接数量远小于监测系统处理机管理的TCP连接数量,因此用TCP协议栈的方法无法快速有效地定位一个数据包属于哪一个连接;
[0008] (2)标准的TCP状态变迁图中一次连接的建立是由SYN(建立连接标志)包开始,而监测系统一个连接可能由其它的数据包建立一个连接,因为监测系统会在一个TCP连接建立后才捕获到数据,因此监控系统必须能处理由其它的数据包建立的连接。
[0009] (3)为了保证TCP连接的可靠性,在标准的TCP连接中会维护多个定时器,在不同的状态下使用不同的定时器,使定时器管理过于复杂。而监测系统是处于旁观者的角度,对TCP连接的可靠性要求不高,因此没必要维护太多的定时器。

发明内容

[0010] 本发明提供了一种互联网旁路监测系统的TCP连接管理方法。通过收到的数据包来定位或建立TCP连接,方便的进行多个连接的管理,达到监测各连接状态进行删除或建立各连接的目的。
[0011] 本发明的目的是通过以下技术方案实现的:
[0012] 本发明提供一种互联网旁路监测系统的TCP连接管理方法,包括:
[0013] 监测系统初始化完成后接收数据包,根据数据包查找与该数据包对应的连接结点;
[0014] 若找到与所述数据包对应的连接结点,则设置该结点的连接状态;若未找到与所述数据包对应的连接结点则进行应用层数据处理,并根据处理结果找到的数据包所属的应用层协议建立连接结点,将建立的连接结点加入到超时队列;
[0015] 设置并检查结点的连接状态,若连接状态变化到结束状态,则删除连接结点,并更新超时队列;
[0016] 若结点的连接状态未变化到结束状态,则更新连接结点所维护的定时器,并根据连接结点所处状态设置定时器的时长;
[0017] 判断是否需要检查超时队列,若是则进行检查并删除超时的连接结点。
[0018] 所述方法进一步包括:每个连接结点对应维护一个定时器。
[0019] 所述设置结点的连接状态的步骤还包括:以符合监测系统使用的TCP状态变迁来设置结点的连接状态。
[0020] 所述的判断是否需要检查超时队列的步骤还包括:
[0021] 若判断结果为不需要检查,则继续进行接收数据包的操作。
[0022] 所述进行应用层数据处理的步骤包括:监测系统进行应用层数据处理,对应用层协议进行初始化后接收数据包;取应用层数据并判断是否有数据,若有则查找数据包对应的连接;若找到该连接则调用应用层协议来处理数据;
[0023] 若未找到则查找数据包所属的应用层协议,若找到则进行实例化应用层协议的操作。
[0024] 所述的判断是否有数据的步骤还包括:若没有数据则继续执行接收数据包。
[0025] 所述的查找数据包所属的应用层协议的步骤进一步包括:若未找到该协议则继续执行接收数据包。
[0026] 由上述本发明实施例提供的技术方案可以看出,本发明实施例的连接管理方法,在标准的TCP连接管理的基础上,针对监测系统的特点,方便的对监测系统所管理的TCP连接进行定位或建立的处理,且每个TCP连接只维护一个定时器,达到监测系统管理和维护数量庞大的TCP连接的目的,保证监测系统对应用层协议的分析与处理。

附图说明

[0027] 图1为现有技术提供的TCP连接的状态变迁图;
[0028] 图2为本发明实施例的监测系统所使用的TCP连接的状态变迁图;
[0029] 图3为本发明实施例的监测系统的连接管理方法流程图;
[0030] 图4为本发明实施例的监测系统对应用层数据处理流程图。

具体实施方式

[0031] 本发明实施例提供了一种互联网旁路监测系统的TCP连接管理方法。根据接收到的数据包进行连接结点的查找或建立,并设置、检查该连接结点的状态,使监测系统方便的对所监测的数据庞大的TCP连接进行管理,与现有的标准的TCP协议栈相比,具有管理方便,管理所维护的定时器简单等优点。
[0032] 为便于理解本发明,下面结合附图对和具体实施例进行说明。
[0033] 实施例一
[0034] 本发明实施例是一种互联网旁路监测系统的TCP连接管理方法,该方法具体包括下述处理步骤:
[0035] 监测系统初始化完成后接收数据包,根据数据包查找与该数据包对应的连接结点;
[0036] 若找到与所述数据包对应的连接结点,则设置该结点的连接状态;若未找到与所述数据包对应的连接结点则进行应用层数据处理,并根据处理结果所查找到的数据包所属的应用层协议来建立连接结点,将建立的连接结点加入到超时队列;
[0037] 设置并检查结点的连接状态,若连接状态变化到结束状态,则删除连接结点,并更新超时队列;
[0038] 若连接状态未变化到结束状态,则更新连接结点所维护的定时器,并根据连接结点所处状态设置定时器的时长;
[0039] 判断是否需要检查超时队列,若是则进行检查并删除超时的连接结点。
[0040] 其中,每个连接结点对应维护一个定时器。
[0041] 其中,所述设置结点的连接状态时以符合监测系统使用的图2所示,TCP状态变迁图来设置结点的连接状态。
[0042] 所述的判断是否需要检查超时队列时,若结果为不需要检查,则继续进行接收数据包的操作。
[0043] 所述的进行应用层数据处理包括:监测系统对应用层协议进行初始化后接收数据包;取应用层数据并判断是否有数据,若有则查找数据包对应的连接,若没有数据则继续执行接收数据包;若找到该连接则调用应用层协议来处理数据;若未找到则查找数据包所属的应用层协议,若找到则进行实例化应用层协议的操作。
[0044] 所述的查找数据包所属的应用层协议时,若未找到该协议则继续执行接收数据包。
[0045] 如图2所示,给出了本发明中监测系统所使用的TCP连接状态变迁图,下面给出其中相应的解释:
[0046] 连接状态 对应解释
[0047] CLOSED关闭,新建立一个连接结点时的状态,即初始状态;
[0048] SYN1_SENT_1 第一个有SYN标志的TCP包发送,正常打开和同时打开连接共用的状态;
[0049] SYN1_SENT_2 第二个有SYN标志的TCP包发送,针对TCP连接同时打开的状态;
[0050] SYN1_ACK 一个SYN被响应,同时打开时的状态,SYN为建立连接标志;
[0051] SYN2_SENT SYN2包发送,正常打开连接时的状态;
[0052] ESTABLISHED 数据传输状态;
[0053] FIN_WAIT_1 第一个FIN1发送,正常关闭和同时关闭时共用;
[0054] FIN_WAIT_2 一个FIN被响应,正常关闭时的状态;
[0055] CLOSE_WAIT 第二个FIN被发送,正常关闭时的状态;
[0056] CLOSING_1 第二个FIN被发送,同时关闭时的状态;
[0057] CLOSING_2 一个FIN被响应,同时关闭时的状态;
[0058] TIME_WAIT 两个FIN被响应,进入2MSL超时等待,此时可以删除连接;
[0059] RST 收到RST包,连接重置,此时可以删除连接,TCP连接异常中止产生的数据包;RST为重置连接标志
[0060] 与TCP标准状态的对比变化的状态;
[0061] LISTEN 是服务器端口监听时的状态,监测系统不可能获得这种情况,此状态去掉;
[0062] LAST_ACK 合并正常的TCP连接关闭中客户端和服务器端的状态变化,此状态去掉;
[0063] CLOSE 合并正常的TCP连接关闭中客户端和服务器端的状态变化,此状态去掉;
[0064] CLOSING 针对同时关闭时的情况,去掉这个状态,增加CLOSING1和CLOSING2;
[0065] SYN_SENT 对应SYN1_SENT_1,为同时打开的情况做变动;
[0066] SYN收到 对应SYN2_SENT增加的状态;
[0067] SYN1_SENT_2 针对同时打开连接时增加;
[0068] CLOSING1 针对同时关闭的情况增加;
[0069] CLOSING2 针对同时关闭的情况增加。
[0070] 新状态变迁图的特点:
[0071] 对于新定义的TCP状态,它不区分服务器与客户端,因此在对应每一个TCP连接,只需要维护一个状态图。
[0072] 监测系统使用的数据包类型定义如下:
[0073] 数据包类型 解释
[0074] SYN1 只设置SYN标志位的数据包,TCP建立连接标准三步握手中的第一步;也有可能是同时连接时双方发出的第一个包;
[0075] SYN2 包含SYN和ACK的数据包,TCP建立连接三步握手中的第二步;
[0076] ACK(响应)只包含ACK的TCP包,这种类型数据包存在的范围最广泛,在TCP连接的各个阶段都会在;
[0077] DATA 包含应用层数据的TCP包,也有可能包含ACK标志;
[0078] 一般只在ESTABLISHED存在,极少数情况在TCP连接处理于半关闭状态(有FIN包发出)还有这类数据包;
[0079] FIN 包含FIN标志位的TCP包,关闭连接时产生;
[0080] RST 包含RST标志位的TCP包,重置连接使用,可以在任何时间产生,表示TCP连接中断;
[0081] 数据包类型的定义主要是根据TCP协议头中的6个标志位来做判断的,使用了其中的四个标志位ACK,SYN,FIN,RST。URG和FSH标志位是对TCP协议传输的应用层数据起作用,只有在ESTABLISHED状态才有,在定义状态变迁图时不予考虑。
[0082] 图2中,根据TCP连接的现有状态和获得的数据包的类型,变迁到下一个状态,最上面一行表示连接获得的数据包的类型;
[0083] 最左边的一列表示TCP连接现在的状态;
[0084] 中间是表示根据TCP连接现在的状态和数据包的类型,TCP连接将要进入的下一个状态。
[0085] 当TCP连接进入TIME_WAIT状态或RST状态则不再变化。
[0086] 表中的TCP连接的状态变迁除了正常的状态变迁外,还考虑了各种异常情况时的TCP连接状态变化。
[0087] 异常情况包括:
[0088] (1)在TCP连接发生后得到TCP连接的数据,数据包完整时,TCP连接应该从CLOSED变化到SYN1_SENT_1,在TCP连接发生后获得数据,则会从CLOSED变迁到其它状态。这是由监测系统的特点决定的,在系统刚开始运行的时候的连接都是没有开始的。
[0089] (2)监测系统丢包,TCP协议有重发机制,因此标准的TCP状态变迁图不用考虑这个问题。但在对于监测系统来说,由于采集或其它的原因,造成的系统丢包问题是不可避免,在这种情况下,TCP连接的状态会跳过正常状态变迁中的某一步或几步,保证TCP连接能继续工作。
[0090] (3)RST包,无论什么时候收到RST包,都直接进入RST状态。
[0091] 在状态变迁表中,每一个数据包都会引起一次状态变迁的动作,虽不一定会改变连接的状态,但可能会对连接的定时器进行更新(如在ESTABLISHED状态下的ACK和DATA包,连接的状态都会改变,但此时需要设置的定时器时长不同,如果是ACK包,应该参考保活定时器设置,如果是DATA包,应该参考重发定时器设置,这是针对TCP标准状态变迁图中的问题2)。
[0092] 在ESTABLISHED状态收到ACK设置定时器时长要注意的问题:
[0093] TCP连接处理ESTABLISHED时,可能连接的双方都有数据需要响应,如果这时只有一个方向的ACK,定时器时长应该是按重发定时器设置,如果有两个方向的ACK,则按保活定时器设置。
[0094] 结合具体的流程图,以分步骤的方式对本发明的连接管理方法进行说明。
[0095] 如图3所示,它示出了监测系统TCP连接管理方法的流程:
[0096] 其中,步骤31,监测系统初始化状态变化表,状态表需要考虑不完整的TCP连接。保存在各种总情况下都能正常工作;
[0097] 步骤32,接收数据包;
[0098] 步骤33,查找数据包对应的连接;
[0099] 步骤34,是否找到结点,若找到执行步骤39,若未找到则执行步骤35;
[0100] 步骤35,查找数据包应用层所属协议;
[0101] 步骤36,是否找到协议,若是执行37,否则执行32;
[0102] 步骤37,建立连接结点;
[0103] 步骤38,将结点加入到超时队列;
[0104] 步骤39,设置连接状态;由于监测系统是从旁观者的角度监测TCP连接,因此不能使用标准的TCP状态变迁图,需要使用以标准状态变迁图为基础得出的图2的状态变迁图;
[0105] 步骤310,检查连接状态,若连接变化到结束状态,执行步骤11;否则执行步骤12;
[0106] 步骤311,删除连接结点,删除连接结点不只是在链表中删除,同时还需更新超时队列;
[0107] 步骤312,更新结点定时器,定时器的时长根据结点所处的状态设置;
[0108] 步骤313,是否需要检查超时队列;是执行步骤14,否返回执行步骤2;
[0109] 步骤314,检查超时队列,将超时的连接结点删除。
[0110] 下面结合图4对本发明的应用层数据处理的具体流程进行分步骤说明:
[0111] 其中,步骤41:应用层协议初始化;
[0112] 步骤42:接收数据包;
[0113] 步骤43:取应用层数据;
[0114] 步骤44:判断是否有数据,若有数据执行45,若没有数据则执行42;
[0115] 步骤45:查找数据包对应的连接;
[0116] 步骤46:是否找到,若找到执行410,若未找到执行47
[0117] 步骤47:查找数据包所属的应用层协议;
[0118] 步骤48:是否找到,找到执行49,未找到执行42;
[0119] 步骤49:实例化应用层协议;
[0120] 步骤410:调用应用层协议处理函数处理数据。
[0121] 综上所述,本发明实施例中的监测系统对TCP连接的管理方法,利用以标准的TCP连接状态变迁图得出的适用于监测系统的TCP状态变迁图,通过接收的数据包定位或建立相应的连接,同时设置并检查该连接的状态,来确定对该连接的更新或删除,使用该方法使监测系统方便的进行多个TCP连接的管理,且每个连接只需要维护一下定时器,避免了现有标准的TCP/IP协议栈要进行复杂的定时器管理的问题。
[0122] 以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。