grpc请求和响应前面多出的5个字节是什么

What is the extra 5 bytes in front of the grpc request and response

我正在使用 tensorflow-serving 作为深度学习模型服务器,它是一个 grpc 服务。并且为了跟踪服务器的请求和响应,在服务器和客户端中间有一个代理。代理将记录整个 http 级别的请求和响应。

(请求,响应)元组需要某种方式让人类可读。所以我需要将 grpc 请求和响应翻译成 json 格式。因为我有 *.proto 个文件,所以看起来并不难。但是经过一些测试,我发现grpc请求和响应主体在整个主体前面显示了5个(不同的)额外字节数据。

// bytes in the grpc response:
\x00\x00\x00\x00c\nA\n\x07Softmax\x126\x08\x01\x12\x08\x12\x02\x08\x01\x12\x02\x08\n*(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80?\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x1e\n\x07default\x12\x02\x08\x01\x1a\x0fserving_default

// bytes in the raw .pb format:
\nA\n\x07Softmax\x126\x08\x01\x12\x08\x12\x02\x08\x01\x12\x02\x08\n*(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80?\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x1e\n\x07default\x12\x02\x08\x01\x1a\x0fserving_default

你可以看到那里多了五个字节 \x00\x00\x00\x00c。所以……这是什么意思?所有的 grpc 请求和响应都有这个额外的吗?或者是否有更好的方法来解析 grpc 内容并翻译成一些人类可读的结构?

gRPC 有一个 5 字节的头部。在 https://github.com/grpc/grpc/blob/master/doc/PROTOCOL-HTTP2.md.

中搜索长度前缀消息