背景
近期公司有个项目,是存在一个游戏平台捕捉到游戏事件通过我们写的插件来给灯下发指令,从而实现了灯光与游戏联动效果。从始至终,都使用TCP/UDP来实现,但是通过多次迭代以及测试发现,通信起来并不是那么一帆风顺,需要插件与灯的固件建立良好连接并且稳定通信,才能实现理想中的效果。
为此,在设计testcase过程中除了对插件的测试外,由于整个通信链路比较长,还需要从兼容性方面考虑,PC端异常复杂,例如防火墙或者第三方软件的屏蔽,例如多网卡的情况,例如路由器的转发异常等。为使整个通信更清晰的表达出来,测试过程遇到问题可通过Wireshark来抓包分析,收集到的问题日志提供给相关开发。
作为初级测试工程师,学会使用,学会抓包后提供日志足矣。
中高级工程师除了需要提供且有效可用的日志后,还需要通过Wireshark来分析每一层的通信关系,也更能加深对项目的理解。
什么是Wireshark?
Wireshark(前称Ethereal)是一个网络封包分析软件。网络封包分析软件的功能是撷取网络封包, 并尽可能显示出最为详细的网络封包资料。网络封包分析软件的功能可想像成 "电工技师使用电表来量测电流、电压、电阻" 的工作,只是将场景移植到网络上,并将电线替换成网络线。
在过去,网络封包分析软件是非常昂贵,或是专门属于营利用的软件。Ethereal的出现改变了这一切。在GNU GPL通用许可证的保障范围底下,使用者可以以免费的代价取得软件与其程式码,并拥有针对其原始码修改及客制化的权利。Ethereal是目前全世界最广泛的网络封包分析软件之一。
下载地址
选择对应系统环境进行下载,安装。
https://www.wireshark.org/download.html
Wireshark元素介绍
1. 初始化页面
开始页面不再多说,拿mac为例(windows也一样),需要先选择网卡。后面的波浪线代表网卡波动监控。选择Wi-Fi:en0进入主页面。
2. 设置(太懒了...请自行对应)
a. 顶部工具栏,主要为运行,停止,重新捕捉,设置(可对网络接口重新配置),打开本地之前捕捉的文件(暂停后使用),分别对捕捉到的数据进行保存、删除、重置(暂停后使用),放大镜及后面绿色剪头则表示所在行的移动。
b. Apple a display显示过滤器信息
c. 中间区域显示封包详细信息,包含自增序号,时间显示
3. 过滤表达式规则
1. 过滤IP地址
查看目标地址:ip.dst==120.223.243.174
查看源地址: ip.src ==192.168.0.104
2. 过滤协议
过滤TCP:TCP
过滤UDP:UDP
3. 过滤端口
过滤80端口:tcp.port == 80
tcp.srcport == 80, 只显示TCP协议的源端口为80的。
4. Http模式过滤
http.request.method=="GET", 只显示HTTP GET方法的。
e. 逻辑运算符为 AND/ OR