MySQL Client/Server協議 準確的說應該是MySQL Client/Server協議,另一個叫X Protocol的暫不涉及。地址如下:MySQL Client/Server Protocol 位元組序 一般協議里說的位元組序是指網路位元組序,網路位元組序是big endian。而MySQL ...
MySQL Client/Server協議
準確的說應該是MySQL Client/Server協議,另一個叫X Protocol的暫不涉及。地址如下:MySQL Client/Server Protocol
位元組序
一般協議里說的位元組序是指網路位元組序,網路位元組序是big endian。而MySQL協議把主機位元組序傳輸到網路上,使用little endian作為網路位元組序,這點需要註意一下。關於位元組序可以參考:理解位元組序
Wireshark
做協議開發,使用wireshark可以大大提高生產力,下麵針對MySQL協議對wireshark的使用做個簡單的介紹。
抓lo包:
如果你的client和server在同一臺機器,比如你自己的電腦,你會發現wireshark抓不到MySQL包,因為loopback不走網卡。解決辦法很簡單:wireshark如何抓取本機包
過濾條件:
在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