iOS/Instruments

[Instruments 맛보기] HTTP 트래픽 분석

Hamp 2025. 9. 20. 23:09
반응형

🏁 학습할 내용기본 개념

  • Task와 Transaction 차이
  • Tool Tip

🤷 Task와 Transaction 차이

 

🔨 Task

  • Task는 URL 로딩 시스템의 API 상호작용 방식을 나타낸다.
  • Task는 하나 이상의 트랜잭션으로 구성된다.
  • resume이 호출되면 작업 interval이 실행된다.
  • taskDescription을 이용해, 의미적 이름을 지정할 수 있으며, Instruments Interval 레이블에 붙는다.
  • taskIdentifier를 속성을 이용해, 작업 식별자를 표시할 수 있다.
  • error로 끝날 시, 레이블에 디버깅에 유리하게 error가 표시된다.

[taskIdentifier] taskDescription

 

Task가 여러개의 Transaction으로 구성된 이유

  • 대표적인 예가, redirect가 될 때
  • 예를 들어 apple.com으로 접속을 시도할 때, 
  • appl.com에서 , 301 redirect응답을 반환하면, 바로 https://www.apple.com/으로 tofhdns Transaction생성
  • 이게 하나의 Task, 최종 Task 응답은 https://www.apple.com의 응답

 

✈️ Transaction

  • HTTP 요청과 응답의 조합
  • URLSesion이 작업을 처리하기 위해 내부적으로 수행되는 작업
  • 요청된 URL, 전송된 데이터 정보 등 HTTP 계층의 모든 정보를 포함
  • Task와 마찬가지로, Label에 디버깅에 필요한 다양한 정보가 표시됨
    • Request
      • Query
      • Path
      • HTTP Version
      • HTTP Method
      • HasAuthorization header (소유 여부)
      • HasCookieHeader (소유 여부)
    • Respnose
      • Status Code
      • HasCookie
      • Content-Type

 

Transaction State

 

1. Start

  • URL  로딩 시스템이 요청을 생성하기위한, 트랜잭션 생성 시점
  • 유효한 캐시된 응답이 있는 지확인
  • 그렇지 않으면 연결을 통해 요청 스케쥴링 시도

2. Blocked

  • 연결을 기다리며, 기다리는 상태

3. Sending Request

  • 요청을 전송하는 상태
  • 요청의 첫 바이트 전송을 시작한 후, 요청의 마지막 바이트를 전송하면 종료되는 상태

4. Wating for Respnose

  • 응답 도착까지 대기 상태

5. Receiving Respnose

  • 마지막 상태
  • 마찬가지로, 서버로부터, 응답의 첫 바이트 ~ 마지막 바이트 까지 받을 때 종료됨 (시간 추적)

마지막 수신 바이트를 수신 ㅎ, 해당 바이트가 성공인지 실패인지 판단 후, 트랜잭션이 완료됨

 

실제로, GET 요청의 캐시 조회 및 전송 상태는 일반적으로 훨씬 짧기 때문에, 아래와 같이 표시될 수 있음


🧰 Tool 관련 몇 가지 Tip

 

Track Display 변경하기

  • Task를 보다가, Transaction만 보고 싶다면, Domain Name 아래 화살표를 눌러 바꿔줄 수 있다.

 

Track 보기

  • Transaction은 Connection별로 그룹화 되어있다.

출처

https://developer.apple.com/videos/play/wwdc2021/10212

 

Analyze HTTP traffic in Instruments - WWDC21 - Videos - Apple Developer

Learn to use the Instruments Network template to record and analyze your app's HTTP traffic. We'll show you how to explore and visualize...

developer.apple.com

 

반응형