机器可读格式的网络协议结构定义(XML、JSON、其他?)?

4
我正在寻找以结构化的机器可读形式(如xml,json或其他我目前不知道的描述语言)定义网络协议结构。 我说的是标准东西:Ethernet,IP,TCP,UDP,ICMP等以及可以通过网络(有线和无线)运行的所有其他内容。例如,可以使用wireshark嗅探的所有内容。
我需要的是所有这些协议定义的机器可读形式,我不关心这些定义穿什么衣服,我只需要它们。
在“互联网”上搜索这样的“通用协议结构定义”就像在大海捞针一样,并且会显示出除了我要找的东西之外的所有内容。
我甚至粗略地检查了wireshark的可用代码,希望找到可用的东西。(这不是情况,或者我没有深入研究...)
不存在吗?我必须为此发明一个新模式吗?
还是它只是在我眼前隐藏了数小时的搜索?
提前感谢stackoverflow的专家们。 :)

我不知道谁拥有它们。据我所知,RFC(这些并不是真正的机器可处理文件),是这些标准的规范“正确”定义。不过,你可以了解一下ASN.1,它是一种通用的方式,可以以机器可处理的形式表示这些内容。也许有人已经以这种方式对它们进行了模拟。http://en.wikipedia.org/wiki/Abstract_Syntax_Notation_One - FrobberOfBits
RFC解析是在与朋友讨论我的项目时冒出的一个想法。但由于可能不一致的描述语法,这将容易出错。我粗略地研究了ASN.1,但据我所知,它总是一些标识符-长度-值-EOV组合。你不能用这些组合来描述例如TCP,除非有一种选择省略值部分来进行描述。 - qwc
RFC解析对我来说听起来像是一场噩梦,最好由自然语言处理人员与技术专家结合起来进行,以确保结果的正确性。你在这个问题上没有得到任何回应(这是一个好问题)。我猜这意味着你所寻找的东西不存在。我们观察到这些规范被许多供应商以许多不同的方式实现。至少其中一些供应商必须拥有你所寻找的东西,即某种被转化为代码的模型规范。 - FrobberOfBits
有趣的是,对于一些主要的实现(比如Linux的TCP实现),除了实现代码和RFP之外,没有模型或正式描述。http://www.ece.virginia.edu/cheetah/documents/papers/TCPlinux.pdf -- 不过,你所问的是模型驱动工程的典型激励用例。 - FrobberOfBits
RFC解析曾是一个想法,但我永远不会这样做。检查正确性太费力了。顺便说一下,那个pdf很有趣,但最终我并不关心TCP堆栈的实现,我只关心数据包结构以及之后的协议间依赖和可行性。我已经开始着手创建这样的词典,目前我正在考虑标记语言(xml、json、yaml等)。目前我倾向于使用yaml,因为大多数这些结构定义将由手工编写而不是生成或导入。(顺便说一句,感谢FrobberOfBits的讨论! :) ) - qwc
显示剩余2条评论
2个回答

1
因为我找不到一个网络协议字典,所以我开始创建一个。

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

在回答时,该字典与我的问题几乎同龄,由于时间不够充裕,存储库仍处于非常粗糙的状态。但它将随着时间的推移而成长。 :)


0

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

例如,看看JNetPcap。这是一个开源的Java封装器,用于libpcap。

它拥有各种纯Java数据包解码器,适用于广泛的协议。包org.jnetpcap.protocol包含每个支持的协议的头定义(例如org.jnetpcap.protocol.network.Ipv4)。您可以直接使用它们,或进行扩展。


嘿,那是我在研究生论文中已经使用了五年前的库。但当然这不是我需要的,也不是我所要求的。我正在使用C++/Qt进行工作,但对于我提出的问题,这更或多或少是不重要的。 - qwc

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接