我将要实现一个网络协议(具体来说是SFTP),想知道是否有任何通用的建议原则可以遵循? 目前看起来这是一项艰巨的任务,我不知道从哪里开始。 我正在寻找: 提示 最佳实践 可能的设计模式 经验教训 请尽量保持与网络协议相关。 谢谢!
我建议您查看SharpSSH库,它包括对SFTP的支持,并已发布在BSD风格许可下,因此您可能能够重用该项目的源代码或至少从中获得一些想法。在SO上有一些其他答案(我几个月前看到的),提到了其中的SFTP支持存在一些问题,但不确定这些问题是否仍然相关,无论如何,这可能是一个很好的起点。
如果可能的话,我肯定会建议使用经过充分测试的库。特别是对于SFTP的SSH方面-因为实现错误可能导致安全漏洞。 话虽如此,您似乎是一位经验丰富的人,您可能会发现没有任何一个库(例如SharpSSH等)是合适的,您应该考虑将网络实现分离出来成为自己的库并开源它,原因有两个: 如果对您有用,那么对其他人也可能有用。 您可能会得到一些有益的代码审查。 考虑到所有这些,遵循的其他指南与其他开发类似,但可能更加注重安全性和测试。确保运行静态分析,并对失败情况进行单元测试。 另外:使用,但不要信任为您提供的OSI模型的较低层。如果有一种情况破坏了您的代码,您可以打赌网络最终会找到它。 希望这有所帮助。