- ff ff ff 00 ...
- 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 获取预处理语句的履行结不雅这里距一个常见的的例子,比如切换数据库:
- use godpan
响应的报文格局则为:
- 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表示停止) 挑衅随机数(第二部分) 用于后续账户暗码验证推荐阅读
CTO练习营 | 12月3-5日,深圳,是时刻成为优良的技巧治理者了alter user user() identified by 'admin'; 这几天因为做项目须要,要应用MySQL数据库,应用的是MySQL Community Server 5.7.>>>详细阅读
本文标题:关于MySQL的网络协议分析
地址:http://www.17bianji.com/lsqh/39379.html
1/2 1