一种用于加速应用代理的核心级TCP连接粘合方法技术

技术编号:4081642 阅读:297 留言:0更新日期:2012-04-11 18:40
本发明专利技术公开了一种加速应用代理的核心级TCP连接粘合方法,包括:代理服务器接收到与其建立起TCP连接的客户端发送的http请求报文后,建立与服务器的TCP连接,并向所述服务器转发所述http请求报文;所述服务器向代理服务器传送http响应头报文,并在所述http响应头报文传送至内核态的IP协议栈时,粘合模块检测所述http响应头报文是否符合预先配置的粘合条件,若符合,则进行TCP连接粘合。本发明专利技术所述方法增加TCP粘合技术适用的广度。

【技术实现步骤摘要】

本专利技术涉及网络安全
,尤其涉及一种用于加速应用代理的核心级TCP连 接粘合方法。
技术介绍
应用级代理广泛应用于HTTP代理、HTTP缓存、基于应用的负载均衡、深度内容检 测、网关病毒过滤等领域,扮演着当今重要的网络服务角色。统计显示当前互联网的安全问 题越来越多的来自应用层,应用级代理在未来将扮演越来越重要的角色。传统的应用级代理都采用应用层连接粘合代理,如图1所示,应用代理位于客户 端和被访问的服务器之间。对于客户端来说代理扮演服务器的角色,对于服务器来说代理 扮演客户端的角色。客户端首先和代理建立socket连接,然后代理再和服务器建立socket 连接。连接建立完成后,代理透明的进行数据的双向传递,作为一个中间人协助客户端和服 务器完成网络通信。传统的应用代理的优势是保持了对现有网络的兼容性,并且可以在应用层实现复 杂的协议处理。限制其大规模应用的核心问题是性能问题,表现为吐量小、通信延时长。原 因在于对于每一个报文应用代理都会发生两次拷贝,首先是报文从客户端拷贝到应用代 理,然后应用代理再拷贝给服务器。发生一次拷贝的同时伴随着一次内核态到用户态的上 下文切换。内存拷贝特别是内核态/用户态之间的内存拷贝消耗大量的CPU资源,上下文 切换同样会消耗大量的资源。这个过程同时明显的增加了通信延迟。目前可用的应用代理加速方法,比如Iinux下的sendfile,只能用于把缓存的文 件传递给服务器,可以避免内存拷贝、减少内核态/用户态的上下文切换。在HTTP缓存、基 于文件扫描的病毒过滤比较有用。对于HTTP代理、基于应用的负载均衡、基于数据流的深 度内容检测、基于数据流的病毒过滤,则完全无法发挥作用,并且和核心层的路由转发有相 当大的性能差距。现有技术中,为了解决上述问题采用了 TCP粘合连接技术,该TCP粘合连接与应用 级代理的最大不同在于客户端和服务器之间的连接在操作系统的核心层进行连接粘合。其中,TCP粘合有三个关键问题需要解决,否则会导致通信异常第一,必须要保 证粘合之前客户端发送给代理的报文,完整的转发给服务器,同时保证服务器发送给代理 的报文,完整的转发给客户端,因为TCP协议不会重传任何确认过的报文;第二,粘合模块 实际上把两个TCP连接合并成一个,而TCP序号在连接建立时已经确定了,所以粘合模块需 要对后续的报文做转换。第三,客户端和服务器操作系统不同,支持的TCP选项集合也不 同,所以需要在TCP三次握手时协商TCP选项。其中,粘合时机的选择是一个关键点,如图2所示,通常在应用代理获得HTTP请求 头部即图中阶段2后就可以判定是否需要做粘合了,比如URL过滤、基于应用的负载均衡 等。但是上述技术方案对于有些应用确不能适用,例如深度内容检测、病毒过滤等。
技术实现思路
本专利技术提供一种用于加速应用代理的核心级TCP连接粘合方法,用以解决现有技 术中TCP粘合技术对于一些应用不适用导致其应用范围小的问题。具体的,本专利技术提供的一种用于加速应用代理的核心级TCP连接粘合方法,包括 代理服务器与客户端进行协商建立TCP连接;其中,在协商时,所述代理服务器通 告客户端不支持时间戳和窗口扩大因子TCP选项,并记录交互报文的TCP序号、客户端支持 的最大报文段长度信息MSS以及客户端是否支持选择确认TCP选项;代理服务器接收到所述客户端发送的http请求报文时,与服务器进行协商建立 TCP连接后,向所述服务器转发所述http请求报文;其中,在与服务器进行协商建立TCP连 接时,记录交互报文的TCP序号,并基于所述代理服务器与客户端间的协商结果,调整所述 代理服务器与服务器间的TCP选项,包括修改TCP选项中的MSS为所述客户端支持的MSS, 并剥离客户端不支持的TCP选项,包括时间戳、窗口扩大因子、选择确认选项;所述服务器向代理服务器传送http响应头报文,并在所述http响应头报文传送 至内核态的IP协议栈时,通过粘合模块检测所述http响应头报文是否符合预先配置的粘 合条件,若符合,则进行TCP连接粘合。进一步的,本专利技术所述方法中,所述客户端与代理服务器进行协商建立TCP连接 具体为所述客户端向代理服务器发送syn报文,所述代理服务器记录所述syn报文中TCP 选项中客户端支持的最大报文长度MSS,记录交互报文的TCP序号、客户端支持的TCP选项, 包括时间戳、窗口扩大因子、选择确认;所述代理服务器发送syn-ack报文给客户端;其中,在发送所述syn-ack报文过程 中,通过粘合模块剥离时间戳和窗口扩大因子TCP选项;所述客户端向所述代理服务器反馈ack消息,完成客户端到代理服务器TCP连接的建立。进一步的,本专利技术所述方法中,所述代理服务器与服务器进行协商建立TCP连接 具体为所述代理服务器向服务器发送syn报文,其中,在发送syn报文过程中,根据客户 端和代理服务器协商的结果,通过粘合模块调整TCP选项,具体包括调整TCP选项中MSS 为所述客户端支持的MSS,并剥离客户端不支持的TCP选项,包括时间戳、窗口扩大因子、选 择确认选项。所述服务器接收到所述syn报文后,向所述代理服务器反馈syn-ack报文;所述代理服务器向服务器反馈ack消息,完成代理服务器到服务器TCP连接的建立。进一步的,本专利技术所述方法中,在进行TCP连接粘合后还包括所述粘合模块通知 应用层释放已建立的TCP连接对应的资源。本专利技术所述方法中,在代理服务器与客户端进行协商建立TCP连接时,记录的交 互报文的TCP序号包括客户端到代理服务器的syn报文的序号和代理服务器到客户端的 syn-ack报文的序号;在代理服务器与服务器进行协商建立TCP连接时,记录的交互报文的TCP序号包括代理服务器到服务器的syn报文的序号和服务器到代理服务器的syn-ack报文的序号。进一步的,本专利技术所述方法中,在进行TCP连接粘合后还包括所述粘合模块建立 TCP序列号和确认号的映射逻辑,所述映射逻辑包括服务器接收报文的新序列号=现有服务器接收报文的序列号_客户端到代理服 务器的syn报文的序列号+代理服务器到服务器的syn报文的序列号;服务器接收报文的新确认号=现有服务器接收报文的确认号+服务器到代服务 器的syn-ack报文的序列号-代理服务器到客户端的syn-ack报文的序列号;客户端接收报文的新序列号=现有客户端接收报文的序列号-服务器到代理服 务器的syn-ack报文的序列号+代理服务器到客户端的syn-ack报文的序列号;客户端接收报文的新确认号=现有客户端接收报文的确认号+客户端到代理服 务器的syn报文的序列号-代理服务器到服务器的syn报文的序列号。本专利技术所述方法中,在进行TCP连接粘合后,所述服务器和客户端均对发送的报 文重算报文校验和。 在进行TCP连接粘合后,所述服务器和客户端间交互的报文直接通过IP层发送至 对端。所述粘合模块检测所述http响应头报文是否符合预先配置的粘合条件具体为 所述粘合模块对所述http响应头报文进行协议分析,获取报文解析项,并检测所述报文解 析项是否满足预先配置的粘合条件;其中,所述报文解析项包括下述中的一项或多项文 件大小、文件类型和是否是http片断。进一步的,所述粘合模块本文档来自技高网
...

【技术保护点】
一种加速应用代理的核心级TCP连接粘合方法,其特征在于,包括:客户端与代理服务器进行协商建立TCP连接;其中,在协商时,所述代理服务器通告所述客户端不支持时间戳和窗口扩大因子TCP选项,并记录交互报文的TCP序号、所述客户端支持的最大报文段长度信息MSS以及所述客户端是否支持选择确认TCP选项;所述代理服务器接收到所述客户端发送的http请求报文时,与服务器进行协商建立TCP连接后,向所述服务器转发所述http请求报文;其中,在与所述服务器进行协商建立TCP连接时,记录交互报文的TCP序号,并基于所述代理服务器与所述客户端间的协商结果,调整所述代理服务器与所述服务器间的TCP选项,包括:修改TCP选项中的MSS为所述客户端支持的MSS,并剥离所述客户端不支持的TCP选项,包括时间戳、窗口扩大因子、选择确认选项;所述服务器向所述代理服务器传送http响应头报文,并在所述http响应头报文传送至内核态的IP协议栈时,通过粘合模块检测所述http响应头报文是否符合预先配置的粘合条件,若符合,则进行TCP连接粘合。

【技术特征摘要】
一种加速应用代理的核心级TCP连接粘合方法,其特征在于,包括客户端与代理服务器进行协商建立TCP连接;其中,在协商时,所述代理服务器通告所述客户端不支持时间戳和窗口扩大因子TCP选项,并记录交互报文的TCP序号、所述客户端支持的最大报文段长度信息MSS以及所述客户端是否支持选择确认TCP选项;所述代理服务器接收到所述客户端发送的http请求报文时,与服务器进行协商建立TCP连接后,向所述服务器转发所述http请求报文;其中,在与所述服务器进行协商建立TCP连接时,记录交互报文的TCP序号,并基于所述代理服务器与所述客户端间的协商结果,调整所述代理服务器与所述服务器间的TCP选项,包括修改TCP选项中的MSS为所述客户端支持的MSS,并剥离所述客户端不支持的TCP选项,包括时间戳、窗口扩大因子、选择确认选项;所述服务器向所述代理服务器传送http响应头报文,并在所述http响应头报文传送至内核态的IP协议栈时,通过粘合模块检测所述http响应头报文是否符合预先配置的粘合条件,若符合,则进行TCP连接粘合。2.如权利要求1所述的方法,其特征在于,所述客户端与代理服务器进行协商建立TCP 连接具体为所述客户端向所述代理服务器发送syn报文,所述代理服务器记录所述syn报文中TCP 选项中所述客户端支持的最大报文长度MSS,记录交互报文的TCP序号、所述客户端支持的 TCP选项,包括时间戳、窗口扩大因子、选择确认;所述代理服务器发送syn-ack报文给所述客户端;其中,在发送所述syn-ack报文过程 中,通过粘合模块剥离时间戳和窗口扩大因子TCP选项;所述客户端向所述代理服务器反馈ack消息,完成所述客户端到所述代理服务器TCP 连接的建立。3.如权利要求1所述的方法,其特征在于,所述代理服务器与服务器进行协商建立TCP 连接具体为所述代理服务器向所述服务器发送syn报文,其中,在发送syn报文过程中,根据所述 客户端和所述代理服务器协商的结果,通过粘合模块调整TCP选项,具体包括调整TCP选 项中MSS为所述客户端支持的MSS,并剥离客户端不支持的TCP选项,包括时间戳、窗口扩大 因子、选择确认选项。所述服务器接收到所述syn报文后,向所述代理服务器反馈syn-ack报文;所述代理服务器向所述服务器反馈ack消息,完成所述代理服务器到所述服务器TCP 连接的建立。4.如权利要求1、2或3所述的...

【专利技术属性】
技术研发人员:孟磊
申请(专利权)人:北京天融信科技有限公司
类型:发明
国别省市:11[中国|北京]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1