千家信息网

mysql 报文的格式和基本类型的示例分析

发表于:2025-02-09 作者:千家信息网编辑
千家信息网最后更新 2025年02月09日,本篇文章给大家分享的是有关mysql 报文的格式和基本类型的示例分析,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。navicat 和 m
千家信息网最后更新 2025年02月09日mysql 报文的格式和基本类型的示例分析

本篇文章给大家分享的是有关mysql 报文的格式和基本类型的示例分析,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

navicat 和 mysql 是一对好基友,每天都有非常频繁的交流,主人在navicat上写下每条sql语句,轻轻的点了下执行按钮,navicat就飞快的把主人的指令传送到mysql那里,mysql立马把返回结果传回navicat那里显示给主人看。主人对他们的效率很满意,同时主人也有点好奇:你们两个基友是怎么通讯的呢?如果不通过navicat,我用程序直接和mysql交互该怎么做呢?

mysql 笑道:这是我们之间的秘密。。。

navicat有点不开心了:难道主人想抛弃我吗?呜呜呜。。。

主人安慰道:你想多了,我只是想更了解你们呀。

那我就给你详细讲讲我们之间的小秘密吧,mysql悠悠的说道:

想要通过我的交互,就得照我规定的格式来,不能每个人过来都讲自己的方言,我可听不懂,来到我的地盘就得按我的规矩来。

1.我给你发的报文都是这种格式的:

服务器--->客户端的报文格式

前面3个字节payload_length表示后面数据的实际长度,中间一个字节sequence_id表示报文的序号,从0开始,每次加1,最后的paylaod就是我发你的内容啦。

你可能也发现了,payload_length用3个字节表示,最大只能表示 224−1 bytes也是16M,如果报文大于或者等于16M那就要拆成2个报文了哦,

比如刚好发送16M的报文:

ff ff ff 00 (数据域16M)...00 00 00 01 (数据域为空)

第二个报文的数据域是空的。

2.客户端发给我的报文也是要按照一定格式的哦:

客户端--->服务器的报文格式

第一个字节表示命令的类型

后面的字节表示具体的命令,例如关闭连接的报文是长这样子滴:

这样规定好后,我们就有共同语言啦,就能听得懂对方在讲什么了,所以说有共同语言是很重要滴。

主人细细的回味了下mysql刚才说的话,发现还有个地方没弄明白问道:你发给我的报文中int<3>,string表示什么意思呀?

mysql忽然意识到还忘了说一件重要的事情:哎呦,我忘了和你说基本的数据类型了。

mysql有2种基本的数据类型:

Integers(整数型)String(字符串)

Integers(整数型)分为定长的整数类型(Fixed-length integers)和变长的整数类型(Length-encoded integers)

1.定长的整数类型(Fixed-length integers)分别能表示1,2,3,4,6,8字节的长度:

int<1>表示占1个字节的长度, int<2>表示占2个字节的长度,以此类推,比如 int<3> 表示1是这么表示的:01 00 00

对了,mysql协议中字节是按小头(LittileEndian)的方式表示的,低位的字节在前面,总体占3个字节,所以第一个字节是01,后面是00 00

2.变长的整数类型(Length-encoded integers)

  • 如果数字 < 251, 就用一个字节表示 = 1个字节

  • 如果数字 ≥ 251 并且 < (216),就用 fc + 2个字节表示 = 3个字节

  • 如果数字 ≥ (216) 并且 < (224),就用 fd + 3个字节表示 = 4个字节

  • 如果数字 ≥ (224) 并且 < (264) ,就用 fe + 8个字节表示 = 9个字节

主人表示很奇怪:一个字节最多能表示255个数,为什么不能直接表示到255?而是只表示到250?

mysql微微一笑道:因为251,252,253,254,255已经被我征用了哦,它们表示特殊的用途:

251(fb):表示 NULL

252(fc):表示数值的大小占后面的2个字节

253(fd):表示数值的大小占后面的3个字节

254(fe):表示数值的大小占后面的8个字节

255(ff): 表示一个错误报文 ERR packet

下面说说String(字符串)类型:


1.变长的字符类型(LengthEncodedString):和上面变长整数类型是一样的,根据第一个字节的值判断所占字节的长度

2.定长的字符串类型(FixedLengthString):后面的数字表示字符串所占字节的长度

3.动态的计算长度(VariableLengthString):根据var动态的计算长度

4.包末端字符串方式(RestOfPacketString):没搞懂

5.空结尾的字符串类型(NulTerminatedString):字符串遇到 00 结束

原来如此,主人豁然开朗,看着navicat 和 mysql都亲切了许多,知道他们之间是怎么通话之后,一个邪恶的想法慢慢从心底升起,嘿嘿,那我不就可以监听他们之间的对话了嘛,哈哈哈哈哈哈哈哈。。。

以上就是mysql 报文的格式和基本类型的示例分析,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注行业资讯频道。

字节 报文 类型 主人 字符 长度 格式 字符串 整数 数据 数字 之间 大小 客户 数值 定长 示例 分析 重要 共同语言 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 中国电信网络安全运营中心冯晓冬 服务器1u2u 网络安全宣传周在哪里办 数据库如何存文章 体系认证软件开发 教育系统网络安全周致辞 我的世界简易服务器 管理服务器入口 pubg端游服务器维护什么时候结束 速农网络技术有限公司 学习网络安全的感想大学生 普陀区参考网络技术服务创新服务 奉贤区第三方软件开发售后服务 实时数据库系统的主要技术 spss横向数据库格式整理 百度云服务器异常稍后再试 哪些网站能学软件开发 网络安全法 处罚案例 扎实做好网络安全任务 mc国际服能进国服服务器吗 网络安全防社工小故事 循证医学必须检索的数据库 北京合浩元应用软件开发中心 wep开发和软件开发 关于加强检察机关网络安全 vivo做软件开发累不累 计算机监控系统网络安全管理 机服务器监控 国家数据网络安全总局 mc国际服能进国服服务器吗
0