[iOS]通信デバッグ
最近、iOS端末のパケット・キャプチャでデバッグしたので、その情報をまとめた。
Appleからの情報は、Technical Q&A QA1176 Getting a Packet Traceだ。</p>
Remote Virtual Interfaceの準備と解除の手順は以下のとおり。
# 端末の識別子を調べる。
・Macに端末をUSBで接続する。
・Xcodeを立ち上げ、Window / Devices and Simulators を選ぶ。
・端末のIdentifier: の値を選択してコピーする。
# 端末をつなぐ。
・Terminal.appで以下のコマンドを叩く。
$ rvictl -s 端末の識別子
Starting device 端末の識別子 [SUCCEEDED] with interface rvi0
# 端末を外す。
・Terminal.appで以下のコマンドを叩く。
$ rvictl -x 端末の識別子
# リモート仮想インタフェースの確認
$ ifconfig -l
lo0 gif0 stf0 XHC20 en0 p2p0 awdl0 en1 en2 bridge0 utun0 utun1 utun2 pktap0 en4 rvi0
# HTTPSのキャプチャの例。
$ sudo tcpdump port https -I rvi0
RFCからオープンとクローズのパケットの流れを抜き出す。
TCP A TCP B
1. CLOSED LISTEN
2. SYN-SENT --> <SEQ=100><CTL=SYN> --> SYN-RECEIVED
3. ESTABLISHED <-- <SEQ=300><ACK=101><CTL=SYN,ACK> <-- SYN-RECEIVED
4. ESTABLISHED --> <SEQ=101><ACK=301><CTL=ACK> --> ESTABLISHED
5. ESTABLISHED --> <SEQ=101><ACK=301><CTL=ACK><DATA> --> ESTABLISHED
Basic 3-Way Handshake for Connection Synchronization
TCP A TCP B
1. ESTABLISHED ESTABLISHED
2. (Close)
FIN-WAIT-1 --> <SEQ=100><ACK=300><CTL=FIN,ACK> --> CLOSE-WAIT
3. FIN-WAIT-2 <-- <SEQ=300><ACK=101><CTL=ACK> <-- CLOSE-WAIT
4. (Close)
TIME-WAIT <-- <SEQ=300><ACK=101><CTL=FIN,ACK> <-- LAST-ACK
5. TIME-WAIT --> <SEQ=101><ACK=301><CTL=ACK> --> CLOSED
6. (2 MSL)
CLOSED
Normal Close Sequence
【関連情報】
BUKURO.swift 2018-07
Cocoa.swift
Cocoa勉強会 関東
Cocoa練習帳
Qiita
この記事が気に入ったらサポートをしてみませんか?