Какой хороший машиночитаемый формальный способ описания телекоммуникационных протоколов, таких как SMPP или CIMD2? - PullRequest
1 голос
/ 04 июня 2010

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

Вместо этого я хотел бы перевести удобочитаемые спецификации протокола в машиночитаемые спецификации протокола и автоматически генерировать обработчики протокола на различных языках.

Я особенно заинтересован в том, чтобы делать это с протоколами SMPP / CIMD2 / EMI и сериализаторами / десериализаторами блоков данных с автогенерацией, а также с конечными автоматами, тестовыми примерами и другой инфраструктурой.

Кто-то уже сделал это?

Если нет, какие языки, библиотеки и нотации вы бы порекомендовали для такой задачи?

Ответы [ 2 ]

1 голос
/ 08 апреля 2019

Есть ABNF , хотя он не используется широко. Вот CIMD PDU, например

 cimd-frame     = start-of-text op-code COLON packet-number TAB parameter-list end-of-text
 parameter-list = *(parameter)
 parameter      = code COLON value TAB
 start-of-text  = %x02
 end-of-text    = %x03
 TAB            = %x09
 COLON          = %x3A
 …

Существуют генераторы парсеров, которые могут читать грамматику ABNF и создавать парсер.

0 голосов
/ 01 июля 2010

Вы имеете в виду что-то вроде того, что делают анализаторы протоколов? Они берут поток данных и разбирают его в правильные поля и отображают каждое поле пользователю. Похоже, вы хотите сделать что-то другое с проанализированными данными. Вам все равно придется писать декодированные протоколы, но после этого вы можете делать с данными все, что захотите.

Wireshark является открытым исходным кодом и бесплатен, и уже имеет множество декодирований протоколов, включая SMPP. Есть и коммерческие варианты.

...