Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Форматы файлов и данных > шаблон для описания протоколов


Автор: evkwarrior 7.12.2009, 11:38
ДОброго времени суток, уважаемые форумчане
Возникла такая проблема:
необходимо разработать шаблон (а точнее формат шаблона) для описания протоколов прикладного уровня (http, smtp и т.д.).
в шаблоне должно находиться полное описание протокола (элементы, их характеристики и условия, налагаемые для них)
к примеру, для протокола http шаблон должен включать примерно следующую инфу:
стартовая строка (метод - uri - версия)
заголовки (запросные заголовки (accept, referer и т.д), ответные заголовки, и т.д.)
content-body
+  к этому для каждого элемента протокола условия его применения (запросные заголовки тогда,  когда метод Get или post).

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

я никогда с подобным не сталкивался, и эта задача ставит меня в ступор. я не прошу придумать что-то за меня, а просто хочу спросить совета:
может, кто-то сталкивался с чем-то подобным (разработка шаблонов описания протоколов или файловых форматов) и может поделиться опытом,
или кто-то знает, где копать на эту тему, где почитать.
разработка планируется на C++ в QT или Visual Studio 2008

очень буду признателен, если кто-то поможет

Автор: bsa 7.12.2009, 21:05
evkwarrior, как ты думаешь, зачем все эти протоколы были придуманы? Вот именно, они предназначены для разных целей. http - для получения данных от сервера, который их генерирует на основании полей запроса. ftp - для обмена файлами с сервером... SMB для поддержания сети Windows (общий доступ к файлам и папкам). Вот и скажи, что между ними общего? Например, у http нет возможности получить список файлов, а у ftp нельзя задать поля referer и пр.
Другими словами, универсальный шаблон сделать нельзя, так как работающая с ним программа должна знать, с каким протоколом она работает, и какие ресурсы для работы он ей предоставляет.


Если уж тебе совсем ни в моготу, то напрямую используй протокол IP - на этом уровне модели OSI вообще нет понятий HTTP/FTP и пр. Вот только средств для этого в Qt, кажется, нет.

Автор: evkwarrior 10.12.2009, 15:01
Цитата(bsa @  7.12.2009,  21:05 Найти цитируемый пост)
универсальный шаблон сделать нельзя

дружище, формат шаблона, а не шаблон!!!
шаблонов будет много, для каждого протокола.
А формат будет один!!!

Автор: chaos 10.12.2009, 15:43
evkwarrior, думаешь в этом топике тебе будет лучше? smile

еще раз повторяю
Цитата

Abstract Syntax Notation One (ASN.1) is a standard and flexible notation that describes data structures for representing, encoding, transmitting, and decoding data


лучше еще не придумали, да и не надо!

Автор: evkwarrior 12.3.2010, 12:22
chaos,
Цитата

лучше еще не придумали, да и не надо! 


Почитал.... слишком муторно(((
только для понимания языка пишут книжки по 600 стр. Я уж молчу про реализацию парсера.... 
хотя, может и стоит попробовать

Автор: ТарасАтавин 30.11.2013, 16:18
Цитата(evkwarrior @  10.12.2009,  15:01 Найти цитируемый пост)
дружище, формат шаблона, а не шаблон!!!
Не имеет значения. В любом случае если программа не знает, с каким протоколом работает, то она и не может с ним работать, какие бы шаблоны и в каких бы форматах для этого ни применялись. Сама прога должна быть специализированной, чтоб работать хоть с каким то протоколом через шаблон или без, мейлер в любом случае не сможет играть онлайнвидео, а клиент WoT не разжуёт сайт. А из собственного назначения прога уже знает, с какими протоколами работает.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)