此階段的協議分析是在未壓縮未加密狀況下的協議分析html
結合Oracle官網和本身用wireshark抓的網絡數據包進行協議分析mysql
mysql包共分爲4段,格式以下:sql
第一段:payload(一般是執行的SQL語句)的長度佔3字節;網絡
第二段:序列id佔1字節;fetch
第三段:payload類型佔1字節;ui
第四段:payload內容佔n字節,n爲第一段描述的長度。加密
0000 1a 00 00 00 03 73 65 6c 65 63 74 20 2a 20 66 72 .....select * fr 0010 6f 6d 20 73 6d 61 6c 6c 74 61 62 6c 65 3b om smalltable; MySQL Protocol Packet Length: 26 Packet Number: 0 Request Command Query Command: Query (3) Statement: select * from smalltable;
咱們看到1a 00 00 00 03就是mysql的協議頭debug
1a 00 00 轉換爲10進製爲26,與wireshark解析的Packet Length:26符合(也說明了wireshark原理不過就是把協議對應解析);code
00 是sequence id,也就是序列id,咱們沒有建立序列,也就沒有此id;htm
03 是payload的類型,對於類型說明,官網說明以下:
00 COM_SLEEP
01 COM_QUIT
02 COM_INIT_DB
03 COM_QUERY
04 COM_FIELD_LIST
05 COM_CREATE_DB
06 COM_DROP_DB
07 COM_REFRESH
08 COM_SHUTDOWN
09 COM_STATISTICS
0a COM_PROCESS_INFO
0b COM_CONNECT
0c COM_PROCESS_KILL
0d COM_DEBUG
0e COM_PING
0f COM_TIME
10 COM_DELAYED_INSERT
11 COM_CHANGE_USER
12 COM_BINLOG_DUMP
13 COM_TABLE_DUMP
14 COM_CONNECT_OUT
15 COM_REGISTER_SLAVE
16 COM_STMT_PREPARE
17 COM_STMT_EXECUTE
18 COM_STMT_SEND_LONG_DATA
19 COM_STMT_CLOSE
1a COM_STMT_RESET
1b COM_SET_OPTION
1c COM_STMT_FETCH
1d COM_DAEMON
1e COM_BINLOG_DUMP_GTID
1f COM_RESET_CONNECTION
第四段天然就是payload,也就是咱們的SQL語句。