网络协议的实现

3

我将要实现一个网络协议(具体来说是SFTP),想知道是否有任何通用的建议原则可以遵循?

目前看起来这是一项艰巨的任务,我不知道从哪里开始。

我正在寻找:

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

请尽量保持与网络协议相关。

谢谢!

2个回答

1
我建议您查看SharpSSH库,它包括对SFTP的支持,并已发布在BSD风格许可下,因此您可能能够重用该项目的源代码或至少从中获得一些想法。
在SO上有一些其他答案(我几个月前看到的),提到了其中的SFTP支持存在一些问题,但不确定这些问题是否仍然相关,无论如何,这可能是一个很好的起点。

1

如果可能的话,我肯定会建议使用经过充分测试的库。特别是对于SFTP的SSH方面-因为实现错误可能导致安全漏洞。

话虽如此,您似乎是一位经验丰富的人,您可能会发现没有任何一个库(例如SharpSSH等)是合适的,您应该考虑将网络实现分离出来成为自己的库并开源它,原因有两个:

  1. 如果对您有用,那么对其他人也可能有用。
  2. 可能会得到一些有益的代码审查。

考虑到所有这些,遵循的其他指南与其他开发类似,但可能更加注重安全性和测试。确保运行静态分析,并对失败情况进行单元测试。

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

希望这有所帮助。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接