SOCKS5服务器改进思想
1. 任务体系结构
SOCKS5服务器所采用的任务体系结构将是一种新的任务体系结构,是常用三种技术(单进程单任务、单线程单任务和单线程多任务)的综合。首先是预派生子进程,采用的是单进程单任务技术;每个子进程每接受一个连接就创建一个线程来处理SOCKS连接链路的建立过程,采用的是单线程单任务技术;每个子进程将创建一个线程专门用来处理该子进程空间所有连接的数据转发,采用的是单线程多任务技术。
2. TCP/ IP调用体系结构
SOCKS5服务器在连接(connect)和接受连接(accept)连接时采用的是阻塞的TCP/IP调用:在进行数据转发时采用非阻塞的TCP/IP调用,并采用了I/O复用模型中select技术。
3.设计思想描述
SOCKS5将以prefoking模式启动,启动后将预派生若干个子进程,每个子进程又采用多线程的并发服务器模型,但与传统的多线程模型又有所不同,分成不同用途的三个线程:主线程,连接线程,数据转发线程。
主线程:一直监听套接口,有连接请求则创建一个新的线程,即连接线程。
连接线程: 对客户端的连接进行处理,主要包括与配置文件中的有关项进行匹配,与SOCKS5服务器认证方法的协商,与应用服务器建立相应的连接,保存有关信息到全局变量中,然后发送一个消息给数据转发线程,连接线程终止。
数据转发线程: 负责该子进程空间所有建立连接的数据转发,采用I/O select技术,有套接口可读或可写将从select返回,进行数据相应的读写并进行转发。
SOCKS5服务器启动后,创建一个监听套接口,然后预派生若干个子进程。在每个子进程空间内,每个子进程执行后将马上创建一个数据转发的线程,同时,该子进程改称为主线程。主线程的任务是接受(accept) SOCKS5客户端的连接请求,每当接受一个连接请求后,立即创建一个连接处理线程来进行连接过程的处理。当连接建立以后,连接线程发送一消息互数据转发线程,通知该连接己建立成功,可以开始进行数据的转发。数据转发线程将一直运行负责对本子进程空间的所有的连接进行数据转发。
4. 数据转发模型
数据转发模型如图4所示
![]() |
图4. SOCKS5性能改进设计的数据转发模型
采用select利用技术,当对应SOCKS5的客户端套接口和对应远程应用服务器的套接口可读可写时,则将相应套接口的数据读或写到缓冲区内。
