开发网络程序时,我们能够直观看到往来数据,对开发是十分便利的。这里提供了几种方法:
一、虚拟网卡
1.在iPhone或iPad上创建一个RVI(remote virtual interface)虚拟网卡
用usb把设备和mac相连接,打开命令行工具,输入命令:
rvictl -s abcdef01234563e91f1f2f8a8cb0841d2dafeebbc
这里那一长串东西是设备的UDID。使用iTunes可以查询到这个东西。(默认显示的是序列号,点一下序列号三个字,就会切换显示)。点击菜单 编辑-复制udid即可。
正常情况下,它会提示Starting device ********************* [SUCCEDDED] with interface rival 成功。
使用ifconfig -l命令测试一下:
2.使用tcpdump 命令,把数据包保存到.pcap 文件里
在终端输入命令:
sudo tcpdump -i rv0 -n -s 0 -w dumpFile.pcap tcp
参数说明 :
- -i rv0 截获虚拟网卡的数据
- -n 不使用dns
- -s 0 截取整个数据包,而不是仅首字节
- -w dumpFile.pcp 输出文件,是libpcap 文件格式
- tcp 只截取tcp数据包
现在在设备上运行app,结束的时候,退出tcpdump.这个时候如果不再需要截获数据,也可以把虚拟网卡移除掉。
rvictl -x abcdef01234563e91f1f2f8a8cb0841d2dafeebbc
但现在这个数据文件还不容易使用,使用vim打开会看到全是乱码。
现在安装一个tcpreplay工具
brew install tcpreplay
我在操作的时候,遇到了这个错误:
Error: Cannot write to /usr/local/Cellar
先执行:
sudo
chown -R $USER /usr/local
安装以后,执行命令:
tcprewrite --dlt=enet --enet-dmac=00:11:22:33:44:55 --enet-smac=66:77:88:99:AA:BB --infile=dumpFile.pcap --outfile=dumpFileFinal.pcap
3.安装wireshark查看数据
到Wireshark下载安装 。
Wireshark需要x11的支持。如果没有安装,启动Wireshark时会引导安装。也可以到这里下载安装:
http://xquartz.macosforge.org/landing/
启动wireshark,这时可能会提示Choose Application。点击Browser到"/Application/Utilities/XQuartz.app"。如果是安装最新的Wireshark,也可能不需要指定,它会自动识别。
注意开始打开可能比较慢,要耐心等待。
打开转换后的dumpFileFinal.pcap,可以看到数据内容。
二、http数据监测查看 HTTPArchive
网址:
http://www.softwareishard.com/blog/har-12-spec/
使用tcpdump获取的pcap也可以转为httpArchive查看,需要使用pcap2har的python脚本工具。
这个以后再另外专门介绍。
三、使用Instruments network profiling
测试时使用虚拟机是不能监测到数据的,需要连接物理机测试。
这是结果示例:
在这里不容易看到真实的数据,只能看到大致的通信情况。
原文:
http://blog.manbolo.com/2013/02/22/analysing-ios-app-network-performances-on-cellularwifi