MySQL协议分析

此阶段的协议分析是在未压缩未加密情况下的协议分析

思路:

结合Oracle官网和自己用wireshark抓的网络数据包进行协议分析

官网说明

mysql包共分为4段,格式如下:

第一段:payload(通常是执行的SQL语句)的长度占3字节;

第二段:序列id占1字节;

第三段:payload类型占1字节;

第四段:payload内容占n字节,n为第一段描述的长度。

wireshark抓包分析验证

0000   1a 00 00 00 03 73 65 6c 65 63 74 20 2a 20 66 72  .....select * fr
0010 6f 6d 20 73 6d 61 6c 6c 74 61 62 6c 65 3b om smalltable;
MySQL Protocol
Packet Length: 26
Packet Number: 0
Request Command Query
Command: Query (3)
Statement: select * from smalltable;

我们看到1a 00 00 00 03就是mysql的协议头

1a 00 00 转换为10进制为26,与wireshark解析的Packet Length:26符合(也说明了wireshark原理不过就是把协议对应解析);

00 是sequence id,也就是序列id,我们没有创建序列,也就没有此id;

03 是payload的类型,对于类型说明,官网说明如下:

00 COM_SLEEP

01 COM_QUIT

02 COM_INIT_DB

03 COM_QUERY

04 COM_FIELD_LIST

05 COM_CREATE_DB

06 COM_DROP_DB

07 COM_REFRESH

08 COM_SHUTDOWN

09 COM_STATISTICS

0a COM_PROCESS_INFO

0b COM_CONNECT

0c COM_PROCESS_KILL

0d COM_DEBUG

0e COM_PING

0f COM_TIME

10 COM_DELAYED_INSERT

11 COM_CHANGE_USER

12 COM_BINLOG_DUMP

13 COM_TABLE_DUMP

14 COM_CONNECT_OUT

15 COM_REGISTER_SLAVE

16 COM_STMT_PREPARE

17 COM_STMT_EXECUTE

18 COM_STMT_SEND_LONG_DATA

19 COM_STMT_CLOSE

1a COM_STMT_RESET

1b COM_SET_OPTION

1c COM_STMT_FETCH

1d COM_DAEMON

1e COM_BINLOG_DUMP_GTID

1f COM_RESET_CONNECTION

第四段自然就是payload,也就是我们的SQL语句。

未压缩未加密的mysql协议分析完毕!

MySQL协议分析(1)的更多相关文章

  1. MySQL协议分析

    MySQL协议分析 标签: mysql 2015-02-27 10:22 1807人阅读 评论(1) 收藏 举报  分类: 数据库(19)    目录(?)[+]   1 交互过程 MySQL客户端与 ...

  2. MySQL协议分析2

    MySQL协议分析 议程 协议头 协议类型 网络协议相关函数 NET缓冲 VIO缓冲 MySQL API 协议头 ● 数据变成在网络里传输的数据,需要额外的在头部添加4 个字节的包头. . packe ...

  3. MySQL协议分析(2)

    MySQL协议分析(2) 此阶段是在压缩传输无加密条件下进行的协议分析 思路 结合Oracle官网的说明和自己用wireshark加python进行数据包分析 步骤 客户端与服务器端是否压缩的协商阶段 ...

  4. mixer: mysql协议分析

    综述 要实现一个mysql proxy,首先需要做的就是理解并实现mysql通讯协议.这样才能通过proxy架起client到server之间的桥梁. mixer的mysql协议实现主要参考mysql ...

  5. mysql 协议分析

    MYSQL Binlog协议分析 此处不讨论建立连接,验证和handshake的交互协议 Binlog协议 一个MYSQL 通信包由包头包体组成 包体根据具体的交互协议有自身的组成结构, 在binlo ...

  6. mysql协议分析2---认证包

    主人看到navicat和mysql在那嘻嘻哈哈,眉来眼去的,好不快乐,忽然也想自己写个程序,直接去访问Mysql,虽然现在已经有很多现成的中间件可以直接拿来用了,程序只要负责写sql语句就行了,但是主 ...

  7. mysql协议分析1---报文的格式和基本类型

    navicat 和 mysql 是一对好基友,每天都有非常频繁的交流,主人在navicat上写下每条sql语句,轻轻的点了下执行按钮,navicat就飞快的把主人的指令传送到mysql那里,mysql ...

  8. mysql协议简析

    前言 如果要在命令行中连接mysql,最常用的便是 mysql -u root -p 这样指定用户名和密码 当然还可以使用远程连接 mysql -h 127.0.0.1 -u root -p 还有一种 ...

  9. Memcache的使用和协议分析详解

    Memcache的使用和协议分析详解 作者:heiyeluren博客:http://blog.csdn.NET/heiyeshuwu时间:2006-11-12关键字:PHP Memcache Linu ...

随机推荐

  1. Entity Framework(三):使用特性(数据注解)创建表结构

    一.理解Code First及其约定和配置 传统设计应用的方式都是由下而上的,即我们习惯优先考虑数据库,然后使用这个以数据为中心的方法在数据之上构建应用程序.这种方法非常适合于数据密集的应用或者数据库 ...

  2. 人脸验证算法Joint Bayesian详解及实现(Matlab)

    python http://blog.csdn.net/cyh_24/article/details/49059475 github https://github.com/johnnyconstant ...

  3. 代码生成利器:IDEA 强大的 Live Templates

    Java 开发过程经常需要编写有固定格式的代码,例如说声明一个私有变量, logger 或者 bean 等等.对于这种小范围的代码生成,我们可以利用 IDEA 提供的 Live Templates 功 ...

  4. 编译内核出现"mkimage" command not found - U-Boot images will not be built

    参考链接: http://spyker729.blogspot.com/2010/07/mkimage-command-not-found-u-boot-images.html 制作uImage的工具 ...

  5. 在执行一行代码之前CLR做的68件事[The 68 things the CLR does before executing a single line of your code]

    待翻译,原文地址:http://mattwarren.org/2017/02/07/The-68-things-the-CLR-does-before-executing-a-single-line- ...

  6. hmacSHA1

    import javax.crypto.Mac; import javax.crypto.SecretKey; import javax.crypto.spec.SecretKeySpec; publ ...

  7. wpf中用户控件的属性重用

    我们经常会抽取一些可重用的控件,某个属性是否需要重用,直接决定了这个属性的绑定方式. 1.完全不可重用的控件 有一些与业务强相关的控件,它们的属性完全来自ViewModel,越是相对复杂的控件,越容易 ...

  8. C语言的代码内存布局详解

    一个程序本质上都是由 BSS 段.data段.text段三个组成的.这样的概念在当前的计算机程序设计中是很重要的一个基本概念,而且在嵌入式系统的设计中也非常重要,牵涉到嵌入式系统运行时的内存大小分配, ...

  9. 从头认识java-18.2 主要的线程机制(2)-Executors的使用

    在前面的章节我们都是直接对Thread进行管理,我们这里解释一下还有一个管理Thread的类Executors. 1.样例: package com.ray.ch17; import java.uti ...

  10. webpack——html-webpack-plugin

    一开始考虑到浏览器的缓存问题,所以给打包的文件都带了.[hash],但是,这之后,index.html文件中的引入并没有哈希值,所以,就用到了下面的信插件: html-webpack-plugin可以 ...