有什么approaches/languages来描述network-protocols/packet-structures?

What approaches/languages exist for describing network-protocols/packet-structures?

有简单的网络协议结构(例如ipv4tcpudp , ...) 可以很容易地用任何语言通过限制来描述。但是还有更难的结构,可选 fields/block 和动态 block/field 大小(TVLLT 等)-例如ipv6, sctp, PROFINET-IO (分散式外设 ), ...

我的问题是 - 如何正确描述协议数据结构并将其存储以备将来使用?例如。为不同语言生成结构,或获取所有树(例如 ipv6 Wireshark ipv6.opt.pdm.delta_last_recv),或获取特定 [=协议的 42=]。

希望描述清楚。谢谢

A​​SN1 语言就是为了解决这个问题和其他类似问题而创建的。恕我直言,你没有看到它经常被使用的原因是语言变得非常复杂,不同的派别开始以不同的方式使用它(SNMP MIB,Crypto X509 等),这导致 ASN1 编译器是专门的而不是通用的。

通常您看到的不是 ASN1,而是数据包的 C-Struct 定义或只是一个 RFC 数据包图(您可以使用 protocol 工具生成一个)带有一些标记(如 ... ) 表示可变长度。

我想 protobuf 在技术上也有资格作为一种描述二进制消息的语言,尽管我不认为它是一种可以描述任何消息的 通用 语言并且是旨在供其他支持 protobuf 的应用程序使用。