[发明专利]一种透明代理及其实现方法有效
申请号: | 201210196512.0 | 申请日: | 2012-06-14 |
公开(公告)号: | CN103491065B | 公开(公告)日: | 2018-08-14 |
发明(设计)人: | 董广跃 | 申请(专利权)人: | 南京中兴软件有限责任公司 |
主分类号: | H04L29/06 | 分类号: | H04L29/06;H04L29/12;H04L1/16 |
代理公司: | 北京安信方达知识产权代理有限公司 11262 | 代理人: | 吴艳;龙洪 |
地址: | 210012 江苏省南*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 透明 代理 及其 实现 方法 | ||
1.一种透明代理实现方法,其特征在于,
透明代理与客户端之间建立TCP链路;
所述透明代理通过链路层网卡获取所述客户端发往目的服务端的业务数据包,并根据所述业务数据包的应用层协议类型选择相应的粘合服务端;
所述透明代理与所述粘合服务端之间建立TCP链路;
所述透明代理修改所述客户端的业务数据包的目的地址,将修改后的业务数据包通过链路层网卡直接发往所述粘合服务端进行处理;
其中,所述链路层网卡维护缓存的数据包内存块,并将内存块索引通知应用层;
应用层根据所述内存块索引对链路层的内存数据包进行收发控制。
2.如权利要求1所述的方法,其特征在于,所述透明代理与所述客户端建立TCP链路的过程,包括:
所述客户端发起syn建链请求,所述syn建链请求中携带随机产生的第一初始序列号,且源地址和源端口为所述客户端的IP和端口号,目的地址和目的端口为所述服务端的IP和端口号;
所述透明代理获取所述客户端发起的所述syn建链请求,向所述客户端发起第二次握手syn_ack,所述syn_ack中携带随机产生的第二初始序列号,且源地址和源端口为所述目的服务端的IP和端口号,目的地址和目的端口为所述客户端的IP和端口号;
所述客户端发起第三次握手ack,所述透明代理与所述客户端的TCP链路建立完成。
3.如权利要求2所述的方法,其特征在于,所述方法还包括:
所述透明代理与所述客户端建立TCP链路时,所述透明代理保存所述客户端发起的第三次握手ack包,以及所述ack包后续的一个或几个数据包。
4.如权利要求3所述的方法,其特征在于,所述透明代理与所述粘合服务端建立TCP链路的过程,包括:
所述透明代理选择所述粘合服务端,并向所述粘合服务端发起syn建链请求,所述syn建链请求中携带的目的地址和端口为所述粘合服务端的IP和端口号;
所述粘合服务端回应syn_ack,所述syn_ack携带随机产生的序列号;
所述透明代理对序列号进行同步后,将保存的所述客户端发起的第三次握手ack包和后续的一个或几个数据包发送给所述粘合服务端,所述透明代理与所述粘合服务端的TCP链路建立完成。
5.如权利要求1、2、3或4之任一项所述的方法,其特征在于,所述方法还包括:
所述透明代理将所述客户端的业务数据包中的初始目的地址与修改后的目的地址共同组成目的地址池,并将所述目的地址池与源地址、源端口及传输层协议类型与数据流id建立关联后进行保存。
6.一种透明代理,其特征在于,所述透明代理包括数据获取模块,建链模块,和数据转发模块,
所述数据获取模块,用于通过链路层网卡获取客户端发往目的服务端的业务数据包,并根据所述业务数据包的应用层协议类型选择相应的粘合服务端;
所述建链模块,用于分别与所述客户端以及所述粘合服务端之间建立TCP链路;
所述数据转发模块,用于修改所述客户端的业务数据包的目的地址,将修改后的业务数据包通过链路层网卡直接发往所述粘合服务端进行处理;
其中,所述链路层网卡维护缓存的数据包内存块,并将内存块索引通知应用层;
应用层根据所述内存块索引对链路层的内存数据包进行收发控制。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南京中兴软件有限责任公司,未经南京中兴软件有限责任公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210196512.0/1.html,转载请声明来源钻瓜专利网。