引言
计算机之间的网络通信正变得越来越重要。然而, 在这一领域开展工作的各种装置种类繁多, 这大概使得计算机间消息的内容与形式的标准化无法实现。不过, 仍有一些希望: 可以发展出一种定义和描述消息形式的标准方法, 并用它来促进计算机之间的通信。正如 ALGOL 充当描述众多算法的标准载体、BNF 充当描述语言语法的标准一样, 一种消息描述语言将可作为定义消息格式的标准载体。
在消息处理协议的低层已经取得了相当大的进展, 人们可以预期将采用 ASCII 协议。以下讨论假定交换消息的机制、校验和、重发请求等都已经解决。所关注的问题是如何在网络报头和报尾的细节被剥去之后, 描述二进制消息体的内容与意图。
大多数描述二进制消息内容的尝试都直接跳到考虑要使用的比特编码。人们画出长而细的矩形来表示二进制比特流; 这个流被切分成一个个方框, 然后用表格一般性地描述每个方框的比特选项。更好的做法是提供一种描述消息的符号化方法。这种符号化通过避免直接涉及具体的比特细节, 应当有助于理解消息的内容以及消息体中可用的各种备选。当二进制消息体的基本形式清楚之后, 就可以给出实际比特字段的编码细节了。
描述一个二进制消息体与描述一个文本体或一门语言并没有多大差别。文本假定固定的比特字段, 每个字段含一个字符。标准的语言描述方法 (BNF) 随后说明这些字符可以如何拼接, 以及应当对字符组作何解释。二进制消息描述还需要额外的能力: 定义消息中各种大小的字段, 以及对该字段所含比特的解释。
消息描述最初的用意是作为一份参考标准, 写在纸上并提供给计算机网络的新用户。借助这份标准, 新用户可以了解在网络上交换的二进制数据的种类和形式。一旦了解了这些, 就可以编写使用网络设施所需的程序。此后, 在一个已经建立起来的网络中, 人们可以设想: 新开发的二进制格式的标准, 将通过在网络本身之上交换 ASCII 文本消息来发布, 而不是通过邮件以纸质方式发布。再往更远的未来看, 一份二进制格式标准的文本还可以作为类似编译器的程序的输入, 由这类程序自动生成用于把一种二进制格式转换成另一种的数据转换程序。不过就目前而言, 某种二进制数据描述方法 —— 无论多么简陋 —— 都是迫切需要的。