美文网首页
使用WireShark 调试真机网络

使用WireShark 调试真机网络

作者: action爱生活 | 来源:发表于2018-03-22 14:50 被阅读47次

    使用WireShark 调试真机网络

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

      1. 获取iPhone的UDID


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

      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 调试真机网络

          本文链接:https://www.haomeiwen.com/subject/xvyaqftx.html