【问题标题】:Good (standardized) methodology to specify binary telegrams/protocols指定二进制电报/协议的良好(标准化)方法
【发布时间】:2017-06-05 04:15:49
【问题描述】:

我正在寻找一种技术规范方法来指定二进制数据。 我正在寻找类似于 XML Schema Description (XSD) 之类的东西。

目的是使用该格式生成可以正确解释二进制序列的程序;即编程语言绑定。这就像有许多 XSD 框架可以生成 OO 编程语言中的类,这些类可以表示 XML 数据、解析和序列化。 尽管如此,该方法仍需要具有高度的人类可读性,以便领域专家可以指定和解释此文本规范。

到目前为止,我只发现了人类可读的语法。在许多标准中都使用了 ASCII-Art,例如 RFCsAMQP,如下所示:

0                   1                   2                   3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|          Source Port          |       Destination Port        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                        Sequence Number                        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                    Acknowledgment Number                      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|  Data |           |U|A|P|R|S|F|                               |
| Offset| Reserved  |R|C|S|S|Y|I|            Window             |
|       |           |G|K|H|T|N|N|                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|           Checksum            |         Urgent Pointer        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                    Options                    |    Padding    |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                             data                              |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                        TCP Header Format

但是,这几乎不是机器可读的。

有时我在Extended Backus Naur Form 中看到了规范。然而,这对于技术领域的人来说并不能真正阅读,而且我并不真正了解建议这种方法来指定二进制数据的标准。

谁能提出合适的方法/标准?

干杯, 豪克

【问题讨论】:

  • ASN.1 有时用于指定二进制格式。但是,如果您有无法阅读(或学会阅读)EBNF 的“技术”人员,那么他们对 ASN.1 感到满意的机会似乎很小。 (如果他们不知道如何阅读上下文无关的语法,他们怎么能成为技术人员?我深表同情。)

标签: xml xsd binary specifications requirements


【解决方案1】:

您的问题表达得非常好,但前提是有一个单一格式非常适合满足冲突约束。

相反,分别选择人类和机器消费的最佳格式,并在它们之间自动转换。根据您的需要,此映射可以是完全双向的,或者一种格式可以从另一种格式单独派生。

一旦您采用自动转换模式,您会发现您不再过度限制解决方案空间,并且您将能够针对真正的两组独立目标(人类的需求和机器的需要),而不是一套组合。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多