• 使用tcpdump+Wireshark抓包分析kafka通信协议


    tcpdump 是Linux平台上网络抓包、分析神器,wireshark可用在Windows上以可视化方式直接分析查看tcpdump抓取的数据文件。且wireshark内置支持很多常见应用协议解析,其中就包括kafka通信协议(Wireshark 2.4.0到2.6.0)。因此我们可以通过tcpdump抓取kafka数据包保存到文件,通过wireshark分析学习kafka通信协议交互。
    Wireshark支持的kafka协议字段可参考此链接: https://www.wireshark.org/docs/dfref/k/kafka.html
    Wireshark内置支持的协议类型非常多,可以参考: https://www.wireshark.org/docs/dfref/
    下面以librkafka中的performance Demo程序为例,以高级消费者API连接kafka消费消息,简单分析一下抓包和解析过程。
    首先需要注意,必须将kafka收、发两端的包都抓取到,才能正确解析。因此我们在客户端,根据kafka所使用9092端口抓包: (为便于分析,kafka中只有一条消息)

    tcpdump -i any -nn -vv tcp port 9092 -s 0 -w rdkafka_performance.cap

    然后将抓包文件传到Windows机器,用wireshark打开:

    1、wireshark可能未能自动识别出kafka协议(例如本例中一开始协议被识别为SMPP)。首先检查一下Wireshark是否支持kafka协议解析:在过滤条件那里输入"kafka",如果自动弹出下拉列表,对应各个kafka字段,说明是支持kafka协议解析的。

    2、接下来点选中一条数据消息(注意不要选中TCP三次握手的消息),右键,点击“解码为”:

     3、在弹出窗口的“当前”下拉列表中选择“kafka”,然后点击“OK”。


    4、可以看到除了tcp控制报文外,其他报文都被解析成kafka协议(如解析不出来,可尝试退出wireshark重新打开)。

    选中某一条kafka协议,可以看到前面会用箭头标注与之相关的请求报文或响应报文。可能一个请求报文会对应多个响应报文。

     

    5、 接下来就可以具体查看某个请求或响应报文的详细字段了。例如

    1)下图是请求MetaData消息

     2) 下图展示了一个kafka OffsetFetch Response 消息。可以看到partition 0、partition 1的offset都是 -1(KAFKA_OFFSET_END)

     3) kafka Fetch Request,可以看到向Partition 0请求消息,起始offset是0,Max Bytes是1MB。

     4) Kafka Fetch Response,消息内容为“The first record”。Partition是0。

     5)这里只是简单分析了几个协议,完整的协议介绍可以参考:

    A Guide To The Kafka Protocol :

    https://cwiki.apache.org/confluence/display/KAFKA/A+Guide+To+The+Kafka+Protocol

    kafka协议指南 :

    http://colobu.com/2017/01/26/A-Guide-To-The-Kafka-Protocol/
    ————————————————
    版权声明:本文为CSDN博主「icycode」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/icycode/article/details/80034774

    欢迎关注微信公众号:大数据从业者
  • 相关阅读:
    模式匹配算法Index
    模式匹配算法Index
    模式匹配算法Index
    css中“~”(波浪号)、“,”(逗号)、 “ + ”(加号)和 “ > ”(大于号)是什么意思?
    ACM向:关于优先队列priority_queue自定义比较函数用法整理
    ACM向:关于优先队列priority_queue自定义比较函数用法整理
    Bootstrap 插件轮播
    Bootstrap 插件轮播
    ASP.NET 控件中AutoPostBack属性
    ASP.NET 控件中AutoPostBack属性
  • 原文地址:https://www.cnblogs.com/felixzh/p/15525024.html
Copyright © 2020-2023  润新知