【发布时间】:2010-09-17 09:04:08
【问题描述】:
我将要实现一个网络协议(特别是 SFTP),我想知道是否有任何通用的经验法则可以遵循?
目前这似乎是一项艰巨的任务,我不知道从哪里开始。
我正在寻找:
- 提示
- 最佳做法
- 可能的设计模式
- 经验
尽量使其适用于一般的网络协议。
谢谢!
【问题讨论】:
标签: c# design-patterns oop implementation network-protocols
我将要实现一个网络协议(特别是 SFTP),我想知道是否有任何通用的经验法则可以遵循?
目前这似乎是一项艰巨的任务,我不知道从哪里开始。
我正在寻找:
尽量使其适用于一般的网络协议。
谢谢!
【问题讨论】:
标签: c# design-patterns oop implementation network-protocols
如果可能的话,我当然会推荐使用经过良好测试的库。特别是对于 SFTP 的 SSH 端 - 因为实施中的错误可能导致安全漏洞。
也就是说,您似乎是一个有经验的人,您可能会发现那里没有一个库(SharpSSH 等)是合适的,您应该考虑将您的网络实现分离到自己的库中并将其开源有两个原因:
考虑到所有这些,要遵循的其他指南将与其他开发类似,但在安全性和测试方面可能更加严格。确保运行静态分析并针对失败案例进行单元测试。
另外:使用但不信任为您提供的OSI model 的较低层。如果有一个场景破坏了你的代码,你可以打赌网络最终会找到它。
希望这会有所帮助。
【讨论】:
我建议查看 SharpSSH 库,它包括对 SFTP 的支持,并且已在 BSD 样式许可下发布,因此您可以重用源代码或至少可以重用该项目的想法。
关于 SO 的其他一些答案(我在几个月前看到的)提到了其中的 SFTP 支持的一些问题,但不确定这些问题是否仍然相关,无论哪种方式,它至少可能是一个很好的起点。
【讨论】: