发明内容
本发明要解决的技术问题是,克服传统的正向代理和反向代理技术的不足,提供一种应用层透明代理技术的通信实现方法,实现全透明的代理技术突破。在需要通过代理技术解决方案的***及产品中,不需要调整客户端和服务端的任何配置,即可实现较为完美的解决方案。
为解决其技术问题,本发明的解决方案是:
提供一种应用层透明代理技术的通信实现方法,包括:
(一)客户端与代理服务的通信实现,包括:
(1)客户端向服务端发起通信连接请求;
(2)代理服务主机通过数据链路层截获该连接,并把该连接转向代理定向关联模块;
(3)代理定向关联模块将数据包接收为本地数据包,并将其与代理服务所监听的虚拟服务进行连接关联处理;
(4)代理服务虚拟服务确认为与自身关联的数据包,通知TCP/IP协议栈与客户端回应建立连接,并以服务端IP地址作为回应的源IP地址进行绑定;
(5)回应包通过数据链路层转发,通向客户端;
(6)客户端接收回应包,并发送连接确认;
(7)代理服务回应该确认包的确认包给客户端;
至此,客户端与代理服务的连接建立过程结束;
(二)代理服务与服务端的通信实现,包括:
(1)代理服务在于客户端建立完整TCP连接以后,将客户端IP地址作为源IP地址进行本地绑定,通过TCP/IP协议栈向服务端发送连接建立请求;
(2)连接请求数据包通过数据链路层转发传输到服务端;
(3)服务端接收到连接请求以后,进行回应处理,然后发送连接回应包;
(4)服务端的连接回应包到达代理服务主机的数据链路层,数据链路层将该回应包转向代理定向关联模块处理;
(5)代理定向关联模块将数据包接收为本地数据包,并把它关联到代理服务所发出连接请求的连接进行关联处理;
(6)代理服务虚拟服务进行连接回应包的应答,发送给服务端;
至此,代理服务与服务端的连接过程建立完毕;
(三)在代理服务通过上述两条连接的建立成功以后,后续只需要通过完善的连接,进行数据包的往返转发,即可实现基于透明代理的各种业务服务需求。
本发明中,只对需要实行代理的业务数据执行透明代理服务,而对其他业务数据采用网络协议栈二层转发的方式。
本发明中,对代理转发以及网络协议栈二层转发的业务数据包,不改变其内容,直接执行透明代理服务或网络协议栈二层转发原始的客户端和服务端数据包。
相对于现有技术,本发明的有益效果在于:
在透明代理技术模型下,透明代理只需要关注需要提供代理服务的应用层业务,如只服务FTP,则其他服务可以通过网络二层透明转发的方式到达服务端,透明代理只处理FTP的透明代理转发。这样极大的满足了业务相关处理的灵活性,更体现了透明代理服务方式的独立性与先进性。
具体实施方式
首先需要说明的是,本发明是计算机软件在通信技术领域的一种应用。在本发明的实现过程中,会涉及到多个软件功能模块的应用。申请人认为,如在仔细阅读申请文件、准确理解本发明的实现原理和发明目的以后,在结合现有公知技术的情况下,本领域技术人员完全可以运用其掌握的软件编程技能实现本发明。前述软件功能模块包括但不限于:代理服务、代理定向关联模块等,凡本发明申请文件提及的均属此范畴,申请人不再一一列举。
为确保理解准确、避免产生歧义或不清楚,首先对本发明涉及的部分术语进行解释如下:
虚拟服务:指在代理技术中,本地TCP连接模拟真实服务端进行监听提供的连接服务,他同时模拟服务端处理客户端的请求服务,又要以客户端的身份,向服务端发送请求服务
代理服务:在通信连接与数据传输的过程中,作为通信连接建立及数据传输的中间媒介实体,参与连接的独立建立,并对通信连接与数据传输的两端实现连接建立的隔离(即不直接建立通信连接)
下面结合附图,对本发明的实现过程进行详细描述。
以附图1所示的典型的客户端与服务端通信的简单模型为例,透明代理服务的实施嵌入客户端和服务端通信链路的任何位置。
(1)根据业务及实际运维需求,选择一个合适的链路点接入透明代理服务主机;
(2)代理服务主机须具备两个网络接口卡,用于与客户端和服务端的通信,该两个接口卡之间配置为网桥模式;
(3)通过附图2所示的透明代理定向关联模块,配置需要进行透明代理的业务,通常为服务端IP地址加上连接端口;
(4)进行通信连接测试。同时可以基于透明代理的虚拟服务,实现各种业务需求的安全检测,增值业务需求等。
透明转发模型的实现框架见附图2所示。
应用层透明代理技术的通信实现方法,包括:
(一)客户端与代理服务的通信实现,包括:
(1)客户端向服务端发起通信连接请求;
(2)代理服务主机通过数据链路层截获该连接,并把该连接转向代理定向关联模块;
(3)代理定向关联模块将数据包接收为本地数据包,并将其与代理服务所监听的虚拟服务进行连接关联处理;
(4)代理服务虚拟服务确认为与自身关联的数据包,通知TCP/IP协议栈与客户端回应建立连接,并以服务端IP地址作为回应的源IP地址进行绑定;
(5)回应包通过数据链路层转发,通向客户端;
(6)客户端接收回应包,并发送连接确认;
(7)代理服务回应该确认包的确认包给客户端;
至此,客户端与代理服务的连接建立过程结束;
(二)代理服务与服务端的通信实现,包括:
(1)代理服务在于客户端建立完整TCP连接以后,将客户端IP地址作为源IP地址进行本地绑定,通过TCP/IP协议栈向服务端发送连接建立请求;
(2)连接请求数据包通过数据链路层转发传输到服务端;
(3)服务端接收到连接请求以后,进行回应处理,然后发送连接回应包;
(4)服务端的连接回应包到达代理服务主机的数据链路层,数据链路层将该回应包转向代理定向关联模块处理;
(5)代理定向关联模块将数据包接收为本地数据包,并把它关联到代理服务所发出连接请求的连接进行关联处理;
(6)代理服务虚拟服务进行连接回应包的应答,发送给服务端;
至此,代理服务与服务端的连接过程建立完毕;
(三)在代理服务通过上述两条连接的建立成功以后,后续只需要通过完善的连接,进行数据包的往返转发,即可实现基于透明代理的各种业务服务需求。
本发明中,只对需要实行代理的业务数据执行透明代理服务,而对其他业务数据采用网络协议栈二层转发的方式。对代理转发以及网络协议栈二层转发的业务数据包,不改变其内容,直接执行透明代理服务或网络协议栈二层转发原始的客户端和服务端数据包。
本发明与其他代理方案的不同之处在于:
1、在应用层实现透明代理转发机制
在传统的网络数据包转发实现方式中,要么是纯粹数据包的转发,典型如交换机、路由器的数据包路由转发实现方式,虽然做到了透明性,但并没有进行代理,即并没有分别与通信的两端建立TCP连接,仅仅是网络协议栈数据链路层和网络层的包转发。
在传统的代理机制中,无论是应用层还是网络协议栈底层的代理转发,都无法做到透明性。不管是正向代理还是反向代理,代理服务都需要有独立的IP地址,以此作为与客户端和服务端建立TCP连接以及进行有效的数据包传输通信。此两种方式,要么对于客户端不透明,要么对于服务端不透明,如果在原有的客户端与服务端通信架构的基础上部署代理服务,则无法做到无缝***,而需要对客户端或者服务端进行相关的配置,才能成功实施代理服务。
本发明的透明代理机制,则充分体现了客户端与服务端的双向透明特性,不仅能独立的与两端建立TCP连接,实现数据包的透明转发,而且在原有成熟客户端与服务端通信的网络拓扑环境中,能够像增加网络二层交换设备一样,无缝得***透明代理服务。该发明极大的支持了复杂网络环境中增加各种业务的可维护性与可伸缩性方案。
2、独特的创新实现机制
透明代理主机不需要具备与客户端和服务端通信的IP地址,看起来就像网络二层交换转发设备。众所周知,目的IP地址不是本主机IP地址的网络通信数据包,无法通过网络传输层到达应用层,因为本地没有提供服务TCP服务端口和连接。反向代理和正向代理技术,他们需要配置进行业务通信的IP地址,所以可以顺理成章进行常规的TCP连接和通信;同样,对于网络二层和三层的转发设备,不需要建立TCP连接,仅仅转发网络数据包,也不需要违背任何TCP/IP协议栈的规则。
透明代理技术,需要突破接收IP地址为非主机本地IP地址的数据包的限制,并建立虚拟的TCP连接监听服务端口。当客户端访问的数据包到达代理服务主机数据链路层时,将数据包的连接定向关联到本地的监听服务端口,本地监听服务端口此时采用服务端的IP地址作为源地址,与客户端建立TCP连接,这样客户端与代理服务之间的TCP连接便建立完毕。同理,代理服务与客户端建立完TCP连接以后,需要与服务端建立TCP连接,此时,代理服务以客户端的原始IP地址作为源IP地址,与服务端建立TCP连接。双向的连接建立结束以后,客户端和服务端就可以通过代理服务进行中转,实现基于TCP连接的数据通信。
对于UDP通信来书,无须建立可靠的连接,因此在通信传输的过程中,就省却了上述描述的TCP连接的建立过程,而仅通过IP地址的互换借用来达到透明传输的目的。
3、只关心需要代理的数据业务
传统的基于应用层的正向代理和反向代理技术,由于配置了直接通信的IP地址,IP地址作为通信的直接目标,因此其占据了一个独立的通信实体。当服务端提供了多个应用服务时,如及提供了HTTP服务,还包括FTP,SSH服务等,则在传统的代理框架下,代理服务器的配置,不仅需要支持HTTP,还得支持FTP,SSH等,否则,服务端提供的服务就无法得到正常的通信访问。
透明代理技术,主要是基于正向代理和反向代理技术的缺点,进行一种全新的改进实现方案,从而实现对客户端和服务端都透明的方式。在透明代理技术下,客户端访问的目的IP地址为服务端的直接IP地址,进过透明代理服务以后,服务端看到的原始访问IP地址仍未客户端的IP地址。在这样一种技术实现方案下,在部署透明代理服务的网络拓扑结构中,无须改变任何的网络结构,就可实现透明代理服务的应用部署。