Реализация сетевых протоколов - PullRequest
3 голосов
/ 17 сентября 2010

Я собираюсь реализовать сетевой протокол (в частности, SFTP), и мне было интересно, есть ли какие-то общие правила, которым нужно следовать?

На данный момент это похоже на гигантскую задачу, и я не знаю, с чего начать.

Я ищу:

  • Советы
  • Лучшие практики
  • Возможные шаблоны проектирования
  • Опыт

Постарайтесь сохранить его применимым к сетевым протоколам в целом.

Спасибо!

Ответы [ 2 ]

1 голос
/ 21 сентября 2010

Я бы порекомендовал использовать хорошо протестированные библиотеки, если это возможно.Особенно для SSH-стороны SFTP - поскольку ошибки в реализации могут привести к уязвимостям безопасности.

Тем не менее, вы кажетесь опытным человеком, и вы можете обнаружить, что ни одна из библиотек там ( SharpSSH) и т. Д.), Вы должны рассмотреть возможность разделения вашей сетевой реализации на ее собственную библиотеку и открыть ее по двум причинам:

  1. Если это полезно для вас, это может быть полезнокому-то еще.
  2. Вы могли бы получить полезный обзор кода

Учитывая все это, другие руководящие указания будут аналогичны другим разработкам, но, возможно, сбольше строгости в отношении безопасности и тестирования.Удостоверьтесь, что вы выполняете статический анализ и что вы юнит-тестирование для случаев отказа.

Также: используйте, но не доверяйте нижним уровням модели OSI , которыепредоставляются для вас.Если есть сценарий, который нарушает ваш код, вы можете поспорить, что сеть в конечном итоге найдет его.

Надеюсь, это поможет.

1 голос
/ 17 сентября 2010

Я бы посоветовал взглянуть на библиотеку SharpSSH , которая включает поддержку SFTP и выпущена под лицензией в стиле BSD, так что вы можете повторно использовать исходный код или хотя бы идеи из этого проекта.

В другом ответе на SO (который я видел несколько месяцев назад) упоминались некоторые проблемы с поддержкой SFTP, но не уверен, что они все еще актуальны, и в любом случае это может быть хорошим началомуказать хотя бы.

...