论文部分内容阅读
摘要:一些特殊领域的应用对于性能要求很高,而通用单机TCP代理不能满足需求。文章分析了TCP代理的实现机制,借鉴TCP连接管理有限状态机、以异步I/O模型研究和实现了双机TCP代理,并将其应用于一个安全网关项目,取得良好效果。
关键词:套接字;异步I/O模型;有限状态机
中图分类号:TP393文献标识码:A文章编号:1009-3044(2008)33-1329-03
The Research and Implementation of Double Entities TCP Proxy Base on Asynchronous I/O Model
ZHAO kun, WANG Bao-sheng
(Computer College, National University of Defense Technology, Changsha 410073,China)
Abstract: General single entitie TCP proxy can’t satisfy the requirements for high performance in some special applications. By analyzing the implementation mechanism of TCP proxy , we research and implement two entities TCP proxy structure model base on asynchronous I/O model by referring to Finite State Machine of TCP connection management. It has been applied to a secure gateway project successfully.
Key words: socket; asynchronous I/O mode; FSM
1 引言
TCP代理是建立在现代通信网络技术和信息安全技术基础之上的应用性安全技术,已经越来越多地应用于专用网络与公用网络的互连环境之中,尤其以接入Internet网络为最甚。TCP代理是TCP/IP协议应用层上的一种代理服务软件,满足下列条件:接收并解析客户端的请求;创建到服务端的新连接,并转发客户端的请求信息;接收服务端反馈的信息;发出或解释服务端的响应并将该响应传回给客户端。TCP代理直接与TCP层交互,切断内外网间的TCP连接,将一条连接分为两断,同时阻断传输层TCP网络协议,将源数据包中的数据拷贝下来,通过应用层过代理转发实现数据摆渡。
本文在研究和比较传统TCP代理模型的基础上,提出了基于异步I/O模型的双机TCP代理,提供了可靠的端到端的数据传输。并设计与实现一套原型系统。
2 双机TCP代理的结构模型
单机TCP代理:客户端和服务端建立的连接都是通过同一个代理服务器完成。类似图1中的客户端服务器B既要和外网A(客户端)建立TCP连接,又要和内网D(服务端)建立TCP连接。这样的结构本身存在着一些缺陷:1) 内外连接都是TCP/IP协议,TCP/IP协议的漏洞带来的风险。2) 单机代理系统自身体系结构使内网存在受外部攻击的危险。
双机TCP代理结构可以有效地克服单机TCP代理的弱点。如图1所示:代理服务器分别与内外网交互,代理服务器双机之间用内部专用通道进行数据交换。由外网到内网的一次访问经过了客户端A到客户端服务器B的TCP连接AB,客户端服务器B到服务端服务器C的专用通道连接BC,服务端服务器C到服务端D的TCP连接CD。外网客户端和内网服务端由这3个连接互联,TCP代理则控制和管理这3个连接的建立、数据转发和断开。
图2 双机TCP代理有限状态机
双机TCP代理结构可以有效地克服单机TCP代理的弱点:1) 外网和内网在物理上是隔离的,阻断网络的直接连接。2) 阻断网络的逻辑连接,由于TCP/IP的协议必需被剥离,将裸数据通过内部TCP报文专用通道传递。3) 数据都是双机两级代理完成,两级代理之间是隔离的。4) 内外代理之间只传输裸数据,不具备攻击或对网络安全有害。
3 双机TCP代理状态机研究
图2直观的反应了图1所示的双机TCP代理结构模型中客户端服务器B和服务端服务器C各自代理状态迁移:
1) 双机TCP代理连接状态迁移:客户端和服务端
客户端服务器B监听到所代理端口的外网A发起的TCP连接请求,建立AB连接,客户端服务器B向C发送建立内部专用通道BC连接请求,若接收C应答成功,客户端服务器B则成功建立内部专用通道BC连接。
服务端服务器C接收到B发送的内部专用通道CB连接请求,服务端服务器C向B发送连接建立成功应答,服务端服务器C建立内部专用通CB连接,服务端服务器C向内网D发起TCP连接请求;若应答成功,服务端服务器C建立CD连接。
2) 双机TCP代理数据交换状态迁移:
数据传输方向A->B->C->D:服务器B在(AB r ok BC w ok)状态:连接AB接收数据到缓冲区AB_buf[],若缓冲区AB_buf[]有数据,连接BC通过内部专用数据通道发送缓冲区AB_buf[]数据到C;服务器C在(CB r ok CD w ok)状态:连接CB接收内部专用数据通道数据到缓冲区CB_buf[],若缓冲区CB_buf[]有数据,连接CD发送缓冲区CB_buf[]数据到D。
数据传输方向D->C->B->A:服务器C在(CB W ok CD R ok)状态:连接CD接收数据到缓冲区CD_buf[],若缓冲区CD_buf[]有数据,连接CB通过内部专用数据通道发送缓冲区CD_buf[]数据到B;服务器B在(AB w ok BC r ok)状态:连接BC接收内部专用数据通道数据到缓冲区BC_buf[],若缓冲区BC_buf[]有数据,连接AB发送缓冲区BC_buf[]数据到A。
3) 双机TCP代理连接断开状态迁移
连接AB断开:服务器B在(AB r ok BC w ok)状态:连接AB接收到外网A的fin请求,连接BC发送结束内部专用通道请求到服务器C,连接BC断开;服务器C在(CB r ok CD w ok)状态:连接CB接收到服务器B发的结束请求,连接CB断开,连接CD发送fin请求到内网D,连接CD断开。
连接BC断开:服务器B在(AB w ok BC r ok)状态:连接AB发送fin请求到外网A,连接AB断开;服务器C在(CB r ok CD w ok)状态:连接CD发送fin请求到内网D;连接CD断开。
连接CD断开:服务器C在(CB W ok CD R ok)状态:连接CD接收到内网D的fin请求,连接CD发送结束内部专用通道请求到服务器B,连接CB断开;服务器B在(AB w ok BC r ok)状态:连接BC接收到服务器C发的结束请求,连接BC断开,连接AB发送fin请求到外网A,连接AB断开。
4 异步I/O驱动框架下双机TCP代理的实现
4.1 异步I/O驱动框架select轮询机制
关键词:套接字;异步I/O模型;有限状态机
中图分类号:TP393文献标识码:A文章编号:1009-3044(2008)33-1329-03
The Research and Implementation of Double Entities TCP Proxy Base on Asynchronous I/O Model
ZHAO kun, WANG Bao-sheng
(Computer College, National University of Defense Technology, Changsha 410073,China)
Abstract: General single entitie TCP proxy can’t satisfy the requirements for high performance in some special applications. By analyzing the implementation mechanism of TCP proxy , we research and implement two entities TCP proxy structure model base on asynchronous I/O model by referring to Finite State Machine of TCP connection management. It has been applied to a secure gateway project successfully.
Key words: socket; asynchronous I/O mode; FSM
1 引言
TCP代理是建立在现代通信网络技术和信息安全技术基础之上的应用性安全技术,已经越来越多地应用于专用网络与公用网络的互连环境之中,尤其以接入Internet网络为最甚。TCP代理是TCP/IP协议应用层上的一种代理服务软件,满足下列条件:接收并解析客户端的请求;创建到服务端的新连接,并转发客户端的请求信息;接收服务端反馈的信息;发出或解释服务端的响应并将该响应传回给客户端。TCP代理直接与TCP层交互,切断内外网间的TCP连接,将一条连接分为两断,同时阻断传输层TCP网络协议,将源数据包中的数据拷贝下来,通过应用层过代理转发实现数据摆渡。
本文在研究和比较传统TCP代理模型的基础上,提出了基于异步I/O模型的双机TCP代理,提供了可靠的端到端的数据传输。并设计与实现一套原型系统。
2 双机TCP代理的结构模型
单机TCP代理:客户端和服务端建立的连接都是通过同一个代理服务器完成。类似图1中的客户端服务器B既要和外网A(客户端)建立TCP连接,又要和内网D(服务端)建立TCP连接。这样的结构本身存在着一些缺陷:1) 内外连接都是TCP/IP协议,TCP/IP协议的漏洞带来的风险。2) 单机代理系统自身体系结构使内网存在受外部攻击的危险。
双机TCP代理结构可以有效地克服单机TCP代理的弱点。如图1所示:代理服务器分别与内外网交互,代理服务器双机之间用内部专用通道进行数据交换。由外网到内网的一次访问经过了客户端A到客户端服务器B的TCP连接AB,客户端服务器B到服务端服务器C的专用通道连接BC,服务端服务器C到服务端D的TCP连接CD。外网客户端和内网服务端由这3个连接互联,TCP代理则控制和管理这3个连接的建立、数据转发和断开。

图2 双机TCP代理有限状态机
双机TCP代理结构可以有效地克服单机TCP代理的弱点:1) 外网和内网在物理上是隔离的,阻断网络的直接连接。2) 阻断网络的逻辑连接,由于TCP/IP的协议必需被剥离,将裸数据通过内部TCP报文专用通道传递。3) 数据都是双机两级代理完成,两级代理之间是隔离的。4) 内外代理之间只传输裸数据,不具备攻击或对网络安全有害。
3 双机TCP代理状态机研究
图2直观的反应了图1所示的双机TCP代理结构模型中客户端服务器B和服务端服务器C各自代理状态迁移:
1) 双机TCP代理连接状态迁移:客户端和服务端
客户端服务器B监听到所代理端口的外网A发起的TCP连接请求,建立AB连接,客户端服务器B向C发送建立内部专用通道BC连接请求,若接收C应答成功,客户端服务器B则成功建立内部专用通道BC连接。
服务端服务器C接收到B发送的内部专用通道CB连接请求,服务端服务器C向B发送连接建立成功应答,服务端服务器C建立内部专用通CB连接,服务端服务器C向内网D发起TCP连接请求;若应答成功,服务端服务器C建立CD连接。
2) 双机TCP代理数据交换状态迁移:
数据传输方向A->B->C->D:服务器B在(AB r ok BC w ok)状态:连接AB接收数据到缓冲区AB_buf[],若缓冲区AB_buf[]有数据,连接BC通过内部专用数据通道发送缓冲区AB_buf[]数据到C;服务器C在(CB r ok CD w ok)状态:连接CB接收内部专用数据通道数据到缓冲区CB_buf[],若缓冲区CB_buf[]有数据,连接CD发送缓冲区CB_buf[]数据到D。
数据传输方向D->C->B->A:服务器C在(CB W ok CD R ok)状态:连接CD接收数据到缓冲区CD_buf[],若缓冲区CD_buf[]有数据,连接CB通过内部专用数据通道发送缓冲区CD_buf[]数据到B;服务器B在(AB w ok BC r ok)状态:连接BC接收内部专用数据通道数据到缓冲区BC_buf[],若缓冲区BC_buf[]有数据,连接AB发送缓冲区BC_buf[]数据到A。
3) 双机TCP代理连接断开状态迁移
连接AB断开:服务器B在(AB r ok BC w ok)状态:连接AB接收到外网A的fin请求,连接BC发送结束内部专用通道请求到服务器C,连接BC断开;服务器C在(CB r ok CD w ok)状态:连接CB接收到服务器B发的结束请求,连接CB断开,连接CD发送fin请求到内网D,连接CD断开。
连接BC断开:服务器B在(AB w ok BC r ok)状态:连接AB发送fin请求到外网A,连接AB断开;服务器C在(CB r ok CD w ok)状态:连接CD发送fin请求到内网D;连接CD断开。
连接CD断开:服务器C在(CB W ok CD R ok)状态:连接CD接收到内网D的fin请求,连接CD发送结束内部专用通道请求到服务器B,连接CB断开;服务器B在(AB w ok BC r ok)状态:连接BC接收到服务器C发的结束请求,连接BC断开,连接AB发送fin请求到外网A,连接AB断开。
4 异步I/O驱动框架下双机TCP代理的实现
4.1 异步I/O驱动框架select轮询机制