社会基盤や企業活動などを支えるITシステム。
ITシステムにはたくさんのコンピュータがネットワークを介してつながっています。
最近では、コンピュータだけでなく、家電、ゲーム機、スマートフォンや自動車といった身近な領域でも急速にネットワーク化が進み、それらが巨大なネットワークを構成しています。
そして、ネットワーク上では、有線、無線問わず、様々なデータが流れています。
ネットワーク上に流れるデータ
ネットワークを介してデータを送るときに、大きなデータをそのまま送ると、ネットワークに負荷がかかるうえ、時間がかかって大変です。そのため、ネットワーク上では、大きなデータをパケットと呼ばれる小さな単位に分割して送信するパケット交換という手法が用いられます。
ネットワーク上に流れるパケットは、データにヘッダが付加されていきます。パケットを先頭から見ていくと、順番にすべての層のプロトコルが読み解けるようになっています。そのため、実際に流れているパケットをキャプチャ(採取)して解析すると、通信の様子を詳しく読み取ることができます。
パケット解析のすすめ
パケット解析は、ネットワーク上に流れている実データのパケットをキャプチャして、それを解析することです。
実際のパケットを採取し、通信の流れをひとつひとつ解析していきます。
解析できるようになるためには、それなりの知識を身につける必要がありますが、わかってくるとトラブルシューティングに役立ちますし、何より、ネットワークを肌で感じることができ、とても面白いです。
例えば、あるITシステムで何らかのトラブルが発生したとします。
その原因はアプリケーションの問題なのかそれともネットワークの問題なのかを切り分ける際、アプリケーションのログではイマイチ信憑性がありません。なぜなら、アプリケーションのログは人(プログラマ)がソースコードを書いたことで出力されたものだからです。コードを書く際、もし何らかのミスでログの出力内容が間違っていたら、解決どころか混乱を招くだけです。
その点、パケットは正直です。実際にネットワークを流れた素のパケットには事実しかなく、間違いはありません。
私も実際に経験がありますが、あるトラブルが発生したとき、プログラマはアプリケーションの問題ではなく、インフラの問題なのでは「早く何とかしろよ」と上からの物言いで迫られたことがあります。その後、事象を再現させ、キャプチャしたパケットを見せてやることで、一瞬で黙らせることができたということがあります。
つまり何が言いたいかと言うとパケットを解析するということは、どんなベテランのエンジニアに対しても、疑いを一瞬で晴らす決め手となる証拠を発見できるということです。
パケット解析の方法
では、パケット解析はどのように行えば良いのでしょう。
まず、必要なのがパケットキャプチャソフトです。
LANアナライザやネットワークアナライザ、プロトコルアナライザとも呼ばれます。
種類も豊富で、無料のものでは、WiresharkやMicrosoft Network Monitorなどがあります。
本サイトでは最もメジャーなパケットキャプチャソフトであると言えるWiresharkの機能や使い方を紹介してきながら、パケット解析とはどのようなものなかを詳しく見ていきます。
本サイトの構成
本サイトでは、Wiresharkを使用したパケットキャプチャの取得方法や解析方法を見ていく前に、ネットワークについての基本的な内容から解説しています。キャプチャしたパケットを解析するには、ネットワークに関する知識は必要不可欠です。まずはそこからおさえていきましょう。