繁体   English   中英

如何验证 gRPC 中使用了 protobuf 编码?

[英]How to verify protobuf encoding is used in gRPC?

我正在使用 gRPC 来传输遥测数据。 测试团队想检查 gRPC 是否使用了 protobuf 编码? 谁能帮我验证一下?

有没有办法使用 Wireshark 捕获发送数据包并验证是否使用了 protobuf 编码?

尝试在线搜索但没有得到任何有用的结果。

有几种可能的方法可以继续。

无聊 - 查看文档

首先是查阅文档。 看一眼这里是很好的确认。

虽然了解这里有多层网络堆栈很重要 - gRPC 使用 Protobuf 对使用 http/2 在网络上传输的应用程序消息进行编码,而这些消息又可以配置为使用 TLS 加密,所有这些最终都会被发送通过 tcp 会话。

所以,是的,gRPC 确实使用了 Protobuf,但这还没有结束(还有 http/2,可能还有 TLS)。 测试团队可能需要完全理解所有这些。

查看源代码

源代码似乎都是开源的,可以仔细检查一下。

更有趣的方式

第三,无论文档是否足以回答您的问题,我都建议您这样做,这是使用 Wireshark 的更有趣的方式!

Wireshark 可以轻松扩展。 基本上,WireShark 可以取消 gRPC 一直到原始消息本身(除非您已打开 gRPC 中的任何安全功能,在这种情况下,Wireshark 会因不知道加密密钥而受阻)。 Wireshark 可以做到这一点,因为它看起来像 gRPC 使用 http/2,这是一个已定义的协议,但不知道如何解码使用 http/2 传输的消息。

您可以做的是使用您的 .proto 文件来帮助为 Wireshark 生成解析器插件,以便可以在 Wireshark 中解码各个消息。 这里这里

好的,所以这需要一些工作来实现,但它是值得的,尤其是在“测试”很重要的情况下。 这意味着 Wireshark,尤其是 PCAP 文件,可以是遥测流的权威记录,独立于遥测链路两端的软件。 另外,它是一个带有正确时间戳的记录,这可能也很重要。

如果出现任何问题,您还拥有一个非常强大的诊断工具。 例如,如果遥测数据看起来不正确,问题出在哪里? 拥有可用于检查 gPRC 数据一直到消息内容的 Wireshark 插件是一个有用的工具。

Wireshark PCAP 文件和剖析也是查看同时发生的任何其他事情的好方法。

我以前做过这个,尽管我使用的是 ASN.1 并为 Wireshark 创建了一个系统特定的 ASN.1 解析器。 Wireshark 的这种用法非常酷。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM