我将实现一个网络协议(特别是SFTP),我想知道是否有任何一般的经验规则可以遵循?网络协议的实现
目前看起来像是一个巨大的任务,而且我无法从哪里开始。
我在寻找:
- 提示
- 最佳实践
- 可能的设计模式
- 经验
尽量保持它适用于一般的网络协议。
谢谢!
我将实现一个网络协议(特别是SFTP),我想知道是否有任何一般的经验规则可以遵循?网络协议的实现
目前看起来像是一个巨大的任务,而且我无法从哪里开始。
我在寻找:
尽量保持它适用于一般的网络协议。
谢谢!
我肯定会推荐使用经过良好测试的库,如果可能的话。特别是对于SFTP的SSH方面 - 执行中的错误可能会导致安全漏洞。这就是说,你看起来像一个经验丰富的人,你可能会发现没有任何图书馆(SharpSSH等)是合适的,你应该考虑将你的网络实现分离到它自己的库中,并打开它的源代码两个原因:
鉴于这一切,其他的指引,将类似于其他方面的发展,但或许与有关安全和测试更加精确。确保您运行静态分析,并确保您对失败情况进行单元测试。
此外:使用,但不信任为您提供的OSI model的较低层。如果有一种情况会破坏你的代码,你可以打赌网络最终会找到它。
希望这会有所帮助。
我建议你看看SharpSSH库,它包含对SFTP的支持,并且已经在BSD风格的许可证下发布,所以你可能可以重用源代码或至少从该项目中获得想法。
对于SO(我几个月前见过)中的一些其他答案提到了SFTP支持的一些问题,但不确定这些问题是否仍然相关,哪种方式可能是一个好的起点。