存在哪些描述网络协议/数据包结构的方法/语言?

时间:2020-06-23 07:45:43

标签: networking network-programming protocol-buffers wireshark ddl

网络协议结构简单(例如 ipv4 tcp udp 等),可以很容易地实现通过限制用任何语言描述。但是,还有一些更困难的结构,其中包含可选的字段/块和动态块/字段大小( TVL LT 等)-例如 ipv6 sctp PROFINET-IO 去中心化外围设备),...

我的问题是-如何正确描述协议数据结构并将其存储以备将来使用?例如。生成用于不同语言的结构,或获取所有树(例如,在 ipv6 Wireshark ipv6.opt.pdm.delta_last_recv 中),或获取特定块/扩展名/选项的所有字段协议。

我希望描述清楚。谢谢。

1 个答案:

答案 0 :(得分:2)

创建ASN1语言就是为了解决此问题以及类似的其他问题。恕我直言,您看不到它经常使用的原因是该语言变得非常复杂,并且不同的派系开始以不同的方式(SNMP MIB,Crypto X509等)来使用它,这导致ASN1编译器变得专用而不通用。 / p>

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

我认为protobuf从技术上也可以描述一种二进制消息,尽管我不认为它是可以描述任何消息的通用语言,其他支持protobuf的应用程序。