2010-09-17 223 views
3

我將實現一個網絡協議(特別是SFTP),我想知道是否有任何一般的經驗規則可以遵循?網絡協議的實現

目前看起來像是一個巨大的任務,而且我無法從哪裏開始。

我在尋找:

  • 提示
  • 最佳實踐
  • 可能的設計模式
  • 經驗

儘量保持它適用於一般的網絡協議。

謝謝!

回答

1

我肯定會推薦使用經過良好測試的庫,如果可能的話。特別是對於SFTP的SSH方面 - 執行中的錯誤可能會導致安全漏洞。這就是說,你看起來像一個經驗豐富的人,你可能會發現沒有任何圖書館(SharpSSH等)是合適的,你應該考慮將你的網絡實現分離到它自己的庫中,並打開它的源代碼兩個原因:

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

鑑於這一切,其他的指引,將類似於其他方面的發展,但或許與有關安全和測試更加精確。確保您運行靜態分析,並確保您對失敗情況進行單元測試。

此外:使用,但不信任爲您提供的OSI model的較低層。如果有一種情況會破壞你的代碼,你可以打賭網絡最終會找到它。

希望這會有所幫助。

1

我建議你看看SharpSSH庫,它包含對SFTP的支持,並且已經在BSD風格的許可證下發布,所以你可能可以重用源代碼或至少從該項目中獲得想法。

對於SO(我幾個月前見過)中的一些其他答案提到了SFTP支持的一些問題,但不確定這些問題是否仍然相關,哪種方式可能是一個好的起點。