iOS 底层原理39:Instruments系列(六)Network

iOS 底层原理 文章汇总

Network模块用来对一个月程序运行过程中的网络访问动作进行捕获,例如可以查看某个时间点设备的网络访问情况、数据传输量、网络类型等。主要分为两大类


Instruments_06_01.png

HTTP Traffic:HTTP流量跟踪
用于显示所有HTTP活动,每条记录都是一个URL会话

Instruments_06_02.png

还有两个过滤器,如下所示

  • 过滤器1:选择是否在跟踪中显示任务(Tasks)或事务(HTTP Transactions),默认选中task


    Instruments_06_03.png
  • 过滤器2:选择记录的排列方式


    Instruments_06_04.png
    • Sumary: Task Durations:根据session的持续时间长短进行展示
      Instruments_06_05.png
    • List: URLSession Tasks:以Session会话列表展示
      Instruments_06_06.png
    • List: HTTP Transactions:以HTTP事务列表展示
      Instruments_06_07.png

Network Connections:网络连接分析
主要用于分析网络连接的数据传输量,

Instruments_06_08.png

有一个过滤器,主要用于以何种方式排列网络连接的记录
Instruments_06_09.png

-** Summary:By Process**:以进程的统计排列捕获的网络连接
Instruments_06_10.png

- Summary:By Interface:以网络接口的类型统计展示
Instruments_06_11.png

- History:主要查看现有的所有网络连接的记录
Instruments_06_12.png

- Active Connections:目前正在使用的网络连接

原理

Instrument中的Network依赖于Apple和新框架的底层网络堆栈,所以当使用任何网络API时,都可以用其检测所有的Apple设备和通过App的HTTP流量。

从上面的介绍可以看出,每次捕获一个App,即一个进程,进程包含一个或多个NSURLSession任务,每个Task包含一组或者多个域名。所有的HTTP流量追踪+进程追踪组合成一个聚合视图,显示了运行时的任务或者处于活跃状态的事务等

任务 & 事务

  • 任务:是类似于URLSessionDataTaskURLSessionDownloadTask。通过调用resume开始,并在调用响应完后结束。一个URLSession任务有时需要几轮请求和响应
  • 事务:是指与Web服务器通信的单个实例。简单来说就是,请求+响应就是一个事务。事务是在调用resume后开始,并在调用关联完成时结束

一个事务有五种状态,分别是:缓存查找、阻塞、发送请求、等待响应和接收响应,如下所示


Instruments_06_13.png

分别对应的步骤如下:


Instruments_06_14.png
  • 建立连接
  • 执行任何缓存查找
  • 旋转一个线程
  • 发送HTTP请求
  • 等待响应时阻塞线程
  • 接收响应

在其他情况下,一个task可能会对应多个事务,例如有重定向或者URL转发时


Instruments_06_15.png

使用

  • 启动Product - Profile,选择Network,开始运行程序进行网络分析
  • 一般选择HTTP Traffic进行分析,并选择URLSession Tasks排列


    Instruments_06_16.png
  • 选中一个URLSession,并选择其中一个事务,查看其具体的展示(注:CMD + 加号 放大红框区域)


    Instruments_06_17.png

    从红框部分可以看出一个事务对应的几种状态,最后在根据下面的请求相关数据来具体分析对应的请求

参考文章

Monitoring HTTP Traffic with Instruments
Analyzing HTTP Traffic with Instruments - Apple
Choosing a Network Debugging Tool - Apple
Debugging HTTPS Problems with CFNetwork Diagnostic Logging - Apple
Advanced Network Debugging in Xcode

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容