2010-09-17 3 views
3

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

В настоящий момент это похоже на гигантское задание, и я не в порядке с того, с чего начать.

Я ищу:

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

Try, чтобы держать его применимо к сетевым протоколам в целом.

Спасибо!

ответ

1

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

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

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

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

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

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

1

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

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