[翻译]mysql通信协议(2)-Protocol Basics 之 Basic Data Types

官网地址:Protocol Basics


这是对MySQL协议使用的基本构建块的描述:

  • Basic Data Types 基础数据类型 String integer
  • MySQL Packets mysql的数据包
  • Generic Response Packets通用的数据包
  • Character Set字符集

Basic Data Types基础数据类型

在整个协议中使用的基本类型有:

  • Integer Types 数字类型
  • String Types 字符类型

Integer Types 数字类型

mysql通信协议有一系列编码方式对数字类型。

  • Protocol::FixedLengthInteger
    一个固定长度的无符号将其值存储在最少的字节中。
    MySQL使用以下固定长度的无符号整数:
    • int<1>: 1 byte Protocol::FixedLengthInteger.
    • int<2>: 2 byte Protocol::FixedLengthInteger. See int2store()
    • int<3>: 3 byte Protocol::FixedLengthInteger. See int3store()
    • int<4>: 4 byte Protocol::FixedLengthInteger. See int4store()
    • int<6>: 6 byte Protocol::FixedLengthInteger. See int6store()
    • int<8>: 8 byte Protocol::FixedLengthInteger. See int8store()
  • Protocol::LengthEncodedInteger
    长度编码的整数类型
    根据其数值,将数值转换为长度编码的整数,占用1,3,4或9个字节的整数
    [翻译]mysql通信协议(2)-Protocol Basics 之 Basic Data Types_第1张图片
    .png

    同样,要将长度编码的整数转换为其数值,请检查第一个字节。
    警告:
    如果数据包的第一个字节是长度编码的整数并且其字节值为0xFE,则必须检查数据包的长度以验证它是否有足够的空间存储8个字节的整数。 如果不是,它可能是一个EOF_Packet

String Types 字符类型

字符串是字节序列,且以协议中的以下几种类型出现。

  • Protocol::FixedLengthString
    固定长度的字符串具有已知的硬编码长度。
    举个例子:ERR_Packet数据包一直是5 bytes长度。
  • Protocol::NullTerminatedString
    以00字节结尾的字符串。
  • Protocol::VariableLengthString
    字符串的长度由另一个字段确定或在运行时计算
  • Protocol::LengthEncodedString
    长度编码的字符串是以描述字符串长度的长度编码的整数,作为前缀的字符串。
  • Protocol::RestOfPacketString
    如果一个字符串是数据包的最后,它的长度可以从总包长度减去当前位置计算得出。

你可能感兴趣的:([翻译]mysql通信协议(2)-Protocol Basics 之 Basic Data Types)