狠狠撸

狠狠撸Share a Scribd company logo
iPhone 5 の Wi-Fi
  ちゃんと動いてますか?

? なぜか噂にもならなかった身近なお話 ?



            EZ-NET 熊谷友宏 @EasyStyleGK
               http://program.station.ez-net.jp/
iPhone 5 の Wi-Fi、ちゃんと使えてましたか?




自分は使えていませんでした。




    しかも iPhone 5 購入直後から。
新しくなった App Store を眺めていると …




? 一覧が出るのに数分以上、待たされ
  る。
? 数回に 1 度、読込が打ち切られる。




きっと iPhone 5 が人気で重いんだろうな
                       ?
ちがいました。


おかしいのは、自分の iPhone 5 でした。

? 他のアプリでも通信エラーが発生
? コネクションロストとは比較的重傷
? そういえば Safari の閲覧も遅い



    iPhone 3GS さえ問題ないのに!
       iPhone 4 でも問題ないのに!
      iPhone 4S なら問題ないのに!
そういえば Wi-Fi だと全般的に遅いかも …




? Wi-Fi のときに通信で異常に待たされる
? 3G や LTE なら問題ないみたい
ping ツールで調べてみると …



36 bytes from 8.8.8.8 icmp_seq=11 ttl=128 time=3ms
36 bytes from 8.8.8.8 icmp_seq=12 ttl=128 time=3ms
Request timeout for icmp_seq 13
  実に ping パケット 70% 消失!
Request timeout for icmp_seq 14
36 bytes from 8.8.8.8※ ただし ttl=128 time=3ms
                      icmp_seq=15 Wi-Fi に限る
Request timeout for icmp_seq 16
              :
              :

--- 8.8.8.8 ping statistics ---
578 packets transmitted, 178 packets received, lost 69.3%
もしかして自分だけ?


ツイッターで問いかけてみる
誰も噂にもしない …


インターネットで調べてみる

Wi-Fi の暗号化が AES だと、
Wi-Fi が切断されてしまう人は居る様
子
  でも、今回の現象とは違うみたい
おっと、反応がありました。


  どうかされましたか?



           iPhone 5 の Wi-Fi 通信で
        ping パケットが消失します!



     ping って iTunes の
ping サービスのことですか?



                  ?
気を取り直して …


      iPhone 5 で Wi-Fi 通信が
           できません。


      同じ LAN の Windows と
       通信できません。


 契約しているプロバイダを
教えてもらっていいですか?



               ?



  とりあえず、ありがとうございます!
しかし、これは困りました。




   EZ-NET IP Phone
   iPhone をひかり電話子機にするアプリ

自宅ではいつも EZ-NET IP Phone で iPhone を
NTT ひかり電話の子機にして使っているの
で、
Wi-Fi が使えないのは極めて不便です。


         ※ ステルスマーケティング
问题を整理してみる
問題を整理すると …


Wi-Fi 接続で通信エラーが多発する


? Windows 7, 8 が相手だとパケット消
  失
  (Windows XP が相手なら正常)
? NOPPHIX 5.3.1 (Kernel 2.6.24.4) も異常
? Mac 相手の通信だと正常?
問題を整理すると …


ルータ相手でも機種によって通信エ
ラー
? PCI MZK-RP150N だとパケット消失
? FON2405E だと Wi-Fi から即切断
? BUFFALO AG54 は ping がハングアップ

? BUFFALO WHR-G301N だと正常
? BUFFALO WHR-G300N だと正常
? Apple Time Capsule 相手だと正常?
大事なこと




ルータ相手の通信がダメなので、
NAPT を使うと、その先の通信は全
         灭。
もうひとつ大事なこと



これらの障害は



どれも iPhone 5 でだけ発生す
          る


             ということ。
パケットキャプチャで調べてみると …

iPhone 5 から通信を始めるとき
      Windows さん、
      どこに居ますか?


              ここにいますよ。


     そちらに居ましたか。
     パケット送りますね。




              パケット来た!


                    ここまでは OK !
パケットキャプチャで調べてみると …

Windows が返信パケットを返すとき
          さて iPhone 5 さんに
        お返しのパケットを送ろう …


           iPhone 5 さん、
         今はどこに居ますか?


      今は面倒だ。
        無視!



         あれ、居なくなってる!
         パケット送れない!!


 なんと iPhone 5 が無視を決め込む!
パケットキャプチャで調べてみると …

でも Mac からの問いかけには
         iPhone 5 さん居ない。
             困ったなぁ …


      無視、無視。




         iPhone 5 さん、居ます?


         !!!
     ここに居るよ?!



   Apple 同士だと仲がいいのね。
他で語られない不思議



他の人でも遭遇しそうな問題なのに、
 なんで騒がれていないのだろう …




自分の iPhone 5 だけの不具合なのか…
ちがった!


       そんな頃合いに
     我が家に訪れた iPad mini。


いきなり、同じ問題が発生!



   iPad 1 ではこの問題は発生しないので
新型 iPhone & iPad 共通の Wi-Fi の不具合では?
解消方法
問題の解消方法


2013年1月29日までは …


1. iPhone 5 を再起動する
 – ただし、数日後には再発
2. 通信相手の ARP テーブルに
   iPhone 5 の MAC アドレスを登録する
 – NAPT ルータに登録できれば、
   それ以降の通信全てを正常化可能
問題の解消方法


でも、これからは …



iOS 6.1 にアップデートす
          る
      きっと、ただそれだけ


  iOS 6.1 にアップデートしたのを境に、
  今のところ問題は発生していません。
ここからが本題

  せっかくの開発者な皆様なので
もう少し踏み込んでみたいと思います。

開発の役に立つかは判りませんが!
知ってる人なら知ってる
ネットワークの基礎のおはなし
ping ってなに?
ping とは



? ICMP プロトコルを使い、ネットワーク上
  のある宛先に到達可能か調べる仕組み。
? Echo Request を送信し、Echo Reply を受
  け取ることで、到達できると判断する。
? ICMP は OSI 参照モデルの第3層「ネット
  ワーク層」に位置するプロトコル。




      言葉で語ると小難しいですが …
ICMP Echo Request-Reply

やることはこれだけ
      Echo Request
      パケット送信




                      Echo Reply
                     パケット送信



? Request は IP アドレスで宛先を指定。
? Reply は送信元 IP アドレスへ返信。
? 送信元が Reply を受け取ったら終了。
ICMP Echo Request-Reply

到達不能と見なされる場面
       Echo Request
       パケット送信




 しばらく待ったけど Reply ないか
       ら、
 相手はきっとオフラインだな …

? Request を送ってしばらくしても返答がな
  ければ、相手が落ちていると見なす。
? タイムアウト制。
ping で判ること



? 宛先から返事があるかどうか。
? 普通は、返事を返してくれる約束。
? ただし、返してくれない場合もある。




iPhone 5 も返事を返してくれませんで
            した。
OSI 参照モデル

ICMP プロトコルの位置づけ的には
   HTTP とか い
     ろいろ
                    第7層 アプリケーション層

                    第6層 プレゼンテーション層
     有名な
   TCP や UDP
                    第5層 セッション層

                    第4層 トランスポート層
   IP とか ICMP
                    第3層 ネットワーク層

    ARP とか          第2層 データリンク層
    Ethernet
                    第1層 物理層
    物理的な
    配線とか
実際のネットワークに照らし合わせると

第4層   トランスポート層   TCP や UDP で機器に直接アクセス
                 ソケット(IP アドレスとポート番号)で相
                 手を特定


第3層   ネットワーク層    IP アドレスを使って相手を特定
                 複数のLAN を直通運転(ルーティン
                 グ)


第2層   データリンク層    MAC アドレスで相手を特定
                 ひとつのネットワークを形成
                 (LAN)


第1層   物理層        機械的なネットワークのつながり
                 有線や無線で電気的に繋がっている
阶层构造のメリット




   自分より下の階層は
   意識しなくていい!


TCP や UDP で通信するプログラムを作っていると
                         き、
MAC アドレスなんて考えたこともなかったはず。
下の阶层がそれ以下の通信をやってくれる
                                                                              きた?
               “192.168.1.11” さんの
          “80” 番ポートへアクセスしよう …

                   IP: 192.168.1.11
                   Port: 80                            IP:      192.168.1.1
                                                     MAC: 8C-7B-9D-34-53-32
        この宛先へ                                                         このソケット宛に
        送信お願い!                                                        荷物届きましたよ。

第4層   トランスポート層                                                  第4層
                        Port: 80
                        IP: 192.168.1.11
       この IP へ                                                         この IP 宛に
      送信お願い!                                                          荷物届きましたよ。
                               この IP アドレスは
                             あっちの LAN に居るのか …
第3層   ネットワーク層                                                   第3層

    自分より下の階層の動きを
       この IP へ
      送信お願い!
                        この IP は…
                 あの MAC の機器が持ってるのか …

   知らなくて済むのがメリット
                                                                      あ、うちの
                 Mac アドレスのタグをつけて…と。
                                                                      MAC 宛だ!

第2層 データリンク層   第2層
                             Port: 80
                             IP: MAC: 8C-7B-9D-34-53-32
                                   192.168.1.11
      電送お願い!                                                           あ、
                                                                      何か来た!

第1層    物理層                                 電送!                  第1層
実际にはもうちょっと复雑

            PC                                   PC


                        ルーター



第4層                                       第4層
                               スイッチング
 トランスポート層                                  トランスポート層
                                 HUB




第3層              第3層                      第3層
 ネットワーク層          ネットワーク層                  ネットワーク層




第2層              第2層           第2層        第2層
 データリンク層          データリンク層       データリンク層    データリンク層




第1層              第1層           第1層        第1層
 物理層              物理層           物理層        物理層
ICMP は第3層の通信だから …

           Echo Request
              送信?




    IP ネットワークの根本部分が
 正常に機能しているか検証するのに役立つ
第4層                第4層
 トランスポート層                                   トランスポート層
                                   Echo Reply
                                   しなくちゃ!


第3層              第3層                      第3層
 ネットワーク層          ネットワーク層                  ネットワーク層




第2層              第2層        第2層            第2層
 データリンク層          データリンク層    データリンク層        データリンク層




第1層              第1層        第1層            第1層
 物理層              物理層        物理層            物理層
ところで、この部分 …

                IP: 192.168.1.11
                Port: 80                 IP:      192.168.1.1
                                       MAC: 8C-7B-9D-34-53-32
       この宛先へ
       送信お願い!


第4層なぜ、IP を指定するだけなのに、
    トランスポート層       第4層

第2層で MAC アドレスが判るのでしょう。
第3層   ネットワーク層                                     第3層

                        この IP は …
                 あの MAC の機器が持ってるのか …
                 Mac アドレスのタグをつけて…と。

第2層   データリンク層                                     第2層




第1層   物理層                                         第1層
そこで登场するのが

         ARP
Address Resolution Protocol
ARP とは



? IP アドレスを使って、それに対応する
  MAC アドレスを検索する仕組み
? 対応する MAC アドレスを取得することで、
  その機器がどこに繋がっているかが判る
? OSI 第2層(データリンク層)の機能
やることは簡単
第2層 データリンク層

                     この IP 持ってる
 あ、私だ!                   人、
     はい!             私に返事して!
                            いた!




               違う?       違うなぁ


? 所属する LAN 全体に、指定した IP アドレス
  を持っている人が居ないか尋ねる。
? 指定された IP を持っている人が返事をする。
居ない場合はもちろん …
第2層 データリンク層

                    この IP 持ってる
  違う?                   人、
                    私に返事して!
                          いない!




              違う?      違うなぁ


? しばらくしても誰も返事を返さないと、
  その IP アドレスは存在しないものとされる。
? タイムアウト制。
今回の発端の問題もここでした

Windows が iPhone 5 を探すけれど …
第2層 データリンク層

あ、自分だけど、            この IP 持ってる
知?らないっと!                人、
                    私に返事して!
                          いない!




              違う?      違うなぁ



  これではどうにもならないですね。
そんな致命的な不具合も …


 ARP ならソフトウェアの部分だから、
きっと iOS のアップデートで直る日が来る
           はず。

そう信じていたら、ついに2013年1月
29日

 iOS 6.1 で解消されまし
          た!
           たぶん、ですけど。
めでたし めでたし
ところで

   そもそも同じ LAN 内に居ない相手の
MAC アドレスはどうやって探すのでしょう。
答え

       探しません。
ディフォルトゲートウェイに丸投げします。
ディフォルトゲートウェイとは



? IP ネットワークで、宛先が同一ネット
  ワークではない場合の送信先
? ディフォルトゲートウェイが適切な宛先へ
  転送してくれる
? 通常、ディフォルトゲートウェイは
  複数の LAN が乗り入れるルーター




ネットワーク管理者があらかじめ用意してくれてい
                      る
こんなとき、ディフォルトゲートウェイ

 この IP に送信したいな。
 あ、でも同じネットワークじゃないや …
 ARP で聞いても無駄だな。



  ディフォルトゲートウェイさん、
      転送お願い!


                      この宛先の IP は、
                  ここのネットワークのアドレスだな。

  承知した。
                   この IP 宛に
                  パケット来てる
                     ぞ!
          では送る。

                              私宛てだ!
これが無数に集まって、インターネット

送信




                  OK!
ところで

  そもそもどうやって、その宛先が
同じネットワークじゃないことを知るの?
答え

サブネットマスク
 を使います。
サブネットマスクとは



? IP アドレスのクラスを決めるマスク値
? クラスによって、IP アドレスのうちの
  どこまでがネットワークアドレスか決まる
? ネットワークアドレス部分が同じ場合、
  その IP アドレスは同じネットワークに在る




ネットワーク管理者があらかじめ用意してくれてい
                      る
IP アドレスとは



             例えば

        192.168.100.129


?   IP ネットワークで機器を特定するアドレス
?   8 ビットを 4 セットで表現する。
?   ネットワーク部とホスト部で構成される。
?   今時は、どこがネットワーク部に当たるかは
    サブネットマスクによって決まる。
サブネットマスクとは



           例えば

       255.255.240.0

? IP アドレスのネットワーク部とホスト部の
  境目を知るのに使うマスク値
? 32 ビットを通して、左から 1 が続き、ある
  場所を境に、その右は全て 0 が続く。
? 1 に当たるところがネットワーク部。
  0 に当たるところがホスト部。
サブネットマスクの値




    サブネットマスクの値は
ネットワーク構築時に既に決まっています。




ネットワーク管理者があらかじめ各機器に設定する
サブネットマスクの
使い方を見て行きます。
IP アドレスとサブネットマスク



        IP アドレス

    192.168.100.129
      サブネットマスク

     255.255.240.0


      この IP アドレスの
ネットワーク部とホスト部を計算してみます。
IP アドレスを2進数に直すと


IP アドレス 192.168.100.129 は …
 1100 0000 1010 1000 0110 0100 1000 0001

サブネットマスク 255.255.240.0 は …
 1111 1111 1111 1111 1111 0000 0000 0000

       ここがネットワーク部             ここがホスト部



ネットワーク部は        (マスクビット 0 の部分を 0 で埋めて)
 1100 0000 1010 1000 0110 0000 0000 0000
ホスト部は          (マスクビット 1 の部分を 0 で埋めて)
 0000 0000 0000 0000 0000 0100 1000 0001
これを 10 進数に整えると


ネットワーク部は
1100 0000 1010 1000 0110 0000 0000 0000
  192   .     168   .   96   .       0
                    これがネットワークアドレス

ホスト部は
0000 0000 0000 0000 0000 0100 1000 0001

                             1,153
            これがネットワーク内でのホスト番号
同一ネットワーク

 同一ネットワークというのは …



   ネットワーク部が同じ
    IP アドレスのこと


  自分の IP と、宛先の IP アドレスを、
   自分のサブネットマスクを使って、
同一ネットワークにあるかを判断しています。
サブネットマスクの表记


     サブネットマスクには
   いくつかの表記方法があります。


8 ビット毎の数値を記載する方法

 192.168.100.129/255.255.240.0


ビットが 1 になっている個数を記載する方法

 192.168.100.129/20
こんな事柄を組み合わせながら、
ネットワークは作られています。



       まだまだ、
 ネットワークの世界は広いですけど。
今回の iPhone 5 の Wi-Fi がおかしい原因も
 こんな知識を使って追いかけてました。




     知っておくと、いつかどこかで
   何かのときに役に立つかもしれません。
以上
ネットワークに関する
基本的な知識でした。

More Related Content

iPhone 5 の Wi-Fi ちゃんと動いてましたか? #yidev