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가 표시된다.


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
- Request
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
반응형