Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> универсальный шаблон для описания протоколов 
:(
    Опции темы
evkwarrior
Дата 7.12.2009, 11:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 15.3.2007

Репутация: нет
Всего: 1



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

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

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

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

PM MAIL   Вверх
SenkraD
Дата 7.12.2009, 11:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 933
Регистрация: 3.2.2006
Где: Украина::Киев

Репутация: 2
Всего: 23



Может быть это тебе поможет или подскажет направление мысли


--------------------
 Имеющий язык - да не убоится спросить! 
user posted image
PM MAIL ICQ   Вверх
mes
Дата 9.12.2009, 02:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Цитата(evkwarrior @  7.12.2009,  10:41 Найти цитируемый пост)
программа, обрабатывающая шаблон, не должна ничего знать о том, шаблон какого протокола она обрабатывает. причем важнее больше придумать формат шаблона (метод описания данных).

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




--------------------
PM MAIL WWW   Вверх
Любитель
Дата 9.12.2009, 02:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 24
Всего: 92



Я правильно понимаю, что нужен просто мегауниверсальный парсер? Описывать тривиально - описываешь список токенов и определяешь токен "весь поток данных". Описание - список из групп термов. Термы - определяем просто допустимый диапазон символов и их количество или же конкретные варианты. Проблема возникает в случае, если формат данных (в той или иной степени) тяжело описать декларативно. Но.. это уже из области экзотики (если делать парсер на разумном виде, без мегапроверок и конкретизаций). Немного сумбурно, но.. в целом верно ))


--------------------
PM MAIL ICQ Skype   Вверх
chaos
Дата 9.12.2009, 10:44 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Серийный программист
****


Профиль
Группа: Завсегдатай
Сообщений: 2979
Регистрация: 7.7.2004
Где: Екатеринбург

Репутация: 6
Всего: 44



evkwarriorASN.1
PM WWW   Вверх
evkwarrior
Дата 9.12.2009, 19:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 15.3.2007

Репутация: нет
Всего: 1



спасибо всем, кто откликнулся)

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

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

проблема в том, что для протоколов мало описать только поля. надо описать ещё и алгоритм взаимодействия.
необходимо, чтобы сформированное в конструкторе можно было ещё и отправить по сети. 
некоторые протоколы описывают сеансы, некоторую последовательность действий между подключением и отключением
как быть с некоторыми последовательностями действий - хрен знает.
например для ftp:
>открыли порт 21
<ждем 220
>user "login"
<if 331 continue else repeat
>pass "pass"
<if 230 continue else repeat
>command
<wait for answer
.........
>quit

вот. 
с другой стороны, последовательность действий можно вынести из шаблона. а в шаблоне описать только возможные пакеты для отправки.
и вообще, может для данной задачи бессмысленно делать универсальную программу-обработчик и универсальный шаблон??
но тогда придётся с каждым новым форматом или протоколом переписывать прогу, и так до бесконечности
или сделать 2 шаблона - только данные и условия и сам алгоритм?
как быть?
PM MAIL   Вверх
mes
Дата 9.12.2009, 22:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



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





--------------------
PM MAIL WWW   Вверх
chaos
Дата 10.12.2009, 09:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Серийный программист
****


Профиль
Группа: Завсегдатай
Сообщений: 2979
Регистрация: 7.7.2004
Где: Екатеринбург

Репутация: 6
Всего: 44



ИМХО очень очень...... сложно разработать универсальную штуку. ибо протоколы упомянутые топикстартером тривиальные, а есть еще всякого рода МЭКи где "черт ногу сломит" не говоря уже об всяких MMS, TASE и тд и тп.

Топикстартеру: делай то что сейчас нужно, не пытайся охватить все!
PM WWW   Вверх
evkwarrior
Дата 10.12.2009, 13:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 15.3.2007

Репутация: нет
Всего: 1



Цитата(mes @  9.12.2009,  22:54 Найти цитируемый пост)
так и Вам имхо вместо изобретения шаблона описания, лучше продумать плагинную систему,

я ни разу не сталкивался с плагинной системой. может подскажете, с чего начать? есть ли что-то готовое в данной области?
PM MAIL   Вверх
xvr
Дата 10.12.2009, 13:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 60
Всего: 223



'некоторые последовательности' можно описать Конечным Автоматом. Условия для переходов между состояниями могут извлекаться из дешифрованных (шаблонами) данных.
Для описания самих шаблонов можно привлечь например XML Schema

PM MAIL   Вверх
evkwarrior
Дата 10.12.2009, 15:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 15.3.2007

Репутация: нет
Всего: 1



добавлю.
на другом форуме столкнулся с проблемой непонимания задачи. Мне нужно придумать универсальный ФОРМАТ шаблона, а не универсальный шаблон.
шаблонов будет много, для каждого протокола.
т.е. универсальный протокол описания протоколов)
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0903 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.