美文网首页
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