MySQL-Binlog解析篇:1 Greeting Packet

正常情况下,连接上某个数据库的3306端口之后,服务器主动发送一个greeting packet.

如图所示:

MySQL-Binlog解析篇:1 Greeting Packet_第1张图片

具体解释如下:

前3个字符为当前报文总长度,小端排序,3个字节

第4个字节为sequence.

因为前面3个字节算出来的长度为78,加上之前的4个字节,所以总长82字节。

正如TCP层所示:82字节。

===至于后面具体解析的内容,可以参考代码:

public GreetingPacket(byte[] bytesthrows IOException {

        ByteArrayInputStream buffer = new ByteArrayInputStream(bytes);

        this.protocolVersion = buffer.readInteger(1);

        this.serverVersion = buffer.readZeroTerminatedString();

        this.threadId = buffer.readLong(4);

        String scramblePrefix = buffer.readZeroTerminatedString();

        this.serverCapabilities = buffer.readInteger(2);

        this.serverCollation = buffer.readInteger(1);

        this.serverStatus = buffer.readInteger(2);

        buffer.skip(13); // reserved

        this.scramble = scramblePrefix + buffer.readZeroTerminatedString();

        if (buffer.available() > 0) {

            this.pluginProvidedData = buffer.readZeroTerminatedString();

        }

    }

这个很简单,就不解释了。 

你可能感兴趣的:(mysql,binlog,GreetingPacket)