0
点赞
收藏
分享

微信扫一扫

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


1.说明

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

2.抓包

本文为了测试方便,使用了本地启动GRPC客户端和服务端的方式,

可以参考文章[[gRPC创建Java-RPC服务]]。

打开Wireshark工具,对本地的loopback网卡进行抓包:

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


如果觉得抓包的无关内容过多,

可以设置捕获过滤的tcp端口为50051:

tcp.port == 50051

首先启动服务端,然后调用客户端,

即可抓包到如下内容:

Wireshark抓包GRPC协议查看Protobuf编码内容_网络_02

3.查看

gRPC协议栈分层模型如下:

分层

说明

消息内容层

业务模块的通信双方需要了解彼此的数据模型,才能正确处理数据

Protocol Buffers编码层

gRPC通过Protocol Buffers编码格式承载数据

gRPC层

远程过程调用,定义了远程过程调用的协议交互格式

HTTP层

gRPC承载在HTTP/2协议上

TCP层

TCP连接提供面向连接的、可靠的数据链路

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

3.1.关联HTTP2协议

Wireshark对抓包的内容默认解析为HTTP协议,

需要将协议转换为HTTP2协议,

方法为在抓包数据上面右键,选择Decode As…

Wireshark抓包GRPC协议查看Protobuf编码内容_网络_03


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

Wireshark抓包GRPC协议查看Protobuf编码内容_网络_04

3.2.查看GRPC协议

正常情况下,转为HTTP2协议后,

可以看到GRPC协议,以及GPRCHTTP2协议了:

Wireshark抓包GRPC协议查看Protobuf编码内容_测试工具_05

3.3.查看Protobuf编码的内容

此处需要在Protobuf协议中配置hello_stream.proto文件,

Wireshark才能解析出具体的DATA字段中的二进制内容,

选中Protobuf的前面四条配置:

Wireshark抓包GRPC协议查看Protobuf编码内容_测试工具_06


然后点击Portobuf search path后面的Edit…,

选择你的proto文件所在的目录:

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


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

Wireshark抓包GRPC协议查看Protobuf编码内容_网络_08


举报

相关推荐

0 条评论