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

5,928 views

Published on

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

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


自分は使えていませんでした。
しかも iPhone 5 購入直後から。

そんなお話を、2013/02/23 に横浜馬車道で開催された
yidev 横浜 iPhone 開発者勉強会でお話してきました。

せっかくの開発者のみなさんなので、
後半はネットワークの基礎についてを主軸にしつつ。

Published in: Technology
  • Be the first to comment

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

  1. 1. iPhone 5 の Wi-Fi ちゃんと動いてますか?〜 なぜか噂にもならなかった身近なお話 〜 EZ-NET 熊谷友宏 @EasyStyleGK http://program.station.ez-net.jp/
  2. 2. iPhone 5 の Wi-Fi、ちゃんと使えてましたか?自分は使えていませんでした。 しかも iPhone 5 購入直後から。
  3. 3. 新しくなった App Store を眺めていると …• 一覧が出るのに数分以上、待たされ る。• 数回に 1 度、読込が打ち切られる。きっと iPhone 5 が人気で重いんだろうな 〜
  4. 4. ちがいました。おかしいのは、自分の iPhone 5 でした。• 他のアプリでも通信エラーが発生• コネクションロストとは比較的重傷• そういえば Safari の閲覧も遅い iPhone 3GS さえ問題ないのに! iPhone 4 でも問題ないのに! iPhone 4S なら問題ないのに!
  5. 5. そういえば Wi-Fi だと全般的に遅いかも …• Wi-Fi のときに通信で異常に待たされる• 3G や LTE なら問題ないみたい
  6. 6. ping ツールで調べてみると …36 bytes from 8.8.8.8 icmp_seq=11 ttl=128 time=3ms36 bytes from 8.8.8.8 icmp_seq=12 ttl=128 time=3msRequest timeout for icmp_seq 13 実に ping パケット 70% 消失!Request timeout for icmp_seq 1436 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%
  7. 7. もしかして自分だけ?ツイッターで問いかけてみる誰も噂にもしない …インターネットで調べてみるWi-Fi の暗号化が AES だと、Wi-Fi が切断されてしまう人は居る様子 でも、今回の現象とは違うみたい
  8. 8. おっと、反応がありました。 どうかされましたか? iPhone 5 の Wi-Fi 通信で ping パケットが消失します! ping って iTunes のping サービスのことですか? ?
  9. 9. 気を取り直して … iPhone 5 で Wi-Fi 通信が できません。 同じ LAN の Windows と 通信できません。 契約しているプロバイダを教えてもらっていいですか? ? とりあえず、ありがとうございます!
  10. 10. しかし、これは困りました。 EZ-NET IP Phone iPhone をひかり電話子機にするアプリ自宅ではいつも EZ-NET IP Phone で iPhone をNTT ひかり電話の子機にして使っているので、Wi-Fi が使えないのは極めて不便です。 ※ ステルスマーケティング
  11. 11. 問題を整理してみる
  12. 12. 問題を整理すると …Wi-Fi 接続で通信エラーが多発する• Windows 7, 8 が相手だとパケット消 失 (Windows XP が相手なら正常)• NOPPHIX 5.3.1 (Kernel 2.6.24.4) も異常• Mac 相手の通信だと正常♪
  13. 13. 問題を整理すると …ルータ相手でも機種によって通信エラー• PCI MZK-RP150N だとパケット消失• FON2405E だと Wi-Fi から即切断• BUFFALO AG54 は ping がハングアップ• BUFFALO WHR-G301N だと正常• BUFFALO WHR-G300N だと正常• Apple Time Capsule 相手だと正常♪
  14. 14. 大事なことルータ相手の通信がダメなので、NAPT を使うと、その先の通信は全 滅。
  15. 15. もうひとつ大事なことこれらの障害はどれも iPhone 5 でだけ発生す る ということ。
  16. 16. パケットキャプチャで調べてみると …iPhone 5 から通信を始めるとき Windows さん、 どこに居ますか? ここにいますよ。 そちらに居ましたか。 パケット送りますね。 パケット来た! ここまでは OK !
  17. 17. パケットキャプチャで調べてみると …Windows が返信パケットを返すとき さて iPhone 5 さんに お返しのパケットを送ろう … iPhone 5 さん、 今はどこに居ますか? 今は面倒だ。 無視! あれ、居なくなってる! パケット送れない!! なんと iPhone 5 が無視を決め込む!
  18. 18. パケットキャプチャで調べてみると …でも Mac からの問いかけには iPhone 5 さん居ない。 困ったなぁ … 無視、無視。 iPhone 5 さん、居ます? !!! ここに居るよ〜! Apple 同士だと仲がいいのね。
  19. 19. 他で語られない不思議他の人でも遭遇しそうな問題なのに、 なんで騒がれていないのだろう …自分の iPhone 5 だけの不具合なのか…
  20. 20. ちがった! そんな頃合いに 我が家に訪れた iPad mini。いきなり、同じ問題が発生! iPad 1 ではこの問題は発生しないので新型 iPhone & iPad 共通の Wi-Fi の不具合では?
  21. 21. 解消方法
  22. 22. 問題の解消方法2013年1月29日までは …1. iPhone 5 を再起動する – ただし、数日後には再発2. 通信相手の ARP テーブルに iPhone 5 の MAC アドレスを登録する – NAPT ルータに登録できれば、 それ以降の通信全てを正常化可能
  23. 23. 問題の解消方法でも、これからは …iOS 6.1 にアップデートす る きっと、ただそれだけ iOS 6.1 にアップデートしたのを境に、 今のところ問題は発生していません。
  24. 24. ここからが本題 せっかくの開発者な皆様なのでもう少し踏み込んでみたいと思います。開発の役に立つかは判りませんが!
  25. 25. 知ってる人なら知ってるネットワークの基礎のおはなし
  26. 26. ping ってなに?
  27. 27. ping とは• ICMP プロトコルを使い、ネットワーク上 のある宛先に到達可能か調べる仕組み。• Echo Request を送信し、Echo Reply を受 け取ることで、到達できると判断する。• ICMP は OSI 参照モデルの第3層「ネット ワーク層」に位置するプロトコル。 言葉で語ると小難しいですが …
  28. 28. ICMP Echo Request-Replyやることはこれだけ Echo Request パケット送信 Echo Reply パケット送信• Request は IP アドレスで宛先を指定。• Reply は送信元 IP アドレスへ返信。• 送信元が Reply を受け取ったら終了。
  29. 29. ICMP Echo Request-Reply到達不能と見なされる場面 Echo Request パケット送信 しばらく待ったけど Reply ないか ら、 相手はきっとオフラインだな …• Request を送ってしばらくしても返答がな ければ、相手が落ちていると見なす。• タイムアウト制。
  30. 30. ping で判ること• 宛先から返事があるかどうか。• 普通は、返事を返してくれる約束。• ただし、返してくれない場合もある。iPhone 5 も返事を返してくれませんで した。
  31. 31. OSI 参照モデルICMP プロトコルの位置づけ的には HTTP とか い ろいろ 第7層 アプリケーション層 第6層 プレゼンテーション層 有名な TCP や UDP 第5層 セッション層 第4層 トランスポート層 IP とか ICMP 第3層 ネットワーク層 ARP とか 第2層 データリンク層 Ethernet 第1層 物理層 物理的な 配線とか
  32. 32. 実際のネットワークに照らし合わせると第4層 トランスポート層 TCP や UDP で機器に直接アクセス ソケット(IP アドレスとポート番号)で相 手を特定第3層 ネットワーク層 IP アドレスを使って相手を特定 複数のLAN を直通運転(ルーティン グ)第2層 データリンク層 MAC アドレスで相手を特定 ひとつのネットワークを形成 (LAN)第1層 物理層 機械的なネットワークのつながり 有線や無線で電気的に繋がっている
  33. 33. 階層構造のメリット 自分より下の階層は 意識しなくていい!TCP や UDP で通信するプログラムを作っていると き、MAC アドレスなんて考えたこともなかったはず。
  34. 34. 下の階層がそれ以下の通信をやってくれる きた♪ “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層
  35. 35. 実際にはもうちょっと複雑 PC PC ルーター第4層 第4層 スイッチング トランスポート層 トランスポート層 HUB第3層 第3層 第3層 ネットワーク層 ネットワーク層 ネットワーク層第2層 第2層 第2層 第2層 データリンク層 データリンク層 データリンク層 データリンク層第1層 第1層 第1層 第1層 物理層 物理層 物理層 物理層
  36. 36. ICMP は第3層の通信だから … Echo Request 送信♪ IP ネットワークの根本部分が 正常に機能しているか検証するのに役立つ第4層 第4層 トランスポート層 トランスポート層 Echo Reply しなくちゃ!第3層 第3層 第3層 ネットワーク層 ネットワーク層 ネットワーク層第2層 第2層 第2層 第2層 データリンク層 データリンク層 データリンク層 データリンク層第1層 第1層 第1層 第1層 物理層 物理層 物理層 物理層
  37. 37. ところで、この部分 … 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層
  38. 38. そこで登場するのが ARPAddress Resolution Protocol
  39. 39. ARP とは• IP アドレスを使って、それに対応する MAC アドレスを検索する仕組み• 対応する MAC アドレスを取得することで、 その機器がどこに繋がっているかが判る• OSI 第2層(データリンク層)の機能
  40. 40. やることは簡単第2層 データリンク層 この IP 持ってる あ、私だ! 人、 はい! 私に返事して! いた! 違う〜 違うなぁ• 所属する LAN 全体に、指定した IP アドレス を持っている人が居ないか尋ねる。• 指定された IP を持っている人が返事をする。
  41. 41. 居ない場合はもちろん …第2層 データリンク層 この IP 持ってる 違う〜 人、 私に返事して! いない! 違う〜 違うなぁ• しばらくしても誰も返事を返さないと、 その IP アドレスは存在しないものとされる。• タイムアウト制。
  42. 42. 今回の発端の問題もここでしたWindows が iPhone 5 を探すけれど …第2層 データリンク層あ、自分だけど、 この IP 持ってる知〜らないっと! 人、 私に返事して! いない! 違う〜 違うなぁ これではどうにもならないですね。
  43. 43. そんな致命的な不具合も … ARP ならソフトウェアの部分だから、きっと iOS のアップデートで直る日が来る はず。そう信じていたら、ついに2013年1月29日 iOS 6.1 で解消されまし た! たぶん、ですけど。
  44. 44. めでたし めでたし
  45. 45. ところで そもそも同じ LAN 内に居ない相手のMAC アドレスはどうやって探すのでしょう。
  46. 46. 答え 探しません。ディフォルトゲートウェイに丸投げします。
  47. 47. ディフォルトゲートウェイとは• IP ネットワークで、宛先が同一ネット ワークではない場合の送信先• ディフォルトゲートウェイが適切な宛先へ 転送してくれる• 通常、ディフォルトゲートウェイは 複数の LAN が乗り入れるルーターネットワーク管理者があらかじめ用意してくれてい る
  48. 48. こんなとき、ディフォルトゲートウェイ この IP に送信したいな。 あ、でも同じネットワークじゃないや … ARP で聞いても無駄だな。 ディフォルトゲートウェイさん、 転送お願い! この宛先の IP は、 ここのネットワークのアドレスだな。 承知した。 この IP 宛に パケット来てる ぞ! では送る。 私宛てだ!
  49. 49. これが無数に集まって、インターネット送信 OK!
  50. 50. ところで そもそもどうやって、その宛先が同じネットワークじゃないことを知るの?
  51. 51. 答えサブネットマスク を使います。
  52. 52. サブネットマスクとは• IP アドレスのクラスを決めるマスク値• クラスによって、IP アドレスのうちの どこまでがネットワークアドレスか決まる• ネットワークアドレス部分が同じ場合、 その IP アドレスは同じネットワークに在るネットワーク管理者があらかじめ用意してくれてい る
  53. 53. IP アドレスとは 例えば 192.168.100.129• IP ネットワークで機器を特定するアドレス• 8 ビットを 4 セットで表現する。• ネットワーク部とホスト部で構成される。• 今時は、どこがネットワーク部に当たるかは サブネットマスクによって決まる。
  54. 54. サブネットマスクとは 例えば 255.255.240.0• IP アドレスのネットワーク部とホスト部の 境目を知るのに使うマスク値• 32 ビットを通して、左から 1 が続き、ある 場所を境に、その右は全て 0 が続く。• 1 に当たるところがネットワーク部。 0 に当たるところがホスト部。
  55. 55. サブネットマスクの値 サブネットマスクの値はネットワーク構築時に既に決まっています。ネットワーク管理者があらかじめ各機器に設定する
  56. 56. サブネットマスクの使い方を見て行きます。
  57. 57. IP アドレスとサブネットマスク IP アドレス 192.168.100.129 サブネットマスク 255.255.240.0 この IP アドレスのネットワーク部とホスト部を計算してみます。
  58. 58. 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
  59. 59. これを 10 進数に整えるとネットワーク部は1100 0000 1010 1000 0110 0000 0000 0000 192 . 168 . 96 . 0 これがネットワークアドレスホスト部は0000 0000 0000 0000 0000 0100 1000 0001 1,153 これがネットワーク内でのホスト番号
  60. 60. 同一ネットワーク 同一ネットワークというのは … ネットワーク部が同じ IP アドレスのこと 自分の IP と、宛先の IP アドレスを、 自分のサブネットマスクを使って、同一ネットワークにあるかを判断しています。
  61. 61. サブネットマスクの表記 サブネットマスクには いくつかの表記方法があります。8 ビット毎の数値を記載する方法 192.168.100.129/255.255.240.0ビットが 1 になっている個数を記載する方法 192.168.100.129/20
  62. 62. こんな事柄を組み合わせながら、ネットワークは作られています。 まだまだ、 ネットワークの世界は広いですけど。
  63. 63. 今回の iPhone 5 の Wi-Fi がおかしい原因も こんな知識を使って追いかけてました。 知っておくと、いつかどこかで 何かのときに役に立つかもしれません。
  64. 64. 以上ネットワークに関する基本的な知識でした。

×