机器可读形式的网络协议结构定义(xml,json,other?)?

时间:2014-12-29 17:11:15

标签: xml json networking schema network-protocols

我正在寻找结构化机器可读形式中的网络协议结构定义,例如xml,json或我目前不知道的其他描述语言。 (例如yaml)

我在这里谈论标准的东西:以太网,IP,TCP,UDP,ICMP等以及其他可以通过网络[有线和无线]运行的东西。 例如,所有可以用wireshark嗅探的东西。

我即将开展的项目需要的是机器可读形式的所有协议定义,我不关心这些定义出现在哪些服装中,我只需要它们。

搜索' interwebs'对于这样的通用协议结构定义"我喜欢在大海捞针中寻找一针,然后抛出一切,但这就是我所寻找的。

我甚至光滑地检查了wireshark的可用代码,希望找到可用的东西。 (事实并非如此,或者我看起来并不够......)

是否不存在,我是否必须为该任务创建新架构?

或者它只是在我的眼前隐藏了几个小时的搜索?

提前感谢stackoverflow的专家。 :)

[编辑:]进一步澄清:

  • 我知道Linux,Windows和OSX都有所有基本协议的标题,但我想省略平台依赖代码。它足以用于标准和最常用的部分(Eth,ARP,IP,TCP,UDP,ICMP等),但是为什么编程和构建更多的依赖关系来支持更少使用的协议,当你可以使用时您内部的一种机器可读格式是否能够定义所有协议? (这可能是我的一个伟大梦想......)

  • 规则并不重要,我需要基本结构和字段定义以及字段数据的可选描述。

    • 目标是能够构建一个包含结构信息的数据包(没有合理性检查!),它将通过仅关于结构的测试,并解析数据包并将其呈现给用户,类似于wiresharks数据包帧输出树。 [虽然以后可以进行合理性检查]
  • 你可以把它称为协议词典......我简直不敢相信没有其他人已经有过这个想法,这就是我提出这个问题的原因!

    • 但是当没有这样的字典时,我会急切地创建一个,即使它不是我的小爱好项目的主要目标 ...... / LI>
  • 程序语言的独立性很重要,对我的项目(C ++ / Qt)来说并不是特别重要,但对于对这样一本词典感兴趣的其他人来说也是如此。

2 个答案:

答案 0 :(得分:0)

Java代码怎么样?它具有独立于平台的优点。

例如,看看JNetPcap。它是libpcap的开源Java包装器。

它具有各种纯Java包解码器,适用于各种协议。包org.jnetpcap.protocol包含每个支持的协议的标头定义(例如org.jnetpcap.protocol.network.Ipv4)。您可以直接使用这些,也可以扩展它们。

答案 1 :(得分:0)

因为我无法找到网络协议的字典,所以我开始了。

请参阅: https://github.com/qwc/network-protocol-dictionary

在撰写答案时,字典几乎和我的问题一样古老,而且由于时间不够,存储库仍处于非常粗糙的状态。但它会随着时间的推移而增长。 :)