设为首页 收藏本站
查看: 1137|回复: 0

FTP中的收获

[复制链接]

尚未签到

发表于 2015-5-29 07:58:08 | 显示全部楼层 |阅读模式
在这几天编写FTP服务器端和客户端程序时,总是遇到这样那样的错误和困难,现在已经解决大部分,几点收获记录如下:

1. 明白了主动模式和被动模式的根本区别:
主动模式:服务器向客户端敲门,然后客户端开门;
被动模式:客户端向服务器敲门,然后服务器开门。

2. Socket的Send方法是非阻塞的;

3. ASCII传输模式和Binary传输模式,对于ASCII传输模式,传输的数据大小不大时,还是很方便的,但是用于传输大量数据,如大文件时,接收方处理并不容易。
在我的设计中,只有使用Binary模式才能保证每次传输都是正确。特别是使用了Socket的SendFile方法,这是一个阻塞方法,只要数据未发送完,都会被阻塞直到发送完毕。系统会自动处理缓冲等问题,非常方便;属于Binary模式的。

4. 明白了一种协议标准的必要性。

5. 学会了许多FTP命令。

6. 基本掌握了Socket的工作原理和编程方式。

7. 进一步理解了多线程编程。

8. FTP是File Transfer Protocol(文件传输协议)的缩写,用来在两台计算机之间互相传送文件。相比于HTTP,FTP协议要复杂得多。复杂的原因,是因为FTP协议要用到两个TCP连接,一个是命令链路,用来在FTP客户端与服务器之间传递命令;另一个是数据链路,用来上传或下载数据。
(1)用于传送命令的两个Socket,它们在整个过程中都是连接着的;
(2)用于传送数据的两个Socket,只在有数据传送时才建立连接,数据传送完后,则断开连接。
(3)还有两个Socket用于监听,采用主动模式时,ClientListener处于监听状态;采用被动模式时,ServerListener处于监听状态。

暂时就这么多了,晚了,要睡了。。。。zzzzzzzzzzzzzzzzzzzz

参考资料:
1. 主动FTP vs. 被动FTP 权威解释
2. ftp应答码
3. FTP wiki
4. 了解FTP服务与FTP协议(图)
5. 一个FTP类
6. 一个FTP客户端的C#代码2
7. FTP协议的分析和扩展
8. FTP命令详解
9. http://www.faqs.org/rfcs/rfc959.html  RFC 959 (RFC959)   中文版
10. FTP---文件传输协议

其它资源:
ftp协议簇
http://www.ietf.org/rfc/rfc959.txt
http://www.ietf.org/rfc/rfc1579.txt

ftp安全扩展
http://www.ietf.org/rfc/rfc2228.txt
http://www.ietf.org/rfc/rfc2246.txt

ftp安全扩展,SSL接口草案:
http://www.ietf.org/internet-drafts/draft-murray-auth-ftp-ssl-13.txt

ssl/tls协议规范:
http://www.ietf.org/rfc/rfc2246.txt

OpenSSL,一个广为应用的SSL实现:
http://www.openssl.org

支持ssl ftp的ftp client:
http://www.ford-hutchinson.com/~fh-1-pfh/ftps-ext_col.html#client

支持ssl ftp的ftp server:
http://www.ford-hutchinson.com/~fh-1-pfh/ftps-ext_col.html#server

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-71652-1-1.html 上篇帖子: Ftp PORT & PASV 下篇帖子: linux系统FTP、apache、mysql配置方法
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表