关于网络抓包,也是一个日常开发中不怎么会用到的知识点,但是作为一位程序员,应该需要具备一定的操作能力。特别是在跟硬件设备对接数据的时候。

为什么要抓包

服务端:netty-socket搭建的服务端
客户端:硬件设备通过tcp协议上传数据
问题:

1.硬件设备一无法重连服务端,数据无法上传。硬件提供方怀疑服务端功能有问题,导致硬件端无法连接。提出抓包查看是否进行tcp的握手,形成稳定的连接。

2.硬件设备二注册服务端失败。提供接收到的数据给硬件提供方,硬件提供方怀疑服务端未成功解析数据,解析数据出现断包情况。提出抓包核对数据是否完整。

准备抓包

对于别人提出的问题,当然要准备好数据反馈回去咯!!!

但是问题来了,抓包?不会!查呗!

选择抓包工具

网上比较火的抓包工具,Charles、Fiddler、WireShark,三个都下载一遍。但是在抓的过程中,发Charles跟Fiddler都无法抓去socket数据,而且还是英文版。最后选择了WireShark,三个中他可以直接抓取到我想要的数据,而且有中文版。

下载WireShark

官网下载地址(2022-11-20 最新地址):https://www.wireshark.org/#download

wireshark 基于偏移值做匹配 wireshark csdn_网络

选择适合自己系统的版本进行下载,下载完成后直接进行安装即可。

界面语言选择

安装好之后如果是英文版的操作界面,通过配置可以调整为中文版本。

找到Preferences

wireshark 基于偏移值做匹配 wireshark csdn_wireshark 基于偏移值做匹配_02

打开后找到Appearance,配置界面最下面有一个Language,选择Chinese。

wireshark 基于偏移值做匹配 wireshark csdn_网络_03

抓取数据

选择网卡

由于很多电脑现在都有多网卡,所以当wireShark打开时会提示选择不同的网络。

wireshark 基于偏移值做匹配 wireshark csdn_后端_04

建议选择能够看到上图曲线的网口,我理解为代表有网络请求可以被监听到

mac下的报错

wireshark 基于偏移值做匹配 wireshark csdn_wireshark 基于偏移值做匹配_05

这是一个没有权限的报错:

The capture session could not be initiated on interface 'en0' (You don't have permission to capture on that device).

解决方案:

授权文件夹:/dev/bpf*

sudo chmod o+r /dev/bpf*

查看数据

wireshark 基于偏移值做匹配 wireshark csdn_网络_06

到这里就可以查看到抓取的数据了

简易过滤数据

wireShark提供丰富的过滤方式,但是我现在就用到了一个:通过端口进行过滤。

tcp.port == 80

wireshark 基于偏移值做匹配 wireshark csdn_后端_07

基础语法:

**ip地址:**ip.addr ip.src ip.dst

**端口过滤:**tcp.port tcp.srcport tcp.dstport

**协议过滤:**ip tcp udp http

**逻辑操作符:**and or not

比较操作符:== != > >= < <=

WireShark还有很多用法,会在以后的使用中增加更多的内容。