最近在尋找FTP服務器,跨平臺的,性能要高,安全性要好,支持SFTP、FTP、FTPS、FTPES、TFTP協議。安全
能夠難死我了。找了好久也沒有找到,突然想本身來寫一個。算是對N久沒有寫代碼的一種回憶和鍛鍊吧。服務器
萬事開頭難,真的想開始寫的時候才發現:性能
- 基礎設施不健全:本本上連個開發環境都沒。好在光盤還在,我裝~~。
- 使用什麼開發:Java是我最熟悉的,並且Apache已經出了一個FTPServer(Mina項目下的子項目),又能跨平臺,不過還不支持SFTP和TFTP。並且,資源的消耗有點大了。想來想去仍是不打算用。由於要跨平臺,因此.net之流是不打算考慮了,雖然那是我第二熟悉的。我會的就剩下C/C++了,怎奈不太熟啊,算了,就當作順便熟悉C++了。
- 協議:找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:這個標準更多,也先不理。
羅列了一堆協議,還得一個個去看吶。先無論那麼多,大體瀏覽一下,以肯定一下影響。.net
後面主要針對正式標準進行分析和設計。其餘的提議標準儘量參考吧。設計