背景:手机访问资源速度慢,造成视频播放卡顿
目的:学会常用简单有效的网络抓包分析
平台:android手机(已root),tcpdump工具,wirehark
操作步骤:
1.adb push tcpdump到/data/local 目录
2.运行netcfg查看当前手机链接网络,一般手机wifi都是wlan0
3.运行命令/data/local/tcpdump -i wlan0 -p -vv -s 0 -w /sdcard/netlog.pcap
4.adb pull netlog.pcap,用WireShark打开
WireShark分析常用步骤:
1.http.host contains "hostName" 进行过滤(PS:hostName 需要分析域名)
或https:ssl.handshake.extensions_server_name == "hostName"
2.选择其中的某个链接,右键Follow-Tcp Stream
3.针对第一个tcp点击右键Set/UnSet Time Reference 进行时间轴的重置
4.可以清晰看到整个链接TCP过程,HTTP为TCP的上层封装,
5.关键点:
1.序号代表着在这个端口上所有的请求先后关系,
2.时间轴主要分为四个部分,
1.TCP握手主要体现在SYN这个关键字上,(这个也是Keep-alive的优化重点)
2.请求响应GET,与对应的一个Ack
3.数据接收阶段
4.链接结束FIN及Ack,特别注意:客户端最后一个对FIN进行的ACK,是不计入客户端的请求耗时,
其中FIN也是Keep-alive可以优化的时间。
这里得出两个结论:
1.由于我们在线播放是频繁请求m3u8,ts文件,keep-alive可以节省前面400ms,后面300毫秒时间,也就是由现在的1.6s,降低到900ms左右,节省40%左右时间
2.m3u8文件单独线程进行与服务器同步缓存,ts向本地缓存请求,亦可大大减少时间。
简要截图如下: