【网络协议】mysql协议数据包分析

本文介绍了如何利用tcpdump抓取MySQL应用层协议的数据包,并在Wireshark中进行分析。通过配置Wireshark识别自定义端口上的MySQL协议,详细解析了RequestQuery、Response和ResponseOK等关键数据包类型。同时,探讨了通过RoundTripTime和time_delta统计MySQL请求响应时间的方法,以及在实际数据中验证这些统计方法的准确性。
摘要由CSDN通过智能技术生成

使用tcpdump抓取应用层mysql协议的数据包,然后使用wireshark工具对mysql协议数据包进行分析

一、tcpdump数据包

可以通过端口规则或mysql规则抓取对应的mysql数据包,接下来通过端口规则限定抓取mysql的数据包

1.1 查看mysql的端口

jdbc:mysql://swqa.lluozh.com:3487/lluozh?characterEncoding=UTF-8

即显然当前数据库的端口为3487

1.2 tcpdump数据包

根据端口信息抓取对应的数据包

tcpdump -i  any  port 3487 -w ceph.pcapng

二、mysql协议查看

抓取数据包后使用wireshark进行查看

2.1 打开数据包

使用wireshark打开抓取到的数据包
在这里插入图片描述
发现显示的是TCP请求,并未看到对应的MySQL协议信息,需要针对wireshark进行配置识别MySQL协议信息

2.2 协议查看配置

Wireshark -> Preferences(mac直接command+,) -> Protocols -> MySQL调出配置页面
在这里插入图片描述
MySQL TCP默认的端口是3306,业务中实际的MySQL的端口为3487,故需要将端口修改成3487,保存配置信息

2.3 MySQL协议查看

保存后自动刷新页面,可以自动识别MySQL协议的数据包
在这里插入图片描述

三、mysql协议信息

从抓取的mysql数据包中可以看出,具体传输的数据包有Request Query、Response、Response OK

3.1 Request Query

客户端执行sql语句
在这里插入图片描述

3.2 Response

服务器对客户端执行查询sql语句(Request Query)的回复
在这里插入图片描述

3.3 Response OK

服务器对客户端执行更新sql语句(Request Query)的回复
在这里插入图片描述

四、数据分析统计

由于抓取到的mysql请求数据包量很大,比如上面抓取的数据包约14800个,这样需要统计具体数据包请求的时间分布,用来分析具体的mysql处理的时间

4.1 Round Trip Time

RTT即往返时延,表示从发送端发送数据开始,到发送端收到来自接收端的确认(接收端收到数据后便立即发送确认),总共经历的时延

  • 筛选MySQL请求响应包

由于数据包中有TCP的ACK包,故首先需要筛选MySQL请求响应包,便于接下来的响应时间曲线

  • RTT分析曲线

根据路径Statistics -> TCP Stream Graphs -> Round Trip Time打开RTT分析曲线图
在这里插入图片描述
可以使用Switch Direction切换源和目标的地址

  • 时间曲线验证

抽样验证一下RTT提供的时间是否正确
在这里插入图片描述
真实的数据包的响应时间是4.23ms ( = 19:55:57.530520 - 19:55:57.530097)

与RTT提供的数据严重不符

  • RTT By Sequence Number

勾选RTT By Sequence Number选项再次比对生成数据
在这里插入图片描述
真实的数据包的响应时间是36.358ms ( = 19:55:58.316878 - 19:55:58.280520),与曲线中数据基本吻合

查看响应时间曲线分析可以使用Round Trip Time的方式,但是要注意配置信息的勾选

4.2 time_delta

time_delta统计的是当前帧与上一帧的时间间隔

从语义解释上其实并不是数据包响应时间的统计数据,但在实践过程配置了该项数据,且目前从抽样数据包中并未证实该数据曲线是错误的,故Mark一下

根据路径Statistics -> I/O Graph打开页面

在这里插入图片描述

  • Display Filter

即筛选条件,设置为mysql.response_code,可以搜索mysql协议mysql执行的服务端响应包

  • Y Axis

设置AVG(Y Field),获取平均值

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sysu_lluozh

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值