トップ «前の日記(2018-06-10) 最新 次の日記(2018-07-08)» 編集

Cocoa練習帳

iOS/iPhone/iPad/watchOS/tvOS/MacOSX/Android プログラミング, Objective-C, Cocoa, Swiftなど

2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|

2018-07-07 [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 <--   <-- SYN-RECEIVED
  4.  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  <--       <-- CLOSE-WAIT
  4.                                                       (Close)
      TIME-WAIT   <--   <-- LAST-ACK
  5.  TIME-WAIT   -->       --> CLOSED
  6.  (2 MSL)
      CLOSED
                         Normal Close Sequence

トップ «前の日記(2018-06-10) 最新 次の日記(2018-07-08)» 編集