前言:在日常故障诊断的时候,我们经常需要去抓包测试,比如定位连通性问题,比如抓包查看到底客户端发送了什么SQL等等,今天咱们来学习一下常用的抓包手段。

一、wireshark

windows下基本上可以使用wireshark来抓包和分析,wireshark下载安装也是非常方便,去官网下载安装最新版本就OK,最新版本是2.6版本,跟1.0版本相差还是蛮大的,刚开始还一时找不到旧版本的按钮在哪里。

安装

安装就不说了,默认下一步就OK
下载地址贴上:https://2.na.dl.wireshark.org/win64/Wireshark-win64-2.6.1.exe

抓包配置

【MySQL】日常抓个包 - 图1
选择好网卡以后,选择下面小标签按钮,选择TCP/UDP,选择端口3306,然后点击开始就开始抓包了

抓包测试

在windows客户端用shell命令连接远程MySQL数据后可以看到界面上已经有数据显示
【MySQL】日常抓个包 - 图2
从上面可以很清晰得看到三次握手的过程,点击每一行下面都有详细的说明每一步干了什么,SQL是什么样子的,还是比较方便的,另外需要说明的一点是如果看到的是二进制编码,可以选择顶部菜单的转码,转成MySQL就可以了

二、tcpdump

在linux上,我们首选tcpdump来抓包,虽然也可以用wireshark来抓包,但是安装起来比较麻烦,tcpdump用yum安装一下即可。

抓包演示

开一个窗口,命令如下

  1. tcpdump -i enp0s20u2 -s 0 port 3306 -w tcpdumptest.cap

参数说明:

  • -i:指定抓包的网卡名称

  • -s:抓取数据包时默认抓取长度为68字节。加上-S 0 后可以抓到完整的数据包

  • port:指定抓包监听的端口

  • -w:指定抓包数据保存的文件名

抓包分析

抓包完成以后,将抓包获取到的文件down到windows用wireshark分析即可
【MySQL】日常抓个包 - 图3