【ServerLute】FTP服务器(1),准备开始写一个FTP服务器,当作一个发端吧。

最近在寻找FTP服务器,跨平台的,性能要高,安全性要好,支持SFTP、FTP、FTPS、FTPES、TFTP协议。

可以难死我了。找了很久也没有找到,忽然想自己来写一个。算是对N久没有写代码的一种回忆和锻炼吧。

万事开头难,真的想开始写的时候才发现:

  1. 基础设施不健全:本本上连个开发环境都没。好在光盘还在,我装~~。
  2. 使用什么开发:Java是我最熟悉的,而且Apache已经出了一个FTPServer(Mina项目下的子项目),又能跨平台,不过还不支持SFTP和TFTP。而且,资源的消耗有点大了。想来想去还是不打算用。因为要跨平台,所以.net之流是不打算考虑了,虽然那是我第二熟悉的。我会的就剩下C/C++了,怎奈不太熟啊,算了,就当做顺便熟悉C++了。
  3. 协议:找FTP服务器虽然难,但要去熟悉FTP的协议就更不容易。相关协议的汇总:
  • FTP/SFTP:正式标准:RFC 959。更新:RFC 2228(FTP Security Extensions),RFC 2640(i18n of FTP),RFC 2773(Encryption using KEA and SKIPJACK),RFC 3659(Extensions to FTP)和RFC 5797(FTP Command and Extension Registry)。其中,除2773为实验性质外,其余为提议标准。其余还有几个与FTP相关,但非更新类的进入标准跟踪级的RFC文档:RFC 2389 (Feature negotiation mechanism for the File Transfer Protocol),RFC 2428(FTP Extensions for IPv6 and NATs),RFC 2585(Internet X.509 Public Key Infrastructure Operational Protocols: FTP and HTTP),RFC 4217(Securing FTP with TLS)。其余非标准跟踪状态的先不去理了。
  • TFTP:正式标准(v2修正版):RFC 1350。更新:RFC 1782,1783,1784已经被后续标准废弃。代替他们的是RFC 2347(TFTP Option Extension),RFC 2348(TFTP Blocksize Option),RFC 2349(TFTP Timeout Interval and Transfer Size Options)。RFC 1785为Information级别,暂时不理。
  • SSH:这个标准更多,也先不理。

罗列了一堆协议,还得一个个去看呐。先不管那么多,大致浏览一下,以确定一下影响。

后面主要针对正式标准进行分析和设计。其他的提议标准尽可能参考吧。

你可能感兴趣的:(C++,ftp,TFTP,sftp)