ホームネットワークの解析ツール(3)
− Wiresharkで通信手順(プロトコル)を解析 −

ホームネットワーク(家庭内LAN)やインターネットでは通信データを間違いなく送信/受信するために通信手順 (プロトコル)が決められており、代表的なプロトコルとしてはTCP/IPやUDP/IPなどが使われています。 また、データを送り出すサーバ装置とデータを受信するクライアント装置(パソコン等)の間ではHTTPなどのプロトコルを用いて、 動画・画像・音楽などのコンテンツのやり取りが行われます。 動画共有サイトへ動画ファイルをアップロードする場合などは、FTPというプロトコルが使われます。
また、ホームネットワークで使われている機器間相互接続方式のDLNAは、 HTTPやTCP/IPなどの各種プロトコルを組み合わせて構成されており、 接続機器やコンテンツを自動認識して、コンテンツを確実に通信できるようにしています。
従って、通信されている情報の内容を調べることができれば、 どのようなプロトコルを使ってどのようなデータが通信されているかを知ることができ、 機器がつながらないとかコンテンツが再生できないなどのトラブルの原因を探るのに役立ちます。

ホームネットワークにおける通信手順やデータの内容を調べることができる代表的な解析用ソフトウェアとしてはフリーソフトの 「Wireshark」(旧名 Ethereal)があります。Wiresharkは「ネットワークプロトコルアナライザー」や 「パケットキャプチャ」などと呼ばれており、ネットワーク内で通信されている生のデータ(パケット) を取り込んで(キャプチャして)その内容を解析することができます。
各種OSに対応したバージョンが用意されており、様々なプロトコルに対応していることや、 使いやすいGUI(Graphical User Interface)が使えるなどの特徴があり、 大規模なネットワークから家庭内のネットワークまで幅広く利用されています。

また、無線LANの電波を受信して、無線LAN上の通信プロトコルを解析できるソフトとしては、例えば、 OmniPeek(製品)があります。 どの周波数の電波が利用されているかなどの情報も同時に知ることができ、 無線LANの実効速度が上がらない場合の原因解析なども行うことができます。

以下では、Wiresharkを使用して通信パケットをキャプチャし、その内容を解析する方法について紹介していきます。

  • Wiresharkのダウンロードとインストール
  • Wiresharkで通信パケットをキャプチャする
  • キャプチャした通信パケットをWiresharkで解析する方法

Wiresharkで解析する具体的な事例としては、DLNA対応のNAS(LAN接続HDD)に保存されているMP4動画をパソコン内のコンテンツ再生ソフト 「PowerDVD 12」を用いて再生・視聴した場合を取り上げて、Filter、IO Graphs、 Follow TCP Streamなどの機能を利用した各種解析方法を紹介します。





Wiresharkのダウンロードとインストール

WiresharkのダウンロードはWiresharkプロジェクトのサイトから行えます。 各種OS用のバージョンが用意されており、Windows版やMac版もあります。
Windows版では以下に掲載したようなウィザード(図1)が用意されているので、 画面の指示に従って行えば問題なくインストールできます。
また、インストールの途中で、「WinPcap」のインストールウィザード(図2)が表示されますので、これも指示に従ってインストールしておきます。
なお、これらのソフトウェアは2013年1月現在の最新バージョンです。


図1 Wiresharkのインストール開始画面

Wiresharkのインストール開始画面


図2 WinPcapのインストール開始画面

WinPcapのインストール開始画面




Wiresharkで通信パケットをキャプチャする

Wireshark(バージョン1.8.4)を起動すると以下のような初期画面(図3)が表示されますので、次の手順でパケットのキャプチャを行います。

  1. ネットワークインターフェース(LANカード)を選ぶ。
  2. 「Start」をクリックして、キャプチャを開始する。
  3. キャプチャ画面が表示され、パケットをキャプチャしている様子が表示される。
  4. 必要なパケットがキャプチャできたら、「Stop」をクリックしてキャプチャを終了する。
  5. キャプチャデータを保存するには、「Save」をクリックしてパソコン内に保存する。

ネットワークインターフェースは、初期画面の『Capture』をクリックした時にプルダウン表示される項目の中から「Interface」 を選ぶと、以下のような選択画面(図4)が表示されます。
この中で、Packetsの数値が増加しているのが使用しているLANインターフェースなので、 この部分にチェックマークを入れてから「Start」をクリックするとキャプチャが開始されます。

キャプチャが開始されると、図5のようなキャプチャ画面に変わり、 キャプチャしているパケットデータがほぼリアルタイムで表示され続けます。
キャプチャ画面は3段に分かれており、上から順に

  • パケット通信(フレーム単位)の時間変化をフレームNo.順に表示。
  • 各フレーム毎の詳細項目
  • 各項目のデータ内容(16進法により表示)

となっています。
また、Sourceはパケットデータを送信している機器のIPアドレスを、 Destinationはパケットデータを受信している機器のIPアドレスを示しています。Lengthがパケットデータのバイト数です。

キャプチャを停止するには、『Capture』をクリックした時に表示される項目の中から「Stop」を選びます。
キャプチャデータの保存は、『File』をクリックした時にプルダウン表示される「Save」を選びます。

図3 Wiresharkの初期画面

Wiresharkの起動画面


図4 インターフェース(LANカード)の選択画面

インターフェース(LANカード)の選択画面


図5 Wiresharkのキャプチャ画面(全てのキャプチャデータが表示され続ける)

Wiresharkのキャプチャ画面(全てのキャプチャデータを表示)




パケットデータの内容をWiresharkで解析する

Wiresharkでキャプチャしたパケットデータは、Wiresharkがインストールされているパソコンに入ってくるパケットと、 出ていくパケットを全て含んでいます。つまり、図5に示したキャプチャ画面の中にはインターネットを介した通信内容や、 ホームネットワーク内の各機器とのやり取りなどのデータが時間経過に沿って混在して表示されています。
従って、具体的に解析を行なっていくには、Wiresharkが備えている機能を使用して、 様々な情報の中から必要な情報を抜き出してから通信内容を調べていく必要があります。

以下では、Wiresharkを起動した後に、パソコンにインストールしてあるDLNA対応ソフトウェア 「PowerDVD 12」を起動して、 DLNA対応のNASに保存してある動画ファイル(MP4)を再生する場合を取り上げ、 どのようなデータがやり取りされているかを調べるのに必要な解析操作を順に説明していきます。 図5に示したキャプチャ画面は、このようなケースについてキャプチャしたデータなので、 この画面の中からパソコンとNAS間の通信データだけを抽出して、その内容を調べていきます。


(1)「Filter」を利用して、パソコンとNAS間の通信データだけを表示する
パソコンのIPアドレスは「192.168.12.14」、NASのIPアドレスは「192.168.12.13」となっているので、 図5に示したキャプチャ画面の中の「Filer」部分に
ip.addr eq 192.168.12.14 and ip.addr eq 192.168.12.13
と入力して、 ApplyをクリックするとパソコンとNAS間の通信パケットデータだけを表示することができます。
この表示結果を以下に掲載しました(図6)。Sourceはパケットデータを送信している機器のIPアドレスを示しており、 Destinationはパケットデータを受信している機器のIPアドレスです。

図6 パソコンとNAS間のキャプチャデータだけを表示

パソコンとNAS間のキャプチャデータだけを表示



(2)「IO Graphs」を利用して、パソコンとNAS間の通信パケット量を表示する
『Statistics』をクリックしてプルダウン表示される項目の中から「IO Graphs」を選ぶと、 通信されているパケット量の時間変化を表す画面が表示されます(図7)。
図7では、パソコンとNAS間の通信パケット量だけを表示するために、画面の中の「Filer」部分に
ip.addr eq 192.168.12.14 and ip.addr eq 192.168.12.13
と入力してあります。なお、赤色で表示するためにGraph 2の「Filter」部分に入力して「Graph 2」をクリックしました。
Wiresharkを起動してから約53秒後(53s)と約95秒の間に大量のパケットが送られているので、 この部分でMP4動画がNASからパソコンに送出されていることが分かります。

図7 パソコンとNAS間の通信パケット量の時間変化

パソコンとNAS間のパケット速度変化



(3)パソコンとNAS間の通信パケット量の時間変化を拡大表示する
MP4動画が送出される前のパケット量の時間変化を表示するために、縦軸(Y Axis)のScaleを変えて拡大したのが図8です。
53sよりも前に、まとまったパケットデータが何度か送られているので、この部分について次に調べていきます。

図8 パソコンとNAS間の通信パケット量の時間変化(縦軸を拡大した場合)

パソコンとNAS間の通信パケット量の時間変化(縦軸を拡大した場合)



(4)通信パケットの内容を「Follow TCP Stream」で解析する(動画タイトル)
TCP通信では、次のような一連のやり取りでデータパケットが送られます。
 [SYN]
 [SYN, ACK]
 [ACK]
 [PSH, ACK]
 [ACK]
 [FIN]
そこで、MP4動画を送出する直前に送られているパケットの内容を調べるために、Infoの中から53sより前の[SYN]を見つけてクリックします。 この状態で『Analyze』のプルダウン表示の中から「Follow TCP Stream」を選ぶと、TCP通信の内容が図9のように表示され、 更に、別の画面で詳細内容が図10のように表示されます。

図10では、前半の茶色の部分がパソコンからNASに対して要求した情報を示しており、 後半の青色の部分がNASからパソコンに返した情報を示しています。
パソコン(User-Agent)のOSはWindowsで、DLNA1.5、UPnP1.0に対応しており、 NAS(Server)のOSはLinuxで、UPnP1.0に対応してDiXiM3.0を採用していることがわかります。 DiXiMはデジオン社が提供しているDLNA対応の組み込みソフトの名称です。
また、動画フォルダ内のタイトルデータが全てNASからパソコンに送られていることが分かります。 下部のアンダーライン部分が1番目のタイトル名ですが、日本語表記のため文字化けを起こしています。

図9 TCP通信の一連の流れを表示

TCP通信の一連の流れ


図10 TCP通信で送信されたデータ情報

TCP通信で送信されたデータ情報



(5)通信パケットの内容を「Follow TCP Stream」で解析する(動画ファイル)
約53sから送出されているMP4動画のTCP通信について調べるために、 最初の[SYN]のフレーム(No.1583、Time 53.18)をクリックして、 「Follow TCP Stream」を選ぶと、図11のようなTCP通信のやり取りが表示され、 別画面には図12のような詳細内容が表示されます。
図11では、53.18秒に開始されたパソコン(192.168.12.14)からの要求に対して、 NASがMP4動画を1514バイトのパケットに分割して連続的に送出していることが分かります。
図12では、MP4動画をDLNAに対応したストリーミングで送出するようにNASに要求して、 NASが341716086バイト(341MB)の動画を送出していることが分かります。

図11 MP4動画をTCP通信で送信

MP4動画をTCP通信で送信


図12 NASからパソコンに送られたMP4動画のデータ情報

NASからパソコンに送られたMP4動画のデータ情報