读FTP RFC(RFC959),我注意到,我从来没有见过使用,的确似乎不被流行的FTP软件(vsftpd的例如)来实现的一些模式。 特别地,对于STRU命令,只有文件模式“STRU F”是常用,而对于模式命令,仅流模式“MODE S”是常用的。
所以,问题是,以下为开发可互操作的FTP客户端和服务器软件的最佳实践时:
- 它是有用的,以支持其他STRU选项(记录和页面)? 这些看似很古老的东西派。
- 它是有用的,以支持其他模式选项(块压缩的)? 我能看到点压缩,但我特别想知道是否有任何的客户端/服务器将期望挡在那里。
- 是否有其存在的FTP实现支持该选项的任何调查?
(在MODE一个,我可以看到,为什么压缩是非常有用的,我更想知道是否有任何的客户端/服务器将期望块模式在那里)。
我保持一个自定义的FTP服务器,并定期指http://cr.yp.to/ftp.html这些类型的问题。 Specificly,我遵循TYPE / MODE / STRU建议在http://cr.yp.to/ftp/type.html ,到目前为止有没有问题。
无需客户端我见过连接已派出除了“STRU F”的STRU请求。 同样,我只看过“S模式”。
我建议寻找开源的FTP客户端和服务器(特别是那些仍在积极更新),看看有多少人实现这些“过时”的传输模式。
我一次(大约七年前)做了FTP客户端和实施只是最基本的传输模式(ASCII和二进制,如果我没有记错)。 使用时,它从来没有与任何服务器有问题。
这听起来像你最关注的互操作性。 答案是客户端和服务器之间有些不同。
对于服务器,要实现客户端使用的基本模式。 对于每一个客户,你需要支持至少一个配置的,因此组合的数量应该是比较低的。 除了最小的,支持主动-和-被动模式可能会主要增加(Mozilla社区已经想了很长一段时间的被动支持, 它可能永远也不会发生 )。
如果你是一个客户端,提供良好的URL支持和日期/时间处理可能是最大的障碍。