【发布时间】:2020-08-28 03:09:08
【问题描述】:
当我发送Protobuf 消息可选 使用 gzip 压缩时,我可以相信如果消息以 gzip 幻数 (0x1f8b) 开头,它是压缩版?
换句话说,Protobuf 消息是否有可能以0x1f8b 开头,所以我的检测方法会失败,因此我必须在前面加上一个标记标志来明确指示压缩?
【问题讨论】:
标签: protocol-buffers gzip
当我发送Protobuf 消息可选 使用 gzip 压缩时,我可以相信如果消息以 gzip 幻数 (0x1f8b) 开头,它是压缩版?
换句话说,Protobuf 消息是否有可能以0x1f8b 开头,所以我的检测方法会失败,因此我必须在前面加上一个标记标志来明确指示压缩?
【问题讨论】:
标签: protocol-buffers gzip
Hex 1f 是二进制 11111,在 protobuf varint/field-header 术语中,它是一个单字节整数。字段标题的最低 3 位是线路类型,因此这将是线路类型 7。但是,没有线路类型 7。所以:十六进制 1f 不是有效的字段头,因此不能是有效 protobuf 消息的第一个字节。
所以:如果你看到 gzip 幻数,那绝对不是看起来相似的 protobuf 消息。
【讨论】: