美文网首页
Wireshark抓包GRPC协议查看Protobuf编码内容

Wireshark抓包GRPC协议查看Protobuf编码内容

作者: 木木与呆呆 | 来源:发表于2024-09-29 14:00 被阅读0次

1.说明

对通过GRPC协议进行通信的流量进行抓包后,
需要先转换为HTTP2协议,
因为默认解析的HTTP协议和TCP协议无法进行后续的查看操作,
然后再通过加载protobuf文件,
对GRPC内的DATA字段进行解码。

2.抓包

本文为了测试方便,使用了本地启动GRPC客户端和服务端的方式,
可以参考文章[[gRPC创建Java-RPC服务]]。
打开Wireshark工具,对本地的loopback网卡进行抓包:



如果觉得抓包的无关内容过多,
可以设置捕获过滤的tcp端口为50051:

tcp.port == 50051

首先启动服务端,然后调用客户端,
即可抓包到如下内容:


3.查看

gRPC协议栈分层模型如下:

分层 说明
消息内容层 业务模块的通信双方需要了解彼此的数据模型,才能正确处理数据
Protocol Buffers编码层 gRPC通过Protocol Buffers编码格式承载数据
gRPC层 远程过程调用,定义了远程过程调用的协议交互格式
HTTP层 gRPC承载在HTTP/2协议上
TCP层 TCP连接提供面向连接的、可靠的数据链路

在查询具体的抓包内容时,可以根据协议栈去看。

3.1.关联HTTP2协议

Wireshark对抓包的内容默认解析为HTTP协议,
需要将协议转换为HTTP2协议,
方法为在抓包数据上面右键,选择Decode As...



将tcp的50051的端口绑定到HTTP2协议:


3.2.查看GRPC协议

正常情况下,转为HTTP2协议后,
可以看到GRPC协议,以及GPRCHTTP2协议了:


3.3.查看Protobuf编码的内容

此处需要在Protobuf协议中配置hello_stream.proto文件,
Wireshark才能解析出具体的DATA字段中的二进制内容,
选中Protobuf的前面四条配置:



然后点击Portobuf search path后面的Edit...,
选择你的proto文件所在的目录:



然后就可以看到请求中的name字段了:

相关文章

网友评论

      本文标题:Wireshark抓包GRPC协议查看Protobuf编码内容

      本文链接:https://www.haomeiwen.com/subject/aaqdrjtx.html