Swift
bukuroswift
cocoastudy

[iOS]通信デバッグ

最近、iOS端末のパケット・キャプチャでデバッグしたので、その情報をまとめた。

Appleからの情報は、Technical Q&A QA1176 Getting a Packet Traceだ。

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 --> --> SYN-RECEIVED
3. ESTABLISHED --> ESTABLISHED
5. ESTABLISHED --> --> ESTABLISHED
Basic 3-Way Handshake for Connection Synchronization

      TCP A                                                TCP B

1. ESTABLISHED ESTABLISHED
2. (Close)
FIN-WAIT-1 --> --> CLOSE-WAIT
3. FIN-WAIT-2 --> CLOSED
6. (2 MSL)
CLOSED
Normal Close Sequence

【関連情報】

BUKURO.swift 2018-07


Cocoa.swift


Cocoa勉強会 関東


Cocoa練習帳


Qiita