【发布时间】:2012-03-05 02:07:52
【问题描述】:
我需要在 BSD 套接字中编写一个程序,该程序的行为类似于用于传输文件内容的文件传输协议。它必须在客户端和服务器之间使用两个 TCP 连接。
如果不是代码,请提供任何其他参考资料,例如实现的流程图或算法。
【问题讨论】:
-
为什么不直接使用现有的 FTP API?
我需要在 BSD 套接字中编写一个程序,该程序的行为类似于用于传输文件内容的文件传输协议。它必须在客户端和服务器之间使用两个 TCP 连接。
如果不是代码,请提供任何其他参考资料,例如实现的流程图或算法。
【问题讨论】:
尝试浏览可用的 FTP 文档here。
【讨论】:
如果您需要遵守历史 FTP 实施,ard's answer 应该会有所帮助。请确保您的实现不会受到允许攻击者在执行 TCP 端口扫描时“隐藏”其 IP 地址的FTP bounce vulnerability 的影响。
但是,我想建议双连接方法是错误的——它使 NAT 遍历变得更加复杂。此外,由于历史上的 FTP 规范没有指定目录列表格式,因此以创建图形工具为目的的解析更加困难(并且人类读者可能会感到困惑)。
SFTP 协议不会遇到这些问题。当然,它也明显更复杂。但是,它可以更可靠地穿越 NAT 防火墙,并提供明确的解析。
【讨论】: