mysql抓包数据协议分析
MySQL 抓包数据协议分析(客户端到服务端的通讯协议) 1 典型的 MySql 会话过程 描述 一次正常的过程如下: 1)三次握手建立 tcp 连接 2)建立 MySql 连接 a) 服务端往客户端发送握手初始化包(Handshake Initialization Packet) b) 客户端往服务端发送验证包(Client Authentication Packet) c) 服务端往客户端发送成功包 3)客户端与服务端之间交互 a) 客户端往服务端发送命令包(Command Packet) b) 服务端往客户端发送回应包(OK Packet, or Error Packet, or Result Set Packet) 4) 断开 MySql 连接 a) 客户端往服务端发送退出命令包 5) 四次握手断开 tcp 连接 1.2 举例(使用 tcpdump 抓包) 客户端在命令行模式下使用命令:mysql–u root –pdbaudit–h 192.168.86.206 连上数据库抓 取的数据包如下: 1.2.1 登陆 1)三次握手建立连接 19:00:22.534342 IP 192.168.86.101.59614 >localhost.localdomain.mysql: S 911022238:911022238(0) win 8192 0 x0000: 4500 0034 043f 4000 4006 0801 c0a8 5665 E4.?@.@.Ve0 x0010: c0a8 56ce e8de 0cea 364d 189e 0000 0000 V.6M0 x0020: 8002 2000 dbdd 0000 0204 05b4 0103 0302 0 x0030: 0101 0402 19:00:22.534390 IP localhost.localdomain.mysql> 192.168.86.101.59614: S 3302432077:3302432077(0) ack 911022239 win 5840 0 x0000: 4500 0034 0000 4000 4006 0c40 c0a8 56ce E4@.@@V.0 x0010: c0a8 5665 0cea e8de c4d7 1d4d 364d 189f Ve.M6M 0 x0020: 8012 16d0 02d3 0000 0204 05b4 0101 0402 0 x0030: 0103 0307 19:00:22.534916 IP 192.168.86.101.59614 >localhost.localdomain.mysql: .ack 1 win 43800 x0000: 4500 0028 0440 4000 4006 080c c0a8 5665 E(.@@.@.Ve0 x0010: c0a8 56ce e8de 0cea 364d 189f c4d7 1d4e V.6M.N0 x0020: 5010 111c 4959 0000 0000 0000 0000 P.IY 2)服务端向客户諯发送握手初始化包(Handshake Initialization Packet) 19:00:22.535632 IP localhost.localdomain.mysql> 192.168.86.101.59614: P 1:79(78) ack 1 win 460 x0000: 4508 0076 0d33 4000 4006 fec2 c0a8 56ce Ev.3@.@.V.0 x0010: c0a8 5665 0cea e8de c4d7 1d4e 364d 189f Ve.N6M0 x0020: 5018 002e 2eed 0000 4a00 0000 0a35 2e35 P.J5.50 x0030: 2e32 3100 8200 0000 2f75 2246 7b58 2652 .21./u“F{X&R0 x0040: 00ff f708 0200 0f80 1500 0000 0000 0000 0 x0050: 0000 004b 6128 4049 2d46 565d 5366 2900 .Ka(@I-FV]Sf).0 x0060: 6d79 7371 6c5f 6e61 7469 7665 5f70 6173 mysql_native_pas0 x0070: 7377 6f72 6400 sword. 3)客户端向服务端发送包含用户名密码的验证包(Client Authentication Packet) 19:00:22.536678 IP 192.168.86.101.59614 >localhost.localdomain.mysql: P 1:63(62) ack 79 win 43600 x0000: 4500 0066 0441 4000 4006 07cd c0a8 5665 Ef.A@.@.Ve0 x0010: c0a8 56ce e8de 0cea 364d 189f c4d7 1d9c V.6M0 x0020: 5018 1108 b2d0 0000 3a00 0001 85a6 0300 P.:.0 x0030: 0000 0001 0800 0000 0000 0000 0000 0000 0 x0040: 0000 0000 0000 0000 0000 0000 726f 6f74 root0 x0050: 0014 ce03 1683 429e cae8 cb93 5435 71f2 B.T5q.0 x0060: 7439 d842 1922 t9.B.“ 4)服务端向客户端发送一个空包(普通的 tcp 包,跟 mysql 无关) 19:00:22.536748 IP localhost.localdomain.mysql> 192.168.86.101.59614: .ack 63 win 460 x0000: 4508 0028 0d34 4000 4006 ff0f c0a8 56ce E(.4@.@.V.0 x0010: c0a8 5665 0cea e8de c4d7 1d9c 364d 1