我將實現一個網絡協議(特別是SFTP),我想知道是否有任何一般的經驗規則可以遵循?網絡協議的實現
目前看起來像是一個巨大的任務,而且我無法從哪裏開始。
我在尋找:
- 提示
- 最佳實踐
- 可能的設計模式
- 經驗
儘量保持它適用於一般的網絡協議。
謝謝!
我將實現一個網絡協議(特別是SFTP),我想知道是否有任何一般的經驗規則可以遵循?網絡協議的實現
目前看起來像是一個巨大的任務,而且我無法從哪裏開始。
我在尋找:
儘量保持它適用於一般的網絡協議。
謝謝!
我肯定會推薦使用經過良好測試的庫,如果可能的話。特別是對於SFTP的SSH方面 - 執行中的錯誤可能會導致安全漏洞。這就是說,你看起來像一個經驗豐富的人,你可能會發現沒有任何圖書館(SharpSSH等)是合適的,你應該考慮將你的網絡實現分離到它自己的庫中,並打開它的源代碼兩個原因:
鑑於這一切,其他的指引,將類似於其他方面的發展,但或許與有關安全和測試更加精確。確保您運行靜態分析,並確保您對失敗情況進行單元測試。
此外:使用,但不信任爲您提供的OSI model的較低層。如果有一種情況會破壞你的代碼,你可以打賭網絡最終會找到它。
希望這會有所幫助。
我建議你看看SharpSSH庫,它包含對SFTP的支持,並且已經在BSD風格的許可證下發布,所以你可能可以重用源代碼或至少從該項目中獲得想法。
對於SO(我幾個月前見過)中的一些其他答案提到了SFTP支持的一些問題,但不確定這些問題是否仍然相關,哪種方式可能是一個好的起點。