iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >MySQL通讯协议(2)数据包
  • 220
分享到

MySQL通讯协议(2)数据包

MySQL通讯协议(2)数据包 2017-10-02 15:10:50 220人浏览 才女
摘要

将数据分成大小为(2^24−1)字节的数据包 给每个数据块加上一个包头 由于连接的创建和释放都需要耗费资源,所以数据库这种交互频繁,且连接数量不需要特别大的应用场景,一般使用长连接。 使用短连接尚能通过RST判断数据是否读完了,而长连接

MySQL通讯协议(2)数据包

  • 将数据分成大小为(2^24−1)字节的数据包
  • 给每个数据块加上一个包头

由于连接的创建和释放都需要耗费资源,所以数据库这种交互频繁,且连接数量不需要特别大的应用场景,一般使用长连接。

使用短连接尚能通过RST判断数据是否读完了,而长连接就不能这么做了,同时由于tcp的特点,数据读写会发生拆包、粘包。所以使用长连接传输数据,必须通过某种方法把要发送的数据告诉接收方。例如Http协议head里的CONTENT-LENGTH。也可以通过特殊的符号判断,不过由于消息里可能也会出现这些符号,会发生歧义,所以应用场景受限。还有一种最简单的方法就是每次发送固定长度消息,不够用0填充。

Mysql数据包结构

Type Name Description
int<3> payload_length payload的长度,整数类型。不包括包头四个字节
int<1> sequence_id Sequence ID
string payload 有效载荷,字符串类型。长度=payload_length

消息包分为两个部分,包头+包体。

包头固定四个字节,前三个字节是整数型的payload长度,第四个是整数型的消息序列号。

包体就是这个包的有效载荷,长度由前三字节指定,内容根据具体场景各不相同。

例如,一个消息为03 00 00 01 01 02 03 04。先读取前四个字节,发现这个消息包体有3个字节,这个消息序号是0,消息内容是01 02 03,后面的04是下一个包的数据。

包体长度

由于包体长度是由三个字节记录的,三个字节能表示的最大值为FF FF FF,即1<24-1=2^24-1=16777215=15.999...M。所以,一个mysql消息包体不能超过16MB。如果超过16MB,就分多次发送。

消息序号

消息号用来标记每个消息的顺序,会自动增长,并循环。

通用响应包

对于大多数请求,服务端有一些通用的响应包结构。

OK_Packet

命令成功完成后的响消息。

Type Name Description
int<1> header [00][fe]
int affected_rows affected rows 影响行数
int last_insert_id last insert-id 最后插住数据id
if capabilities & CLIENT_PROTOCOL_41 {
int<2> status_flags Status Flags
int<2> warnings 警告数量
} else if capabilities & CLIENT_TRANSACTIONS {
int<2> status_flags Status Flags
}
if capabilities & CLIENT_SESSION_TRACK {
string info 容易理解的状态信息
if status_flags & SERVER_SESSION_STATE_CHANGED {
string session_state_changes session state info
}
} else {
string info 容易理解的状态信息
}

header:表明这是一个OK还是EOF响应。

capabilities :在创建连接阶段,客户端和服务端交换的字段,用于表示支持哪些特性。

CLIENT_PROTOCOL_41:4.1+版本的客户端使用的协议。

ERR_Packet

Type Name Description
int<1> header [ff]
int<2> error_code 错误码
if capabilities & CLIENT_PROTOCOL_41 {
string[1] sql_state_marker # marker of the SQL State
string[5] sql_state SQL State
}
string error_message 容易理解的错误信息
您可能感兴趣的文档:

--结束END--

本文标题: MySQL通讯协议(2)数据包

本文链接: https://www.lsjlt.com/news/5278.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • MySQL通讯协议(2)数据包
    将数据分成大小为(2^24−1)字节的数据包 给每个数据块加上一个包头 由于连接的创建和释放都需要耗费资源,所以数据库这种交互频繁,且连接数量不需要特别大的应用场景,一般使用长连接。 使用短连接尚能通过RST判断数据是否读完了,而长连接...
    99+
    2017-10-02
    MySQL通讯协议(2)数据包
  • 专利:结构化大数据通信协议(2)
    说明2:数据的唯一性是实现“数据全球通”的基础在班、组这样的小环境中可以用每个人的姓名而区分出每一个人,然而在全国范围内,由于人数太多,重名的很多,因此仅靠姓名就不能准确无误地识别出每一个人。大数据时代以前...
    99+
    2022-10-18
  • MySQL通讯协议(3)连接阶段
    MySQL通讯协议(3)连接阶段 MySQL 连接生命周期 graph TD A[开始] --> |连接|B(ConnectionState) B --> |认证成功|C(CommandState) C --> |复制命令|D(Replic...
    99+
    2014-05-27
    MySQL通讯协议(3)连接阶段
  • Mysql通讯协议的示例分析
    小编给大家分享一下Mysql通讯协议的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!1.Mysql的连接方式要了解Mys...
    99+
    2022-10-18
  • 专利:结构化大数据通信协议
    发明专利技术结构化大数据通信协议发明人:樊永正269779216@qqqq.com技术领域结构化大数据通信协议是一种通信协议,也是一种让数据成为合格的结构化大数据的技术。结构化大数据通信协议也类似于ETL,...
    99+
    2022-10-18
  • Android通过HTTP协议实现上传文件数据
    本文实例为大家分享了Android通过HTTP协议实现上传文件数据的具体代码,供大家参考,具体内容如下 SocketHttpRequester.java package cn...
    99+
    2022-06-06
    HTTP 数据 上传文件 http协议 Android
  • 哪些通信协议不是加密传输数据
    不属于加密数据传输的通信协议有以下几种HTTP协议HTTP协议为超文本传输协议,是因特网上应用最为广泛的一种网络传输协议,所有的WWW文件都必须遵守这个标准。FTP协议PTP是一种高精度时间同步协议,可以到达亚微秒级精度,但需要网络的节点支...
    99+
    2022-10-12
  • 【Python爬虫与数据分析】UDP/TCP通信协议
    目录 一、网络编程基础 二、UDP协议 三、TCP协议 一、网络编程基础 数据编码与解码 str -> bytes:encode编码,发送信息的时候用encode编码bytes -> str:decode解码,打印接收的信息用decod...
    99+
    2023-09-06
    python udp tcp/ip 网络通信
  • 云服务器包括数据库吗为什么没有数据传输协议
    云服务器(Cloud Server)不包括数据库,因为它们是为提供高性能、高可用性和快速响应而设计的。数据传输协议是为了保证云服务器上的应用程序之间的数据在传输时保持一致性和可访问性而定义的,这些协议通常使用HTTP或其他协议。 此外,云...
    99+
    2023-10-27
    传输协议 服务器 数据库
  • python数据库编程 Mysql实现通讯录
    本文实例为大家分享了Mysql实现通讯录的具体代码,供大家参考,具体内容如下 #-*-code:utf-8-*- import pymysql def CreateTable(): hcon=pymysql....
    99+
    2022-05-23
    python mysql 通讯录
  • 抓包习讯云院校数据通过PHP解析导入数据库
    前言 最近,打卡APP需要这个数据,通过抓包后发现这个数据是固定的,获取很简单,但是数据太多,手动导入不显示,于是分析了json格式后果断通过脚本完成 【推荐】 《【MQTT】Esp32数据上传采集...
    99+
    2023-10-03
    php 数据库 开发语言
  • 协议栈——收发数据(拼接网络包,自动重发,滑动窗口机制)
    目录 协议栈何时发送数据~ 数据长度 IP模块的分片功能 发送频率 网络包序号~利用syn拼接网络包ack确认网络包完整 确定偏移量 服务器ack确定收到数据总长度 序号作用 双端告知各自序号 协议栈自动重发机制 大致流程 ack等待时间如...
    99+
    2023-10-12
    网络
  • Android-Ble蓝牙通讯开发–扫描,连接,发送和接收数据,分包解包(附源码)
    前言 万物互联的物联网时代的已经来临,ble蓝牙开发在其中扮演着举重若轻的角色。最近刚好闲一点,抽时间梳理下这块的知识点。 涉及ble蓝牙通讯的客户端(开启、扫描、连接、发送和接收数据、分包解包)和服...
    99+
    2023-09-08
    人工智能 android 物联网 iot
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作