服务器 频道

分析:如何改进SOCKS5服务器的性能

    【IT168 专稿】SOCKS5协议的扩展性强、安全性能好、灵活通用、便于网络规划和管理等优点,我们以SOCKS5为基础来建立应用层安全体系结构,而性能问题对SOCKS5服务器来说是非常关键的,SOCKS5服务器的性能问题主要有两个指标:最大并发连接数和吞吐量。

    目前有关SOCKS5协议的实现主要有美国NEC公司开发的SOCKS5 Reference Im plementation和由挪威Inferno Nettverk A /S公司开发的的Dantellsl。本文将对SOCKS5 Reference Implementation(SOCKS5_ NECRI)的源代码进行分析,总结SOCKS5服务器的运
行模式,分析SOCKS5_ NECRI服务器的性能。


SOCKS5_NECRI服务器的运行模式

    在SOCKS5_NECRI服务器中,有normal、inetd、Singleshot、preforking和thread五种运行模式。

1.  Normal模式

    这是一种缺省的模式,它的工作原理就是用一个主进程来接收连接,每接收一个连接后就fork一个子进程来处理这个连接,父进程关闭接收到的套接口,返回继续接收来自客户的连接请求。它的工作流程如图1.

 图1.  Normal模式流程图

2.  Inetd模式

    这种模式和telnet等服务一样通过inetd超级服务器运行SOCKS。它是由inetd守护进程启动的。它处理了所有转变成守护进程所需要的步骤,在启动真正的服务器时套接口已在标准输入、标准输出、标准错误输出上打开。这样就不必再调用socket, bind, listen和accept
了。

3. Singleshot模式

    这是一种快照的方式,在前台处理一个请求,打开debug模式,输出到stderr,然后退出。这种模式一般用于调试时。                                                                        

4.  Preforking模式

    这种模式先派生N个子进程,父进程一直运行对信号进行处理,每个子进程都用一个无限循环来接收并处理连接,工作流程图见图2。

图2.  Preforking模式流程图

5. Thread模式

    这种模式先fork一个子进程,父进程一直运行对信号进行处理,子进程进入无限循环,接收连接,每当接收到一个连接,就创建一个线程,这个线程又进入一个无限循环,第一次处理由主线程接收的连接,再接收新的连接,一直循环,工作流程图见图3。

图3.  Thread模式流程图

0
相关文章