文章目录
协议基本数据类型
固定宽度类型
变长数据类型
数组类型
请求响应结构
用wireshark抓下包看看
kafka用的2.11版本, java客户端用的是2.7的版本
我们追踪第一个tcp流数据看下
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GBpwghII-1647222224627)(F:\desktop\学习笔记\personal_note\middleware\mq\kafka\kp-1.png)]
我们可以看到三次握手后, 客户端会发送一个request请求
我们看下请求内容
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VmKP2OTY-1647222224629)(F:\desktop\学习笔记\personal_note\middleware\mq\kafka\kp-2.png)]
请求格式
RequestMessage => ApiKey ApiVersion CorrelationId ClientId RequestMessage
ApiKey => int16
ApiVersion => int16
CorrelationId => int32
ClientId => string
RequestMessage => MetadataRequest | ProduceRequest | FetchRequest | OffsetRequest | OffsetCommitRequest | OffsetFetchRequest
字段名 | 说明 |
---|---|
ApiKey | 一个数字id, 表示是哪种请求(meta请求, 生产请求, 拉取请求等) |
ApiVersion | 表示这个api的版本号, 会关系到响应格式 |
CorrelationId | 用户提供的整数数据, 服务器不会修改, 直接通过响应传回。 |
ClientId | 这是用户提供的客户端id。 |
响应格式
Response => CorrelationId ResponseMessage
CorrelationId => int32
ResponseMessage => MetadataResponse | ProduceResponse | FetchResponse | OffsetResponse | OffsetCommitResponse | OffsetFetchResponse
字段名 | 说明 |
---|---|
CorrelationId | 服务端回传客户端请求发过来的CorrelationId内容 |
再用wireshark看下请求响应的包
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CGPPhjTX-1647222224629)(F:\desktop\学习笔记\personal_note\middleware\mq\kafka\kp-2.png)]
这个是请求协议数据, 从蓝底字开始分析字节数据内容
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-48mYQOaj-1647222224630)(F:\desktop\学习笔记\personal_note\middleware\mq\kafka\kp-3.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iF0oNqCM-1647222224631)(F:\desktop\学习笔记\personal_note\middleware\mq\kafka\kp-4.png)]
这个是响应的协议数据, 第一个图是解析后的内容 , 包含了服务端支持的共43个API协议
接下来分析第二个图中的字节数据含义, 从蓝底字节开始
现在通过抓包分析, 大家应该对kafka协议的请求响应消息格式有了更清楚直观的认识, 接下来我们再学习kafka协议的其他内容。