有简单的网络协议结构(例如ipv4,tcp,udp,.)这可以很容易地用任何语言通过限制来描述。但是具有可选字段/块和动态块/字段大小(TVL、LT等)的结构比较困难--例如ipv6、sctp、PROFINET-IOE 215
(分散外围)、
我的问题是-如何正确地描述协议数据结构并将其存储以供将来使用?例如,为不同语言生成结构,或获取所有树(例如,在ipv6 Wireshark ipv6.opt.pdm.delta_last_recv中),或获取协议的特定块/扩展/选项的所有字段。
我希望描述清楚。谢谢。
发布于 2020-06-24 18:21:01
创建ASN1语言是为了解决这个问题和其他类似的问题。IMHO,您没有看到它经常使用的原因是语言变得非常复杂,不同的派别开始以不同的方式使用它(SNMP、Crypto X509等),这导致了ASN1编译器是专门化的而不是通用的。
通常,您看到的不是ASN1,而是数据包的generate定义,或者仅仅是一个RFC数据包图(您可以使用协议工具生成一个),带有一些标记(比如...
)来表示可变长度。
我猜想原生质在技术上也是一种描述二进制消息的语言,尽管我不认为它是一种能够描述任何消息的通用语言,也是其他支持protobuf的应用程序应该使用的语言。
https://stackoverflow.com/questions/62529808
复制相似问题