FTP文件传输协议,这个又老又特殊的协议在构建之初很好的保障了文件的交互,但是这个协议的双端口和主被动模式给后续的管理和扩展带来了意外麻烦。在网络配置方面由于数据端口是随即选择的,这样造成防火墙配置的麻烦(由于本人对防火墙了解不深具体详情不了解,见谅)。同时这也给不同隔离网络之间的文件访问造成困难。有没有可能向http proxy那样部署一个ftp proxy呢。经过一番搜索,还真未发现有何好用的产品来支持这个功能。能不能自己开发这样的一个软件呢。后来笔者找到了一个类似的java源码,但是这个源码在功能支持上不完善,可以说是漏洞摆出,不得已进行打造一款ftp proxy来满足需要。

    我们来分析一下代理过程的基本原理:


以上部分描述为主线程处理过程,这个线程是针对每个访问连接来做的,简单来说即:
     客户端连接---》每个连接启动线程处理请求---》循环读取客户端命令。在循环处理客户端命令的过程中是真正的数据操作过程。
wKiom1NQlVqyVTkoAACQLRZdKe0624.gifPORT注意要点:
    1、先同步等待建立服务端连接;这个连接是SERVER到PROXY的连接;
    2、建立客户端连接;这个连接是PROXY到CLIENT的连接;
    3、建立数据传输线程,数据传输完毕则线程结束;
wKioL1NQlUiSgKpsAAB-3pa5lQI382.gif
PASV注意要点:
    1、先同步等待建立服务端连接;这个连接是CLIENT到PROXY的连接;
    2、建立客户端连接;这个连接是PROXY到SERVER的连接;
    3、建立数据传输线程,数据传输完毕则线程结束;
wKioL1NQlZ-QlHdFAACN1cj2C2Q997.gif