为什么 gRPC 使用长度前缀消息?

Why does gRPC uses Length Prefixed Messages?

我想了解 gRPC 如何使用 HTTP2 发送流消息? link https://github.com/grpc/grpc/blob/master/doc/PROTOCOL-HTTP2.md 表示,

"The repeated sequence of Length-Prefixed-Message items is delivered in DATA frames"

我通过阅读此声明的理解是,每个 (protobuf) 消息都由 gRPC 封装在 HTTP2 数据帧中并发送过来。如果是这样,那gRPC为什么要给消息加上Length Prefix,难道就不能直接读取完整的Data Frame Body就认为是一条完整的消息吗?

我在这里错过了什么?

缺少的部分是不保证一个DATA帧只包含一个gRPC消息。 gRPC 消息是一个更高层的流,作为 HTTP/2 的有效负载。它可能以您在官方 gRPC 库中描述的方式实现,但就协议而言,接收具有多个 gRPC PDU 的数据帧是完全有效的。