代码之家  ›  专栏  ›  技术社区  ›  Mikael Gueck

描述电信协议(如smpp或cimd2)的好的机器可读形式化方法是什么?

  •  1
  • Mikael Gueck  · 技术社区  · 14 年前

    在我的职业生涯中,我用不同的语言从人类可读的规范中实现了几个电信协议,坦率地说,我已经不太喜欢它了。

    相反,我希望将人类可读的协议规范转换为机器可读的协议规范,并自动生成各种语言的协议处理程序。

    我特别感兴趣的是对smpp/cimd2/emi协议、自动生成协议数据单元序列化器/反序列化器以及状态机、测试用例和其他基础设施执行此操作。

    有人已经这样做了吗?

    如果没有,那么您建议使用哪种语言、库和符号来执行此任务?

    1 回复  |  直到 14 年前
        1
  •  1
  •   Jarek Przygódzki    5 年前

    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语法并生成解析器。

        2
  •  0
  •   Kirsten    14 年前

    你的意思是什么样的协议分析器做什么?它们获取数据流并将其解析为正确的字段,并将每个字段显示给用户。听起来你想对解析后的数据做些不同的处理。你仍然需要编写协议解码,但之后你可以对数据做任何你想做的事情。

    wireshark是开源和免费的,已经有很多协议解码,包括smpp。也有商业选择。