2010-09-17 169 views
3

我将实现一个网络协议(特别是SFTP),我想知道是否有任何一般的经验规则可以遵循?网络协议的实现

目前看起来像是一个巨大的任务,而且我无法从哪里开始。

我在寻找:

  • 提示
  • 最佳实践
  • 可能的设计模式
  • 经验

尽量保持它适用于一般的网络协议。

谢谢!

回答

1

我肯定会推荐使用经过良好测试的库,如果可能的话。特别是对于SFTP的SSH方面 - 执行中的错误可能会导致安全漏洞。这就是说,你看起来像一个经验丰富的人,你可能会发现没有任何图书馆(SharpSSH等)是合适的,你应该考虑将你的网络实现分离到它自己的库中,并打开它的源代码两个原因:

  1. 如果它对你有用,它可能对其他人有用。
  2. 可能得到一些有益的代码审查

鉴于这一切,其他的指引,将类似于其他方面的发展,但或许与有关安全和测试更加精确。确保您运行静态分析,并确保您对失败情况进行单元测试。

此外:使用,但不信任为您提供的OSI model的较低层。如果有一种情况会破坏你的代码,你可以打赌网络最终会找到它。

希望这会有所帮助。

1

我建议你看看SharpSSH库,它包含对SFTP的支持,并且已经在BSD风格的许可证下发布,所以你可能可以重用源代码或至少从该项目中获得想法。

对于SO(我几个月前见过)中的一些其他答案提到了SFTP支持的一些问题,但不确定这些问题是否仍然相关,哪种方式可能是一个好的起点。