我正在寻找结构化机器可读形式中的网络协议结构定义,例如xml,json或我目前不知道的其他描述语言。 (例如yaml)
我在这里谈论标准的东西:以太网,IP,TCP,UDP,ICMP等以及其他可以通过网络[有线和无线]运行的东西。 例如,所有可以用wireshark嗅探的东西。
我即将开展的项目需要的是机器可读形式的所有协议定义,我不关心这些定义出现在哪些服装中,我只需要它们。
搜索' interwebs'对于这样的通用协议结构定义"我喜欢在大海捞针中寻找一针,然后抛出一切,但这就是我所寻找的。 p>
我甚至光滑地检查了wireshark的可用代码,希望找到可用的东西。 (事实并非如此,或者我看起来并不够......)
是否不存在,我是否必须为该任务创建新架构?
或者它只是在我的眼前隐藏了几个小时的搜索?
提前感谢stackoverflow的专家。 :)
[编辑:]进一步澄清:
我知道Linux,Windows和OSX都有所有基本协议的标题,但我想省略平台依赖代码。它足以用于标准和最常用的部分(Eth,ARP,IP,TCP,UDP,ICMP等),但是为什么编程和构建更多的依赖关系来支持更少使用的协议,当你可以使用时您内部的一种机器可读格式是否能够定义所有协议? (这可能是我的一个伟大梦想......)
规则并不重要,我需要基本结构和字段定义以及字段数据的可选描述。
你可以把它称为协议词典......我简直不敢相信没有其他人已经有过这个想法,这就是我提出这个问题的原因!
程序语言的独立性很重要,对我的项目(C ++ / Qt)来说并不是特别重要,但对于对这样一本词典感兴趣的其他人来说也是如此。
答案 0 :(得分:0)
Java代码怎么样?它具有独立于平台的优点。
例如,看看JNetPcap。它是libpcap的开源Java包装器。
它具有各种纯Java包解码器,适用于各种协议。包org.jnetpcap.protocol
包含每个支持的协议的标头定义(例如org.jnetpcap.protocol.network.Ipv4
)。您可以直接使用这些,也可以扩展它们。
答案 1 :(得分:0)
因为我无法找到网络协议的字典,所以我开始了。
请参阅: https://github.com/qwc/network-protocol-dictionary
在撰写答案时,字典几乎和我的问题一样古老,而且由于时间不够,存储库仍处于非常粗糙的状态。但它会随着时间的推移而增长。 :)