著录项信息
专利名称 | 一种协议代理检测方法和装置 |
申请号 | CN201110163203.9 | 申请日期 | 2011-06-17 |
法律状态 | 授权 | 申报国家 | 中国 |
公开/公告日 | 2011-10-19 | 公开/公告号 | CN102223266A |
优先权 | 暂无 | 优先权号 | 暂无 |
主分类号 | H04L12/26 | IPC分类号 | H;0;4;L;1;2;/;2;6;;;H;0;4;L;2;9;/;0;8;;;H;0;4;L;2;9;/;0;6查看分类表>
|
申请人 | 北京星网锐捷网络技术有限公司 | 申请人地址 | 北京市海淀区复兴路29号中意鹏奥大厦东塔11层
变更
专利地址、主体等相关变化,请及时变更,防止失效 |
权利人 | 北京星网锐捷网络技术有限公司 | 当前权利人 | 北京星网锐捷网络技术有限公司 |
发明人 | 温寅丰 |
代理机构 | 北京同达信恒知识产权代理有限公司 | 代理人 | 郭润湘 |
摘要
本发明提供了一种协议代理检测方法和装置,其中,该方法包括:在TCP连接建立时,接收应答握手信息的报文;根据应答握手信息的报文判断TCP连接是检测端发起的还是客户端发起的;若应答握手信息的报文是客户端发起的,则接收客户端发送的请求信息;判断请求信息是否是代理请求信息;如果请求信息是代理请求信息,则保存客户端请求访问的目的服务器信息;判断检测端是否与保存的请求访问的目的服务器建立连接;若检测端与保存的请求访问的目的服务器建立连接,则检测出采用了协议代理。本发明解决了对是否采用了代理协议检测效率低,且会漏报误报的问题,进而达到了检测是否采用协议代理效率高,检测结果准确的效果。
1.一种协议代理检测方法,其特征在于,包括:
在TCP连接建立时,接收应答握手信息的报文,所述应答握手信息的报文为syn_ack报文;
根据所述应答握手信息的报文判断所述TCP连接是检测端发起的还是客户端发起的,所述检测端为协议代理检测装置;
若所述TCP连接是所述客户端发起的,则接收所述客户端发送的请求信息;
判断所述请求信息是否是代理请求信息;
如果所述请求信息是代理请求信息,则保存所述客户端请求访问的目的服务器信息,所述目的服务器信息包括:目的服务器的目的地址和目的端口;
判断所述检测端是否与保存的请求访问的目的服务器建立连接,具体包括:判断接收到的所述应答握手信息的报文的源地址与源端口是否分别与所述客户端请求访问的目的服务器的目的地址和目的端口相符;如果相符,则判断出所述检测端与保存的请求访问的目的服务器建立连接;
若所述检测端与保存的请求访问的目的服务器建立连接,则检测出采用了协议代理。
2.根据权利要求1所述的方法,其特征在于,所述根据所述应答握手信息的报文判断所述TCP连接是检测端发起的还是客户端发起的步骤包括:
判断所述接收到的所述应答握手信息的报文的目的地址是否与所述检测端的地址相符;
如果相符,则判断出所述TCP连接是检测端发起的;
如果不相符,则判断出所述TCP连接是客户端发起的。
3.根据权利要求1所述的方法,其特征在于,还包括:
在TCP连接建立时,接收TCP报文;
判断所述TCP报文是否为应答握手信息的报文;
若所述TCP报文不是应答握手信息的报文,则判断所述TCP报文是否是结束报文,若所述TCP报文是应答握手信息的报文,则根据所述应答握手信息的报文判断所述TCP连接是检测端发起的还是客户端发起的;
若所述TCP报文不是结束报文,则判断所述TCP报文是否满足代理协议特征;
若所述TCP报文满足代理协议特征,则保存所述TCP报文请求访问的目的服务器信息。
4.根据权利要求3所述的方法,其特征在于,所述判断所述TCP报文是否为应答握手信息的报文步骤包括:
判断所述TCP报文是否为应答握手信息的报文;
若判断出所述TCP报文是应答握手信息的报文,则根据所述TCP报文的连接四元素生成与所述TCP报文对应的表项,插入到TCP过滤表中,并接收所述TCP报文;
若判断出所述TCP报文不是应答握手信息的报文,则以所述TCP报文的TCP连接四元素为索引在所述TCP过滤表中查找是否有与所述报文对应的表项,并在查找成功时,接收所述TCP报文。
5.根据权利要求3所述的方法,其特征在于,还包括:
若所述TCP连接是客户端发起的,则提取所述应答握手信息的报文的TCP连接四元素插入到代理客户端请求连接表中,判断接收到的所述请求信息是否满足代理协议特征,并在所述请求信息满足代理协议特征时,保存所述请求信息的报文请求访问的目的服务器信息到所述代理客户端请求连接表中;
若所述TCP连接是检测端发起的,则提取客户端的地址和端口在所述代理客户端请求连接表中查找,并在查找成功时,检测出采用了协议代理。
6.一种协议代理检测装置,其特征在于,包括:
第一接收单元,用于在TCP连接建立时,接收应答握手信息的报文,所述应答握手信息的报文为syn_ack报文;
第一检测单元,用于根据所述应答握手信息的报文判断所述TCP连接是检测端发起的还是客户端发起的,所述检测端为协议代理检测装置;
第二接收单元,用于在所述TCP连接是所述客户端发起时,接收所述客户端发送的请求信息;
第一判断单元,用于判断所述请求信息是否是代理请求信息;
第一保存单元,用于在所述请求信息是代理请求信息时,保存所述客户端请求访问的目的服务器信息,所述目的服务器信息包括:目的服务器的目的地址和目的端口;
第二判断单元,用于判断所述检测端是否与保存的请求访问的目的服务器建立连接,具体用于判断接收到的所述应答握手信息的报文的源地址与源端口是否分别与所述客户端请求访问的目的服务器的目的地址和目的端口相符;如果相符,判断出所述检测端与保存的请求访问的目的服务器建立连接;
第二检测单元,用于在所述检测端与保存的请求访问的目的服务器建立连接时,检测出采用了协议代理。
7.根据权利要求6所述的装置,其特征在于,所述第一检测单元具体用于判断接收到的所述应答握手信息的报文的目的地址是否与所述检测端的地址相符;如果相符,判断出所述TCP连接是检测端发起的;如果不相符,判断出所述TCP连接是客户端发起的。
8.根据权利要求6所述的装置,其特征在于,还包括:
第三接收单元,用于在TCP连接建立时,接收TCP报文;
第三判断单元,用于判断所述TCP报文是否为应答握手信息的报文;
第四判断单元,用于在所述TCP报文不是应答握手信息的报文时,判断所述TCP报文是否是结束报文;
第五判断单元,用于在所述TCP报文不是结束报文时,判断所述TCP报文是否满足代理协议特征;
第二保存单元,用于在所述TCP报文满足代理协议特征时,保存所述TCP报文请求访问的目的服务器信息。
9.根据权利要求8所述的装置,其特征在于,所述第三判断单元包括:
判断模块,用于判断所述TCP报文是否为应答握手信息的报文;
生成模块,用于在判断出所述TCP报文是应答握手信息的报文时,根据所述TCP报文的连接四元素生成与所述TCP报文对应的表项,插入到TCP过滤表中,并接收所述TCP报文;
第一查找模块,用于在判断出所述TCP报文不是应答握手信息的报文时,以所述TCP报文的TCP连接四元素为索引在所述TCP过滤表中查找是否有与所述报文对应的表项,并在查找成功时,接收所述TCP报文。
10.根据权利要求8所述的装置,其特征在于,所述第一判断单元,还包括:
提取模块,用于在所述TCP连接是客户端发起的时,提取所述应答握手信息的报文的TCP连接四元素插入到代理客户端请求连接表中,判断接收到的所述请求信息是否满足代理协议特征,并在所述请求信息满足代理协议特征时,保存所述请求信息的报文请求访问的目的服务器信息到所述代理客户端请求连接表中;
第二查找模块,用于在所述TCP连接是检测端发起的时,提取客户端的地址和端口在所述代理客户端请求连接表中查找,并在查找成功时,检测出采用了协议代理。
一种协议代理检测方法和装置\n技术领域\n[0001] 本发明涉及通信领域,特别是一种协议代理检测方法和装置。\n背景技术\n[0002] IP(Internet Protocol,网 络之 间 互连 的协 议)地 址:IP地 址是 TCP/IP(Transmission Control Protocol/Internet Protocol,传输控制协议/因特网互联协议)通讯协议中标记每台计算机的地址,在TCP/IP协议中,每台连网计算机都依靠IP地址来标识自己并用该IP地址进行交换信息。\n[0003] TCP(Transmission Control Protocol,传输控制协议)传输协议:TCP是TCP/IP体系中面向连接的运输层协议,它提供全双工和可靠的交付的服务。一条TCP连接的四元素唯一标识为:源IP、目的IP、源端口和目的端口。\n[0004] 协议代理:协议代理指的是如HTTP(HyperText Transfer Protoco l,超文本传输协议)、SOCKS(Protocol for sessions traversal across firewall securely,防火墙安全会话转换协议)4、SOCKS4A、SOCKS5等代理。\n[0005] (1)HTTP代理:HTTP代理指的是客户端与服务器端建立连接后(TCP连接),以请求方法、URI(Uniform Resource Identifier,通用资源标志符)、协议版本等方式向服务器端发出请求,该请求包含请求修饰符、客户信息、及可能的请求体(body)内容的MIME(Multipurpose Internet Mail Extensions,多功能Internet邮件扩充)类型消息。\n服务器端通过状态队列(status line)来回应,内容包括消息的协议版本、成功或错误代码,也包含服务器信息、实体元信息及实体内容的MIME类型消息。\n[0006] HTTP代理发送的请求行中的Request-URI为绝对统一资源标识符(如GEThttp://www.baidu.com/HTTP/1.0),而正常的http请求行中的Request-URI为相对统一资源标识符(如:GET/HTTP/1.0)。代理服务器以绝对形式接收URI请求,重写全部或部分消息,并将经过改写的请求继续向URI中指定的服务器处推送。\n[0007] (2)SOCKS SOCKS4A SOCKS5代理:图1出示了客户端向SOCKS 4代理服务器发送的连接请求包的格式(以字节为单位):\n[0008] 其中:VN是SOCK版本,应该是4;\n[0009] CD是SOCK的命令码,1表示CONNECT请求,2表示BIND请求;\n[0010] DSTPORT表示目的主机的端口;\n[0011] DSTIP指目的主机的IP地址;\n[0012] NULL是0;\n[0013] 图2出示了代理服务器给客户端发送的回应包的格式(以字节为单位):\n[0014] 其中:VN是回应码的版本,应该是0;\n[0015] CD是代理服务器答复,有几种可能:\n[0016] 90,请求得到允许;\n[0017] 91,请求被拒绝或失败;\n[0018] 92,由于SOCKS服务器无法连接到客户端的identd(一个验证身份的进程),请求被拒绝;\n[0019] 93,由于客户端程序与identd报告的用户身份不同,连接被拒绝。\n[0020] DSTPORT与DSTIP与请求包中的内容相同,但被忽略。\n[0021] 如果请求被拒绝,SOCKS服务器马上与客户端断开连接;如果请求被允许,代理服务器就充当客户端与目的主机之间进行双向传递,对客户端而言,就如同直接在与目的主机相连。SOCKS 4A是SOCKS 4协议的简单扩展,允许客户端对无法解析的目的主机,进行自行规定,即支持目的为域名地址的代理。而SOCKS5又做了更进一步的扩展,当TCP连接建立后,客户端和服务器首先要进入协商版本和认证方法的过程,之后才能发送代理请求。\n[0022] 数据包过滤监听技术:\n[0023] 个操作系统有一套的网络体系结构,通过该体系结构可以控制着整个系统的网络行为。如windows操作系统Window NT SP4之后的版本,提供了NDIS(Network Driver Interface Specification,网络驱动接口规范)中间层驱动。中间层驱动介于协议层驱动和小端口驱动之间,它能够截获所有的网络数据包(如果是以太网那就是以太帧)。\n[0024] 图3出示了简单操作系统网络体系示意图:\n[0025] 图3出示的操作系统网络体系架构,是对操作系统所有参与网络处理的组件以及这些组件协同工作的统称,这里并不单指网络驱动程序,也包含参与网络行为的应用层组件程序。在这些网络组件中,可以对本机发送和接收的数据,按照协议类型进行监听获取。\n还可以通过设置过滤筛子只获取本机发送和接收的TCP数据包,对于其它不关心的报文则忽略。可以用如下防火墙常用的典型技术进行监听获取(具体的开发技术请参考微软提供的相关开发文档):\n[0026] Winsock Layered Service Provider(LSP),微软提供的在用户态下进行数据包监听获取的技术。\n[0027] TDI过滤驱动程序(TDI Filter Driver),TDI的全称是Transport Driver Interface,TDI是一组接口的名字,Windows的上层网络组件调用这些接口来使用协议驱动。\n[0028] NDIS中间层驱动程序(NDIS Intermediate Driver),系统中所有的网络通信都经过NDIS中间层驱动程序,因此它可以用于网络数据包的监听。\n[0029] 不管是HTTP还是SOCKS代理,在这一过程中,主要有3个角色:代理客户端,代理服务器,代理客户端想要访问的服务器。代理客户端A通过代理服务器访问远程服务器A。\n[0030] 图4是代理行为的流程图,包括如下步骤:\n[0031] S402,代理客户端和代理服务器通过TCP三次握手建立起TCP连接;\n[0032] S404,代理客户端把想要访问的目的地址和目的端口通过刚才建立的TCP连接按相应的代理协议格式发送到代理服务器;\n[0033] S406,代理服务器按相应协议解析出目的地址和目的端口,按要求去连接该目的地址上的端口;\n[0034] S408,代理服务器为代理客户端和代理客户端访问的服务器两者之间提供数据透传。\n[0035] 而目前的对协议代理的检测主要有以下几种解决方法:\n[0036] 1、端口扫描法\n[0037] 通过扫描PC上开启了哪些端口,来判断是否开启了代理。但代理服务器可以修改端口号而避开这种检测。\n[0038] 2、代理软件扫描法\n[0039] 扫描PC机上是否运行了指定的代理软件,从而判断是否提供了代理服务。代理服务器软件多样,当出现新的代理服务器软件时检测将失效。\n[0040] 3、报文特征分析法\n[0041] 比较进出以及出进的报文的数据特征是否匹配来判断,当匹配时则判断为存在代理行为。多个数据报文间需要进行两两比较,假设如果有n个数据报文,那么比较的次数为(n>=2),当n选取的太小时,可通会漏报,当n选取的太大时,效率太低。\n并且可通还会出现误报的情况。只要出现进出的报文或者出进的报文数据特征匹配就会被判断为存在代理行为。例如:假设学生A开发了一款聊天客户端和服务器软件,A在自己的PC上运行服务器软件,学生B、C分别在另外两台PC上运行聊天客户端软件,B和C的所有聊天信息都通过A的PC上的服务器软件进行转发,那么该检测方法必会检测到A的PC上存在代理行为,而实际上B、C并不能通过A上外网。\n发明内容\n[0042] 本发明的主要目的在于提供一种协议代理检测方法和装置,以解决现有技术中对是否采用了代理协议检测效率低,且会漏报误报的问题。\n[0043] 根据本发明的一个方面,提供了一种协议代理检测方法,该方法包括:在TCP连接建立时,接收应答握手信息的报文;根据应答握手信息的报文判断TCP连接是检测端发起的还是客户端发起的;若应答握手信息的报文是客户端发起的,则接收客户端发送的请求信息;判断请求信息是否是代理请求信息;如果请求信息是代理请求信息,则保存客户端请求访问的目的服务器信息;判断检测端是否与保存的请求访问的目的服务器建立连接;\n若检测端与保存的请求访问的目的服务器建立连接,则检测出采用了协议代理。\n[0044] 根据应答握手信息的报文判断TCP连接是检测端发起的还是客户端发起的步骤包括:判断接收到的应答握手信息的报文的目的地址是否与检测端的地址相符;如果相符,则判断出TCP连接是检测端发起的;如果不相符,则判断出TCP连接是客户端发起的。\n[0045] 协议代理检测方法还包括:在TCP连接建立时,接收TCP报文;判断TCP报文是否为应答握手信息的报文;若TCP报文不是应答握手信息的报文,则判断TCP报文是否是结束报文,若TCP报文是应答握手信息的报文,则根据应答握手信息的报文判断TCP连接是检测端发起的还是客户端发起的;若TCP报文不是结束报文,则判断TCP报文是否满足代理协议特征;若TCP报文满足代理协议特征,则保存TCP报文请求访问的目的服务器信息。\n[0046] 判断TCP报文是否为应答握手信息的报文的步骤包括:判断TCP报文是否为应答握手信息的报文;若判断出TCP报文是应答握手信息的报文,则根据TCP报文的连接四元素生成与TCP报文对应的表项,插入到TCP过滤表中,并接收TCP报文;若判断出TCP报文不是应答握手信息的报文,则以TCP报文的TCP连接四元素为索引在TCP过滤表中查找是否有与报文对应的表项,并在查找成功时,接收TCP报文。\n[0047] 判断请求信息是否是代理请求信息的步骤还包括:\n[0048] 若TCP连接是客户端发起的,则提取应答握手信息的报文的TCP连接四元素插入到代理客户端请求连接表中,判断接收到的请求信息是否满足代理协议特征,并在请求信息满足代理协议特征时,保存请求信息的报文请求访问的目的服务器信息到代理客户端请求连接表中;\n[0049] 若TCP连接是检测端发起的,则提取客户端的地址和端口在代理客户端请求连接表中查找,并在查找成功时,检测出采用了协议代理。\n[0050] 目的服务器信息包括:目的服务器的目的地址和目的端口。\n[0051] 判断检测端是否与保存的请求访问的目的服务器建立连接的步骤包括:判断接收到的应答握手信息的报文的源地址与源端口是否分别与客户端请求访问的目的服务器的目的地址和目的端口相符;如果相符,则判断出检测端与保存的请求访问的目的服务器建立连接。\n[0052] 根据本发明的另一方面,提供了一种协议代理检测装置,该装置包括:第一接收单元,用于在TCP连接建立时,接收应答握手信息的报文;第一检测单元,用于根据应答握手信息的报文判断TCP连接是检测端发起的还是客户端发起的;第二接收单元,用于在应答握手信息的报文是客户端发起时,接收客户端发送的请求信息;第一判断单元,用于判断请求信息是否是代理请求信息;第一保存单元,用于在请求信息是代理请求信息时,保存客户端请求访问的目的服务器信息;第二判断单元,用于判断检测端是否与保存的请求访问的目的服务器建立连接;第二检测单元,用于在检测端与保存的请求访问的目的服务器建立连接时,检测出采用了协议代理。\n[0053] 第一检测单元具体用于判断接收到的应答握手信息的报文的目的地址是否与检测端的地址相符;如果相符,判断出TCP连接是检测端发起的;如果不相符,判断出TCP连接是客户端发起的。\n[0054] 协议代理检测装置还包括:第三接收单元,用于在TCP连接建立时,接收TCP报文;\n第三判断单元,用于判断TCP报文是否为应答握手信息的报文;第四判断单元,用于在TCP报文不是应答握手信息的报文时,判断TCP报文是否是结束报文;第五判断单元,用于在TCP报文不是结束报文时,判断TCP报文是否满足代理协议特征;第二保存单元,用于在TCP报文满足代理协议特征时,保存TCP报文请求访问的目的服务器信息。\n[0055] 第三判断单元包括:判断模块,用于判断TCP报文是否为应答握手信息的报文;生成模块,用于在判断出TCP报文是应答握手信息的报文时,根据TCP报文的连接四元素生成与TCP报文对应的表项,插入到TCP过滤表中,并接收TCP报文;第一查找模块,用于在判断出TCP报文不是应答握手信息的报文时,以TCP报文的TCP连接四元素为索引在TCP过滤表中查找是否有与报文对应的表项,并在查找成功时,接收TCP报文。\n[0056] 第一判断单元包括:提取模块,用于在TCP连接是客户端发起的时,提取应答握手信息的报文的TCP连接四元素插入到代理客户端请求连接表中,判断接收到的请求信息是否满足代理协议特征,并在请求信息满足代理协议特征时,保存请求信息的报文请求访问的目的服务器信息到代理客户端请求连接表中;第二查找模块,用于在TCP连接是检测端发起的时,提取客户端的地址和端口在代理客户端请求连接表中查找,并在查找成功时,检测出采用了协议代理。\n[0057] 目的服务器信息包括:目的服务器的目的地址和目的端口。\n[0058] 第二判断单元具体用于判断接收到的应答握手信息的报文的源地址与源端口是否分别与客户端请求访问的目的服务器的目的地址和目的端口相符;如果相符,判断出检测端与保存的请求访问的目的服务器建立连接。\n[0059] 通过本发明,采用在应答握手信息的报文时判断出TCP连接是谁发起的,并且根据发起端判断是否采用了代理来进行代理协议的检测,解决了对是否采用了代理协议检测效率低,且会漏报误报的问题,进而达到了检测是否采用协议代理效率高,检测结果准确的效果。\n附图说明\n[0060] 此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:\n[0061] 图1是根据相关技术的客户端向SOCKS 4代理服务器发送的连接请求包的格式示意图;\n[0062] 图2是根据相关技术的代理服务器给客户端发送的回应包的格式示意图;\n[0063] 图3是根据相关技术的简单操作系统网络体系示意图;\n[0064] 图4是根据相关技术的代理行为的流程图;\n[0065] 图5是根据本发明实施例的协议代理检测装置的一种优选结构框图;\n[0066] 图6是根据本发明实施例的协议代理检测装置的另一种结构框图;\n[0067] 图7是根据本发明实施例的协议代理检测方法的一种优选流程图;\n[0068] 图8是根据本发明实施例的协议代理检测方法的另一种流程图。\n[0069] 图9是根据本发明实施例的协议代理检测方法的又一种示意图。\n具体实施方式\n[0070] 下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。\n[0071] 实施例1\n[0072] 图5出示了的一种协议代理检测装置的优选结构框图,参见图5,该装置包括:依次连接的第一接收单元501、第一检测单元502、第二接收单元503、第一判断单元504、第一保存单元505、第二判断单元506以及第二检测单元507,其中:\n[0073] 第一接收单元501在TCP连接建立时,接收应答握手信息的报文;\n[0074] 第一检测单元502根据应答握手信息的报文判断TCP连接是检测端发起的还是客户端发起的;\n[0075] 第二接收单元503在应答握手信息的报文是客户端发起时,接收客户端发送的请求信息;\n[0076] 第一判断单元504判断请求信息是否是代理请求信息;\n[0077] 第一保存单元505在请求信息是代理请求信息时,保存客户端请求访问的目的服务器信息;\n[0078] 第二判断单元506判断检测端是否与保存的请求访问的目的服务器建立连接;\n[0079] 第二检测单元507在检测端与保存的请求访问的目的服务器建立连接时,检测出采用了协议代理。\n[0080] 其中,应答握手信息的报文指的是三次握手报文中的第2个报文,即参见图4中的syn_ack报文。\n[0081] 上述的目的服务器信息包括:目的服务器的目的地址和目的端口。\n[0082] 其中,第一检测单元502具体判断接收到的应答握手信息的报文的目的地址是否与检测端的地址相符;如果相符,判断出TCP连接是检测端发起的;如果不相符,判断出TCP连接是客户端发起的。\n[0083] 第二判断单元506具体用于判断接收到的应答握手信息的报文的源地址与源端口是否分别与客户端请求访问的目的服务器的目的地址和目的端口相符;如果相符,判断出检测端与保存的请求访问的目的服务器建立连接。\n[0084] 在本优选实施例中,采用在应答握手信息的报文时判断出TCP连接是谁发起的,并且根据发起端判断是否采用了代理来进行代理协议的检测,解决了对是否采用了代理协议检测效率低,且会漏报误报的问题,进而达到了检测是否采用协议代理效率高,检测结果准确的效果。\n[0085] 基于图5,图6出示了协议代理检测装置的另一种结构框图,该装置还包括:连接第三接收单元508的第三判断单元509,第三判断单元509连接第一接收单元501和第四判断单元510,第四判断单元510依次连接第五判断单元511和第二保存单元512、第二保存单元512还连接第二判断单元506,其中:\n[0086] 第三接收单元508在TCP连接建立时,接收TCP报文;\n[0087] 第三判断单元509判断TCP报文是否为应答握手信息的报文;\n[0088] 第四判断单元510在TCP报文不是应答握手信息的报文时,判断TCP报文是否是结束报文;\n[0089] 第五判断单元511在TCP报文不是结束报文时,判断TCP报文是否满足代理协议特征;\n[0090] 第二保存单元512在TCP报文满足代理协议特征时,保存TCP报文请求访问的目的服务器信息。\n[0091] 在本优选实施例中,进一步判断不是应答握手信息的报文,且不是结束报文的TCP报文是否满足代理协议,如果满足代理协议,同样可以检测出采用了协议代理,从而进一步防止漏报和误报,使检测结果更加准确。\n[0092] 同时,第三判断单元509可以包括:判断模块5091、连接判断模块5091的生成模块5092和第一查询模块5093,生成模块5092和第一查询模块5093分别连接第一接收单元\n501,连接第四判断单元510其中:\n[0093] 判断模块5091判断TCP报文是否为应答握手信息的报文;\n[0094] 生成模块5092在判断出TCP报文是应答握手信息的报文时,根据TCP报文的连接四元素生成与TCP报文对应的表项,插入到TCP过滤表中,并接收TCP报文;\n[0095] 第一查找模块5093在判断出TCP报文不是应答握手信息的报文时,以TCP报文的TCP连接四元素为索引在TCP过滤表中查找是否有与报文对应的表项,并在查找成功时,接收TCP报文。\n[0096] 在本优选实施例中,在收到TCP报文之前,对TCP报文进行初步判断,从而在对需要判断的报文进行判断之前就对不必要处理的报文进行了过滤,节省了从不必要的报文发送和判断。\n[0097] 第一判断单元504包括:连接第二接收单元503的提取模块5041和第二查询模块\n5042,提取模块5041还连接第一保存单元505。\n[0098] 提取模块5021在TCP连接是客户端发起的时,提取应答握手信息的报文的TCP连接四元素插入到代理客户端请求连接表中,判断接收到的请求信息是否满足代理协议特征,并在请求信息满足代理协议特征时,告知第一保存单元505保存请求信息的报文请求访问的目的服务器信息到代理客户端请求连接表中;\n[0099] 第二查找模块5022在TCP连接是检测端发起的时,提取客户端的地址和端口在代理客户端请求连接表中查找,并在查找成功时,检测出采用了协议代理。\n[0100] 在本优选实施例中,通过区分TCP连接是哪一端发起的,并采用代理客户端请求连接表进行记录,简化了判断流程,提高了判断速度。\n[0101] 值得说明的是,上述第一、第二、第三等等仅仅用来区分不同的主体,并不用于限定不同的主体,例如第一判断单元还可以称为第二判断单元等。\n[0102] 其中,本实施例中的协议代理检测装置可设置于任何一个通信设备中,当该通信设备作为代理服务器时,利用本实施例的协议代理检测装置可以检测出该通信设备提供了代理服务。\n[0103] 实施例2\n[0104] 图7出示了协议代理检测方法的一种优选流程图,参见图7,该方法包括:\n[0105] S701,在TCP连接建立时,接收应答握手信息的报文;\n[0106] S702,根据应答握手信息的报文判断TCP连接是检测端发起的还是客户端发起的;\n[0107] S703,若应答握手信息的报文是客户端发起的,则接收客户端发送的请求信息;\n[0108] S704,判断请求信息是否是代理请求信息;\n[0109] S705,如果请求信息是代理请求信息,则保存客户端请求访问的目的服务器信息;\n[0110] S706,判断检测端是否与保存的请求访问的目的服务器建立连接;\n[0111] S707,若检测端与保存的请求访问的目的服务器建立连接,则检测出采用了协议代理。\n[0112] 上述的目的服务器信息包括:目的地址和目的端口。\n[0113] 其中步骤S702,根据应答握手信息的报文判断TCP连接是检测端发起的还是客户端发起的步骤具体包括:判断接收到的应答握手信息的报文的目的地址是否与检测端的地址相符;如果相符,则判断出TCP连接是检测端发起的;如果不相符,则判断出TCP连接是客户端发起的。\n[0114] 步骤S706,判断检测端是否与保存的请求访问的目的服务器建立连接的步骤具体包括:判断接收到的应答握手信息的报文的源地址与源端口是否分别与客户端请求访问的目的服务器的目的地址和目的端口相符;如果相符,则判断出检测端与保存的请求访问的目的服务器建立连接。\n[0115] 在本优选实施例中,采用在应答握手信息的报文时判断出TCP连接是谁发起的,并且根据发起端判断是否采用了代理来进行代理协议的检测,解决了对是否采用了代理协议检测效率低,且会漏报误报的问题,进而达到了检测是否采用协议代理效率高,检测结果准确的效果。\n[0116] 基于图7,图8出示了协议代理检测方法的另一种流程图,参见图8,检测协议代理的方法还包括:\n[0117] S708,在TCP连接建立时,接收TCP报文;\n[0118] S709,判断TCP报文是否为应答握手信息的报文;\n[0119] S710,若TCP报文不是应答握手信息的报文,则判断TCP报文是否是结束报文;\n[0120] S711,若TCP报文不是结束报文,则判断TCP报文是否满足代理协议特征;若TCP报文是应答握手信息的报文,则执行步骤S702,根据应答握手信息的报文判断TCP连接是检测端发起的还是客户端发起的;\n[0121] S712,若TCP报文满足代理协议特征,则保存TCP报文请求访问的目的服务器信息。\n[0122] 在本优选实施例中,进一步判断不是应答握手信息的报文,且不是结束报文的TCP报文是否满足代理协议,如果满足代理协议,同样可以检测出采用了协议代理,从而进一步防止漏报和误报,使检测结果更加准确。\n[0123] 步骤S709,判断TCP报文是否为应答握手信息的报文的步骤包括:\n[0124] S7091,判断TCP报文是否为应答握手信息的报文;\n[0125] S7092,若判断出TCP报文是应答握手信息的报文,则根据TCP报文的连接四元素生成与TCP报文对应的表项,插入到TCP过滤表中,并接收TCP报文;\n[0126] S7093,若判断出TCP报文不是应答握手信息的报文,则以TCP报文的TCP连接四元素为索引在TCP过滤表中查找是否有与报文对应的表项,并在查找成功时,接收TCP报文。\n[0127] 在本优选实施例中,在检测端收到TCP报文之前,对TCP报文进行初步判断,从而在报文到达检测端之前就对不必要处理的报文进行了过滤,节省了从不必要的报文发送和判断。\n[0128] 若TCP报文是应答握手信息的报文,则执行步骤S702,根据应答握手信息的报文判断TCP连接是检测端发起的还是客户端发起的步骤,步骤S703,若应答握手信息的报文是客户端发起的,则接收客户端发送的请求信息,以及步骤S704,判断请求信息是否是代理请求信息的步骤,其中,步骤S704,判断请求信息是否是代理请求信息的步骤具体包括:\n[0129] 若TCP连接是客户端发起的,则提取应答握手信息的报文的TCP连接四元素插入到代理客户端请求连接表中,判断接收到的请求信息是否满足代理协议特征,并在请求信息满足代理协议特征时,保存请求信息的报文请求访问的目的服务器信息到代理客户端请求连接表中;\n[0130] 若TCP连接是检测端发起的,则提取客户端的地址和端口在代理客户端请求连接表中查找,并在查找成功时,检测出采用了协议代理。\n[0131] 在本优选实施例中,通过区分TCP连接是哪一端发起的,并采用代理客户端请求连接表进行记录,简化了判断流程,提高了判断速度。\n[0132] 值得说明的是,上述第一、第二、第三等等仅仅用来区分不同的主体,并不用于限定不同的主体,例如第一判断单元还可以称为第二判断单元等。\n[0133] 实施例3\n[0134] 本实施例提供了协议代理检测方法的一个具体实例,在本实施例中,图9出示了协议代理检测方法的又一种示意图,由图9可见,协议代理检测装置包括:依次连接的驱动收包模块和应用层报文处理模块。\n[0135] 其中,驱动收包模块具体通过如下步骤执行功能:\n[0136] S901,驱动收包模块收到一个TCP报文;\n[0137] S902,判断该TCP报文是否为三次握手的第2个报文,即应答握手信息的报文syn_ack,若是,则以该报文的TCP连接四元素生成一个表项插入到TCP过滤表中,并把该报文发送到应用层报文处理模块。若不是,则说明该报文可能为结束报文可能为数据报文还可能为确认报文,这时,以该报文的TCP连接四元素为索引在TCP过滤表中查找是否存在该报文的TCP连接四元素,查找成功则把该报文发送到应用层报文处理模块;查找失败,则丢弃。\n[0138] 由此,驱动层仅仅对存在在TCP过滤表中的报文进行发送,对不必要处理的报文进行过滤,节省了从驱动层到应用层不必要的报文发送。\n[0139] 也就是说,驱动收包模块可执行上述第三接收单元508的功能。\n[0140] 应用层报文处理模块通过以下步骤执行功能:\n[0141] S903,应用层报文处理模块收到驱动收包模块发送一个TCP报文;\n[0142] S904,判断该TCP报文是否为三次握手的第2个报文,即应答握手信息的报文syn_ack,不是则执行步骤S905;是则根据接收到的报文的目的MAC地址可以判断该TCP连接是“检测端主动发起的TCP连接”,还是“另一端主动发起的TCP连接”。\n[0143] 若是“另一端主动发起的TCP连接”则有可能是代理客户端发起的TCP连接,提取该报文的TCP连接四元素插入到“代理客户端请求连接表”。\n[0144] 若是“检测端主动发起的TCP连接”,则提取另一端的地址和端口作为代理请求的目的地址和代理请求目的端口在“代理客户端请求连接表”中查找相应表项。若查找失败,则说明该条“检测端主动发起的连接”没有提供代理行为,则删除该TCP过滤表项;若查找成功,则说明该条“检测端主动发起的TCP连接”为查找到的TCP连接提供代理服务,即检测到代理。\n[0145] S905,判断接收到的TCP报文是否结束(final)报文,不是则执行步聚S906;是则从“代理客户端请求连接表”中删除此连接表项,并删除该TCP过滤表项。\n[0146] S906,判断该TCP报文是否是数据报文,如果不是数据报文则丢弃不处理;\n[0147] 如果是数据报文,则以该报文的TCP连接四元素为索引在“代理客户端请求连接表”中查找。查找失败,则删除该TCP过滤表项;查找成功,则查看该TCP数据报文是否满足代理协议特征;若不满足代理协议特征,则把该连接从“代理客户端请求连接表”中删除,并删除该TCP过滤表项;若满足代理协议特征,则获取代理请求的目的地址和目的端口,并保存步骤S904查找到的“代理客户端请求连接表”中。该步骤即可采用第一检测单元502执行。\n[0148] 当然,本发明仅仅对HTTP代理和SOCKS代理为例进行的说明,但是在不违背本发明的精神的前提下,FTP、NNTP代理也应视为属于本发明的保护范围。\n[0149] 通过以上描述,可以看出本实施例的优点:\n[0150] 1.通过将TCP连接分为两大类处理,以及在驱动收包层动态设置监听过滤表,减少了大量报文的分析处理,从而提高了检测效率。\n[0151] 2.通过代理协议特征分析代理请求的目的地址和端口,适应各种代理服务器软件,检测结果准确,不会存在误判和漏判。\n[0152] 从以上的描述中,可以看出,本发明实现了如下技术效果:采用在应答握手信息的报文时判断出TCP连接是谁发起的,并且根据发起端判断是否采用了代理来进行代理协议的检测,解决了对是否采用了代理协议检测效率低,且会漏报误报的问题,进而达到了检测是否采用协议代理效率高,检测结果准确的效果。\n[0153] 显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。\n[0154] 以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
法律信息
- 2013-07-24
- 2011-11-30
实质审查的生效
IPC(主分类): H04L 12/26
专利申请号: 201110163203.9
申请日: 2011.06.17
- 2011-10-19
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 |
1
| |
2005-08-10
|
2004-02-03
| | |
2
| |
2006-12-20
|
2006-04-27
| | |
3
| |
2010-11-24
|
2010-07-22
| | |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有被任何外部专利所引用! |