使用WireShark 调试真机网络

使用WireShark 调试真机网络

需求:调试UIWebView加载缓慢问题

    1. 获取iPhone的UDID


      image.png
  • 2:根据获取的 UDID 创建一个虚拟的网卡
    rvictl -s

    image.png

通过 ifconfig 可以看到多了一个 rvi0接口
通过 rvictl -l 命令可以列出所有挂接的虚拟接口

  • 3: 在 Wireshark 首页选择 rvi0,使用默认的 Capture Options 即可开始对 iPhone 进行抓包。


    image.png

其中 iPhone 手机连接 WiFi 动态获取的 IP 地址为 192.168.100.1。

黑色的内容表示遇到错误,需要重点关注
关闭wifi,可以抓取移动网络数据包

-4 : 使用rvictl -x命令删除虚拟接口, 使用 iPhone 的 UDID 作为参数。

WireShark 抓包技巧

  • 第一步:找到请求网址的 IP 地址
    方法一:用ping命令得到对应的IP地址(可能不对,此时要用方法二)


    image.png

方法二:使用DNS包来确定IP地址

注意手机上 DNS 解析的结果并不总是和电脑上的解析结果一致。这种情况下我们可以通过查看 DNS 数据包来确定
DNS 是基于 UDP 的协议,不会有 TCP 重传

image.png
  • 第二步:过滤 IP 地址


    image.png
  • 第三步:确定端口号


    image.png

注意红框中的 SourcePort,这是客户端端口。我们知道 HTTP 支持并发请求,不同的并发请求肯定是占用不同的端口。所以在图中看到的上下两个数据包,并非一定是请求与响应的关系,他们可能属于两个不同的端口,彼此之间毫无关系,只是恰好在时间上最接近而已。

如果只想显示某个端口的数据,可以使用:

ip.addr == 220.194.203.68 and tcp.dstport == 52914

如果只想看 HTTP 协议的 GET 请求与响应,可以使用

``ip.addr == 220.194.203.68 and (http.request.method == "GET" || http.response.code == 200)来过滤。

如果想看丢包方面的数据,可以用

ip.addr == 220.194.203.68 and (tcp.analysis.fast_retransmission || tcp.analysis.retransmission)

# 参考

http://ios.jobbole.com/93159/

http://blog.csdn.net/phunxm/article/details/38590561

你可能感兴趣的:(使用WireShark 调试真机网络)