[发明专利]一种用于加速应用代理的核心级TCP连接粘合方法有效
申请号: | 201010263335.4 | 申请日: | 2010-08-26 |
公开(公告)号: | CN101924771A | 公开(公告)日: | 2010-12-22 |
发明(设计)人: | 孟磊 | 申请(专利权)人: | 北京天融信科技有限公司 |
主分类号: | H04L29/06 | 分类号: | H04L29/06;H04L12/56 |
代理公司: | 信息产业部电子专利中心 11010 | 代理人: | 梁军 |
地址: | 100085 北京市海淀*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 用于 加速 应用 代理 核心 tcp 连接 粘合 方法 | ||
技术领域
本发明涉及网络安全技术领域,尤其涉及一种用于加速应用代理的核心级TCP连接粘合方法。
背景技术
应用级代理广泛应用于HTTP代理、HTTP缓存、基于应用的负载均衡、深度内容检测、网关病毒过滤等领域,扮演着当今重要的网络服务角色。统计显示当前互联网的安全问题越来越多的来自应用层,应用级代理在未来将扮演越来越重要的角色。
传统的应用级代理都采用应用层连接粘合代理,如图1所示,应用代理位于客户端和被访问的服务器之间。对于客户端来说代理扮演服务器的角色,对于服务器来说代理扮演客户端的角色。客户端首先和代理建立socket连接,然后代理再和服务器建立socket连接。连接建立完成后,代理透明的进行数据的双向传递,作为一个中间人协助客户端和服务器完成网络通信。
传统的应用代理的优势是保持了对现有网络的兼容性,并且可以在应用层实现复杂的协议处理。限制其大规模应用的核心问题是性能问题,表现为吐量小、通信延时长。原因在于对于每一个报文应用代理都会发生两次拷贝,首先是报文从客户端拷贝到应用代理,然后应用代理再拷贝给服务器。发生一次拷贝的同时伴随着一次内核态到用户态的上下文切换。内存拷贝特别是内核态/用户态之间的内存拷贝消耗大量的CPU资源,上下文切换同样会消耗大量的资源。这个过程同时明显的增加了通信延迟。
目前可用的应用代理加速方法,比如linux下的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选项;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京天融信科技有限公司,未经北京天融信科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201010263335.4/2.html,转载请声明来源钻瓜专利网。
- 上一篇:利用碱性蛋白酶酶解牛皮胶原蛋白制备抗冻多肽
- 下一篇:发动机进气歧管