抓取MySQL数据包,初步认识MySQL 通信协议

版权声明:本文为博主原创文章,可以随便转。。。。估计也没什么人需要转 https://blog.csdn.net/github_38838414/article/details/82255117

抓取MySQL数据包,初步认识MySQL 通信协议

版本:5.1

这篇文章算是填上之前的坑

通信协议初步认识(结合数据包)

1.整体数据包分布:

这里写图片描述

结合:
这里写图片描述

很明显最上方的三个tcp包就是典型的三次握手了,接下来三个mysql数据包,就是握手认证阶段的mysql数据包了

一.握手认证阶段

握手认证阶段为客户端与服务器建立连接后进行,交互过程如下:
服务器 -> 客户端:握手初始化消息
客户端 -> 服务器:登陆认证消息
服务器 -> 客户端:认证结果消息

1.然后打开第一个mysql包

这里写图片描述
结合:登陆认证交互报文格式(服务器 -> 客户端)
这里写图片描述

  • 服务协议版本号:该值由 PROTOCOL_VERSION 宏定义决定(参考MySQL源代码/include/mysql_version.h头文件定义)
  • 服务版本信息:该值为字符串,由 MYSQL_SERVER_VERSION 宏定义决定(参考MySQL源代码/include/mysql_version.h头文件定义)
  • 服务器线程ID:服务器为当前连接所创建的线程ID。
  • 挑战随机数:MySQL数据库用户认证采用的是挑战/应答的方式,服务器生成该挑战数并发送给客户端,由客户端进行处理并返回相应结果,然后服务器检查是否与预期的结果相同,从而完成用户认证的过程 。
  • 服务器权能标志:用于与客户端协商通讯方式,各标志位含义如下(参考MySQL源代码/include/mysql_com.h中的宏定义)

可以分析出:协议版本号为10,数据库版本为5.1.6,服务器线程为320129等信息

2.然后打开第二个mysql数据包:

这里写图片描述

结合 登陆认证报文(客户端 -> 服务器)

这里写图片描述
- 客户端权能标志:用于与客户端协商通讯方式,标志位含义与握手初始化报文中的相同。客户端收到服务器发来的初始化报文后,会对服务器发送的权能标志进行修改,保留自身所支持的功能,然后将权能标返回给服务器,从而保证服务器与客户端通讯的兼容性。
- 最大消息长度:客户端发送请求报文时所支持的最大消息长度值。
- 字符编码:标识通讯过程中使用的字符编码,与服务器在认证初始化报文中发送的相同。
- 用户名:客户端登陆用户的用户名称。
- 挑战认证数据:客户端用户密码使用服务器发送的挑战随机数进行加密后,生成挑战认证数据,然后返回给服务器,用于对用户身份的认证。
- 数据库名称:当客户端的权能标志位 CLIENT_CONNECT_WITH_DB 被置位时,该字段必须出现。

可以分析出:此次登录的用户名为root,字符编码为utf-8等信息

3.打开第三个mysql数据包

这里写图片描述

结合:
这里写图片描述

  • 受影响行数:当执行INSERT/UPDATE/DELETE语句时所影响的数据行数。
  • 索引ID值:该值为AUTO_INCREMENT索引字段生成,如果没有索引字段,则为0x00。注意:当INSERT插入语句为多行数据时,该索引ID值为第一个插入的数据行索引值,而非最后一个。
  • 服务器状态:客户端可以通过该值检查命令是否在事务处理中。
  • 告警计数:告警发生的次数。
  • 服务器消息:服务器返回给客户端的消息,一般为简单的描述性字符串,可选字段。

1.2 命令执行阶段

客户端认证成功后,会进入命令执行阶段,交互过程如下:
客户端 -> 服务器:执行命令消息
服务器 -> 客户端:命令执行结果

待续。。。。。。。。。。。。。。。。。。懒

反思:之前尝试wireshark抓取过MySQL的数据包,氮素没有成功,那为啥第一次抓不到包呢,后来经查资料发现(有两种可能,暂时还没确定是那种可能,应该第二种可能性更大一些):

  1. 当自己电脑既是客户端又是服务器时,互相访问时流量并没有经过网卡,windows系统又没有提供本地回环网络的接口,wireshark在windows系统上默认使用的是WinPcap来抓包的,用它监控网络的话只能看到经过网卡的流量,看不到访问localhost的流量,所以才会出现第一次连接始终没有数据包的状况。解决这个问题的两种办法是:要么服务器和客户端不要在同一台机器上,要 么用Npcap来替换掉WinPcap,Npcap提供环回接口
  2. 本地电脑既是客户端又是服务器时,MySQL并没有通过tcp协议来传递信息,自然就抓不到数据包了。
    这里写图片描述

参考:
http://www.cnblogs.com/ermao0423/p/9442836.html

https://blog.csdn.net/a1282379904/article/details/77894177

http://ju.outofmemory.cn/entry/75544

猜你喜欢

转载自blog.csdn.net/github_38838414/article/details/82255117