FTP文件传输协议,这个又老又特殊的协议在构建之初很好的保障了文件的交互,可是这个协议的双端口和主被动模式给后续的管理和扩展带来了意外麻烦。在网络配置方面因为数据端口是随即选择的,这样形成防火墙配置的麻烦(因为本人对防火墙了解不深具体详情不了解,见谅)。同时这也给不一样隔离网络之间的文件访问形成困难。有没有可能向http proxy那样部署一个ftp proxy呢。通过一番搜索,还真未发现有何好用的产品来支持这个功能。能不能本身开发这样的一个软件呢。后来笔者找到了一个相似的java源码,可是这个源码在功能支持上不完善,能够说是漏洞摆出,不得已进行打造一款ftp proxy来知足须要。java
咱们来分析一下代理过程的基本原理:网络
以上部分描述为主线程处理过程,这个线程是针对每一个访问链接来作的,简单来讲即:
客户端链接---》每一个链接启动线程处理请求---》循环读取客户端命令。在循环处理客户端命令的过程当中是真正的数据操做过程。PORT注意要点:
一、先同步等待创建服务端链接;这个链接是SERVER到PROXY的链接;
二、创建客户端链接;这个链接是PROXY到CLIENT的链接;
三、创建数据传输线程,数据传输完毕则线程结束;
PASV注意要点:
一、先同步等待创建服务端链接;这个链接是CLIENT到PROXY的链接;
二、创建客户端链接;这个链接是PROXY到SERVER的链接;
三、创建数据传输线程,数据传输完毕则线程结束;
ide