MySQL协议学习(1):准备工作
时间:2022-03-15 07:36
MySQL Client/Server协议
准确的说应该是MySQL Client/Server协议,另一个叫X Protocol的暂不涉及。地址如下:
字节序
一般协议里说的字节序是指网络字节序,网络字节序是big endian。而MySQL协议把主机字节序传输到网络上,使用little endian作为网络字节序,这点需要注意一下。关于字节序可以参考:
Wireshark
做协议开发,使用wireshark可以大大提高生产力,下面针对MySQL协议对wireshark的使用做个简单的介绍。
抓lo包:
如果你的client和server在同一台机器,比如你自己的电脑,你会发现wireshark抓不到MySQL包,因为loopback不走网卡。解决办法很简单:
过滤条件:
在wireshark的过滤条件里输入tcp.port==3306 && mysql,然后回车,这样就能只显示mysql类型的包。
其他通信方式不能抓包:
如Shared memory,Named pipes等通信方式,wireshark是抓不到的,最好别打开这些参数。
tcpdump:
如果你只具备linux命令行条件,就需要使用tcpdump抓包,抓完后sz到本地,再用wireshark解析。
client和server不在同一台机器:tcpdump tcp port 3306 -w test.pcap
client和server在同一台机器:tcpdump -i lo port 3306 -w test.pcap