MySQL协议分析(1)
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)的更多相关文章
- MySQL协议分析
MySQL协议分析 标签: mysql 2015-02-27 10:22 1807人阅读 评论(1) 收藏 举报 分类: 数据库(19) 目录(?)[+] 1 交互过程 MySQL客户端与 ...
- MySQL协议分析2
MySQL协议分析 议程 协议头 协议类型 网络协议相关函数 NET缓冲 VIO缓冲 MySQL API 协议头 ● 数据变成在网络里传输的数据,需要额外的在头部添加4 个字节的包头. . packe ...
- MySQL协议分析(2)
MySQL协议分析(2) 此阶段是在压缩传输无加密条件下进行的协议分析 思路 结合Oracle官网的说明和自己用wireshark加python进行数据包分析 步骤 客户端与服务器端是否压缩的协商阶段 ...
- mixer: mysql协议分析
综述 要实现一个mysql proxy,首先需要做的就是理解并实现mysql通讯协议.这样才能通过proxy架起client到server之间的桥梁. mixer的mysql协议实现主要参考mysql ...
- mysql 协议分析
MYSQL Binlog协议分析 此处不讨论建立连接,验证和handshake的交互协议 Binlog协议 一个MYSQL 通信包由包头包体组成 包体根据具体的交互协议有自身的组成结构, 在binlo ...
- mysql协议分析2---认证包
主人看到navicat和mysql在那嘻嘻哈哈,眉来眼去的,好不快乐,忽然也想自己写个程序,直接去访问Mysql,虽然现在已经有很多现成的中间件可以直接拿来用了,程序只要负责写sql语句就行了,但是主 ...
- mysql协议分析1---报文的格式和基本类型
navicat 和 mysql 是一对好基友,每天都有非常频繁的交流,主人在navicat上写下每条sql语句,轻轻的点了下执行按钮,navicat就飞快的把主人的指令传送到mysql那里,mysql ...
- mysql协议简析
前言 如果要在命令行中连接mysql,最常用的便是 mysql -u root -p 这样指定用户名和密码 当然还可以使用远程连接 mysql -h 127.0.0.1 -u root -p 还有一种 ...
- Memcache的使用和协议分析详解
Memcache的使用和协议分析详解 作者:heiyeluren博客:http://blog.csdn.NET/heiyeshuwu时间:2006-11-12关键字:PHP Memcache Linu ...
随机推荐
- Entity Framework(三):使用特性(数据注解)创建表结构
一.理解Code First及其约定和配置 传统设计应用的方式都是由下而上的,即我们习惯优先考虑数据库,然后使用这个以数据为中心的方法在数据之上构建应用程序.这种方法非常适合于数据密集的应用或者数据库 ...
- C#实例.net_经典例子400个
一共470多例winform 界面特效的源码. 窗体与界面设计... 9 实例001 带历史信息的菜单 10 实例002 菜单动态合并 12 实例003 像开始菜单一样漂亮的菜单.. ...
- VMware ESXi 启动时提示引导错误:不是VMware引导槽。找不到管理程序(bank6 not a vmware boot bank no hypervisor found)
VMware ESXi 启动时提示引导错误: bank6 not a vmware boot bank no hypervisor found 大概中文意思是:不是VMware引导槽.找不到管理程序. ...
- MySQL之explain 的type列 & Extra列
explain 可以分析 select 语句的执行,即 MySQL 的“执行计划. 一.type 列 MySQL 在表里找到所需行的方式.包括(由左至右,由最差到最好): | All | inde ...
- python+selenium之自定义封装一个简单的Log类
python+selenium之自定义封装一个简单的Log类 一. 问题分析: 我们需要封装一个简单的日志类,主要有以下内容: 1. 生成的日志文件格式是 年月日时分秒.log 2. 生成的xxx.l ...
- JNI 各类数据类型处理
JNI和java数据类型转换: 1.基本数据类型下面一张表是描述了 Java 基本数据类型和JNI中基本数据类型的相对应关系已经占用空间大小. 随便观察就能发现,其实就基本数据类型而已,JNI基本数据 ...
- WPF XAML 特殊字符(小于号、大于号、引号、&符号)
XAML 受限于 XML 规则.例如, XML 特别关注一些特殊字符,如 & < > 如果试图使用这些字符设置一个元素内容,将会遇到许多麻烦,因为 XAML 解析器认为您正在做其 ...
- shell脚本学习总结02--数组
bash同时支持普通数组个关联数组,普通数组只能使用整数作为数组的索引,关联数组可以使用字符串作为数组的索引. 数组的定义方法: 在单行中使用一列值定义一个数组 [root@new ~]# array ...
- 第十篇:Linux中权限的再讨论( 上 )
前言 在Linux系统中,用户分为 个权限位.好了,很多朋友对于Linux权限的了解就仅限于此了.但,Linux目录权限和文件权限一样吗?内核对于权限的检查过程又是怎样的? 如果你不清楚,本文将为你解 ...
- 你所不知道的CSS
1.用FONT-SIZE:0来清除间距 inline-block的元素之间会受空白区域的影响,也就是元素之间差不多会有一个字符的间隙.如果在同一行内有4个25%相同宽度的元素,会导致最后一个元素掉下来 ...