作家
登录

关于MySQL的网络协议分析

作者: 来源: 2017-12-01 15:40:19 阅读 我要评论

 
  1. ff ff ff 00 ... 
  2. 00 00 00 01  

第一个数据包满载,第二个数据包是一个空数据包(一种临界情况)。

Client to Server

Client向Server端发送的格局相对来说就R单一点了

Type Name Description int<1> 履行敕令 履行的操作,比如切换数据库,萌芽表等操作 string 参数 敕令响应的参数

敕令列表(摘抄自胡桃夹子的博客):

类型值 敕令 功能 0x00 COM_SLEEP (内部线程状况) 0x01 COM_QUIT 封闭连接 0x02 COM_INIT_DB 切换数据库 0x03 COM_QUERY SQL萌芽请求 0x04 COM_FIELD_LIST 获取数据表字段信息 0x05 COM_CREATE_DB 创建数据库 0x06 COM_DROP_DB 删除数据库 0x07 COM_REFRESH 清除缓存 0x08 COM_SHUTDOWN 停止办事器 0x09 COM_STATISTICS 获取办事器统计信息 0x0A COM_PROCESS_INFO 获取当前连接的列表 0x0B COM_CONNECT (内部线程状况) 0x0C COM_PROCESS_KILL 中断某个连接 0x0D COM_DEBUG 保存办事器调试信息 0x0E COM_PING 测试连通性 0x0F COM_TIME (内部线程状况) 0x10 COM_DELAYED_INSERT (内部线程状况) 0x11 COM_CHANGE_USER 从新上岸(赓续连接) 0x12 COM_BINLOG_DUMP 获取二进制日记信息 0x13 COM_TABLE_DUMP 获取数据表构造信息 0x14 COM_CONNECT_OUT (内部线程状况) 0x15 COM_REGISTER_SLAVE 大年夜办事器向主办事器进行注册 0x16 COM_STMT_PREPARE 预处理SQL语句 0x17 COM_STMT_EXECUTE 履行预处理语句 0x18 COM_STMT_SEND_LONG_DATA 发送BLOB类型的数据 0x19 COM_STMT_CLOSE 烧毁预处理语句 0x1A COM_STMT_RESET 清除预处理语句参数缓存 0x1B COM_SET_OPTION 设置语句选项 0x1C COM_STMT_FETCH 获取预处理语句的履行结不雅

这里距一个常见的的例子,比如切换数据库:

  1. use godpan  

响应的报文格局则为:

  1. 0x02 0x67 0x6f 0x64 0x70 0x61 0x6e  

个中0x02代表切换数据库敕令,后面的字节则为godpan的16进制表达。

数据莠平易近型

有了以上的基本,我们根本知道的与MySQL通信之间的方法以及数据格局,那么竽暌闺其通信间到底有哪几种数据包呢?接下去的内容是建立在MySQL4.1版本今后,之前版本的数据莠平易近型这里不再阐述。

这里重要分为两个阶段,第一个阶段是数据库账户认证阶段,第二个阶段则是履行具体敕令阶段,我们先来看看前者。

这个阶段就是我们平常所说的登录,重要步调如下:

  1.Client与Server进行连接

  2.Server向Client发送Handshake packet

  3.Client与Server发送Auth packet

  4.Server向Client发送OK packet或者ERR packet

这里我们来看一看膳绫擎的Handshake packet和Auth packet,OK packet和ERR packet放在另一个阶段写。

Handshake packet是由Server向Client发送的初始化包,因为所有大年夜Server向Client端发送的包都是一样的格局,所以前面的四个字节是包头,前三位代表Handshake packet具体内容的数据,别的包序列号为0,很显然这个包内容小于16MB,下面是Handshake packet具体内容的格局:

相对包内容的地位 长度(字节) 名称 描述 0 1 协定版本 协定版本的版本号,平日为10(0x0A) 1 len = strlen (server_version) + 1 数据库版本 应用前面的NullTerminatedString格局编码,长度为数据库版本字符串的长度加上标示停止的的一个字节 len + 1 4 线程ID 此次连接MySQL Server启动的线程ID len + 5 8 + 1(0x00表示停止) 挑衅随机数(第一部分) 用于后续账户暗码验证 len + 14 2 协定协商 用于与客户端协商筒?方法 len + 16 1 编码格局 标识数据库今朝的编码方法 len + 17 2 办事器状况 用于表示办事器状况,比如是否是事务模式或者主动提交模式 len + 19 13 保存字节 将来可能会用到,预留字节 len + 32 12 + 1(0x00表示停止) 挑衅随机数(第二部分) 用于后续账户暗码验证

  推荐阅读

  CentOS 7中安装Mysql 5.7的注意事项

CTO练习营 | 12月3-5日,深圳,是时刻成为优良的技巧治理者了alter user user() identified by 'admin'; 这几天因为做项目须要,要应用MySQL数据库,应用的是MySQL Community Server 5.7.>>>详细阅读


本文标题:关于MySQL的网络协议分析

地址:http://www.17bianji.com/lsqh/39379.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)