Wireshark 是一个功能十分强大的开源
网络数据包分析器,
可以截取各种网络数据包
,并显示数据包详细信息。常用于开发测试过程中各种网络问题定位。
下面介绍 Wireshark 各项技巧
抓取手机包
-
获取UUID
手机连接Mac,打开Xcode->Window->Devices and Simulators,复制Identifier后面的UUID
-
创建虚拟网卡
打开终端, 输入
rvictl -s UUID
,Starting device UUID [SUCCEEDED] with interface rvi0 表示虚拟网卡创建成功
-
使用 wireshark 连接
rvi0
网卡
颜色规则
View --> Coloring Rules
。数据包列表区中不同的协议使用了不同的颜色区分。如下所示
可以设置前景色(文字)和背景色
数据包内容
通过Wireshark可以看到网络通信各个层的格式和信息,包含物理层、数据链路层、网络层、传输层和应用层
也可以查看每一层的具体字段信息, 下图是传输层TCP信息
过滤器
输入过滤的条件, 过滤出您需要的包
- 过滤器类型Type(host、net、port)
- 方向Dir(src、dst)
- 协议类型(ether、ip、tcp、udp、http、icmp、ftp等)
- 逻辑运算符(&& 与、|| 或、!非)
协议过滤
只显示指定协议的包, 如
- udp
- tcp
- http
- arp
- ip
- icmp
- ...
菜单View → Internals → Supported Protocols
查看Wireshark支持的协议,
协议条件过滤
协议.条件
==xxxx
ini
ip.addr==180.97.94.229 // 发送方/接收方ip地址==180.97.94.229
ip.src // 包发送方ip地址
ip.dst // 包接收方ip地址
tcp.port==18086 // TCP端口号
tcp.flags // tcp标志
tcp.flags.syn==1 // tcp syn标志
SYN表示建立连接,FIN表示关闭连接,ACK表示响应,PSH表示有DATA数据传输,RST表示连接重置。
http.request.method=="GET" // 只显示HTTP GET方法的。
自定义过滤条件
Apply as Filter
添加自定义的条件
流量图
Statistics -> Flow Graph
打开流量图, 以图表形式显示包的信息和流向
勾选 Limit to display filter
过滤掉不需要显示的包
追踪流
追踪http流, 查看http请求的完整过程