mysql握手_php一步一步实现mysql协议(二) ——握手初始化

交互过程

MySQL客户端与服务器的交互主要分为两个阶段:握手认证阶段和命令执行阶段。

握手认证阶段

握手认证阶段为客户端与服务器建立连接后进行,交互过程如下:

服务器 -> 客户端:握手初始化消息

客户端 -> 服务器:登陆认证消息

服务器 -> 客户端:认证结果消息

命令执行阶段

客户端认证成功后,会进入命令执行阶段,交互过程如下:

客户端 -> 服务器:执行命令消息

服务器 -> 客户端:命令执行结果

ce6f947db849a273a30a5af23f41a6dc.png

上面就是mysql客户端和服务端的交互流程,然后结合实际中的抓包工具来看先这个过程。这里使用php的PDO扩展连接数据库并执行一条查询语句,抓包情况如下

f1d0e45577ee72fb3e7d88ac3086e344.png

下面一条一条的来分析每个包中的内容,在此之前先看下报文的结构,报文分为消息头和消息体两部分,其中消息头占用固定的4个字节,消息体长度由消息头中的长度字段决定,报文结构如下:

4c363032044ea94931d789f3cd552b7b.png

先看下握手初始化的报文,如图:

349b67260dab860e9ea724ec685f6ca9.png

其中前三个字节  4a 00 00  表示消息体的长度,但是这里需要注意的是在报文中整数是以小端存储(即低位放在低地址,高位放在高地址)的方式进行传输的,所以转为我们平时阅读的形式的话应该是  00 00 4a  转为十进制应该是 74 ,也就是报文中的消息体长度应该是 74个字节(即出去开头的 4a 00 00 00 字节消息头之外所有的蓝色背景部分)。再来看下初始化信息中包含了哪些内容

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值