我正在尝试使用通信协议(具体来说是 S1AP),并且我正在尝试定义要测试的消息。
LTE 36.413 规范详细介绍了该协议,并在 pdf 的底部给出了 ASN.1 文件定义。我已经看到在 WireShark 的解析器中使用了 ASN 文件,我猜我也许可以使用它来生成符合规范的消息。
我想知道您如何使用 ASN.1 文件。我一直在研究并找到有关 ASN.1 编译器的信息和其他相关信息,但是所有信息都让我非常困惑,因为没有人清楚地解释如何使用它。有人可以帮我理解如何使用它吗?
我正在尝试使用通信协议(具体来说是 S1AP),并且我正在尝试定义要测试的消息。
LTE 36.413 规范详细介绍了该协议,并在 pdf 的底部给出了 ASN.1 文件定义。我已经看到在 WireShark 的解析器中使用了 ASN 文件,我猜我也许可以使用它来生成符合规范的消息。
我想知道您如何使用 ASN.1 文件。我一直在研究并找到有关 ASN.1 编译器的信息和其他相关信息,但是所有信息都让我非常困惑,因为没有人清楚地解释如何使用它。有人可以帮我理解如何使用它吗?
经过大量搜索,我发现了 ASN.1 文件是什么。
这些 ASN.1 文件本质上包含协议描述和数据包描述。使用这些 ASN.1 文件,您可以生成 .c 和 .h 文件,以便在您希望将它们用于的某些应用程序中使用。这真的很方便,因为您不必创建自己的消息数据库。您只需要编译 ASN.1 文件,您的 C 文件将被编译供您使用。
现在,您一定想知道,我该如何编译它?好吧,您通常需要某种 ASN.1 编译器。您必须支付一些费用,但我能够找到一个适用于 Linux 和 Windows 的开源软件。它也有可能在 MAC 上工作,因为它是基于 UNIX 的,只要你有必要的依赖项。无论如何,这里是该网页的链接。我不会解释如何使用它,因为我认为这个网页在记录使用方面做得很好。希望这对某人有帮助,就像对我有帮助一样。
在这里查看编译器http://lionet.info/asn1c/blog/
如果该链接不适合您,您可能需要尝试商业链接,例如 OSS Nocklava ASN1.C 编译器,或者如果担心资金问题,那么尽管需要花费大量时间,但创建自己的数据库可能是值得的。
一切顺利。
ASN 是一种数据描述语言。就像你说的,找到的 ASN 文件定义指定了你的消息数据的表示,以符合 S1AP 协议下的编码和解码。
需要编译 ASN 文件。编译的输出将为您提供一些代码规范和正文(在大多数情况下为 .h 和 .c 代码文件),以自动将任何消息数据序列化/反序列化到 S1AP 数据模型,而不管编码自和发送到的平台如何。
要快速测试和学习如何使用您的 ASN.1 架构,您可以使用此服务:http ://asn1-playground.oss.com/
此外,有关 ASN.1 强大的原因的更深入和简洁的解释,请阅读以下内容:https ://www.thanassis.space/asn1.html 。作者还分享了一个在欧洲航天局监督下开发的开源 ASN.1 编译器。
作为旁注,可能值得研究 Protocol Buffers 的使用,因为它代表了一种非常相似的技术,可以说具有更现代的功能,例如向后/向前数据描述兼容性和反射:https ://developers.google.com/协议缓冲区/文档/cpptutorial