データ通信の仕組みについて見ていきます。
データ通信においては、送受信したいデータを
パケット
という単位に小分けして、ノード間でデータのやり取りをします。
パケットという言葉の由来は、英語の「小荷物」を語源とします
というわけで、データ通信を、宅急便で荷物を送る場合にたとえて考えて見ましょう。
まず、送りたい荷物がありますね。今回はりんごにしましょう。
りんご
が
データ
に相当します。
さて、ところで、皆さんは、生のままりんご(データ)は送りませんよね。
ダンボール箱など荷物の箱詰めしますよね?
このダンボール箱の
大きさ
が
パケット
に相当します。一個のダンボール(パケット)で送れなければ、
もう一個のダンボール(パケット)を用意してそちらに箱詰めします。
りんごの箱詰めが終わったら、送り先と自分の連絡先を書いた、
送付状
をダンボールに張りますよね。
この
送付状
が、
ヘッダ情報
と呼ばれるものに相当します。ヘッダ情報については、後ほど。。。。。
送付状(ヘッダ情報)も書いたら、後は宅配業者の人にダンボール(パケット)を渡してあげれば、 送り先にりんご(データ)が届きます。
(出所) http://www.keyman.or.jp/3w/prd/74/30002374/img/30.gif?t=20080208191353
もうちょっと、パケットを詳細に解析していきましょう。
パケットを解析するためには「パケットキャプチャ」と呼ばれるツールを使用します。
左のイメージは、実際に「Wireshark」と呼ばれるパケットキャプチャツールを用いて、パケット解析を行っている画面です。
上段に表示されているのは、キャプチャしたパケットの一覧です。
中断に表示されているのは、選択パケットの解析結果が表示されています。
下段に表示されているのは、選択パケットのダンプコードが表示されています。
上のイメージにて、選択されているパケットのダンプコードを取り出してみると以下のようになります。
00 1b 77 ab 30 7d 00 0a 79 75 19 e6 08 00 45 00 00 28 1c 5b 00 00 35 06 0b 2f 42 f9 59 9a c0 a8 01 0b 00 50 c0 40 cd a0 62 05 16 1d ec b9 50 10 00 9e 5d e2 00 00 00 00 00 00 00 00
この数列が実際のパケットの中身です。
話題を一旦変えて、パケットの構造について考えます。
パケットというものは下に示すような構造になっています。
上のイメージには2つの図があります。
最初がパケットの大まかな構造を示したものになり、次が「Ethernetヘッダ」の構造を表現したものとなります。
LANの中を流れるパケットには、「Ethernetヘッダ」と呼ばれる情報がパケットの先頭に付与されます。
「Ethernetヘッダ」は「あて先MACアドレス」、「送信元MACアドレス」、「タイプ」と呼ばれる3つの要素から構成されます。
「あて先MACアドレス」、「送信元MACアドレス」については、ここでは触れません。
「あて先MACアドレス」はデータの送信先ノードのMACアドレスが6バイト分の領域で格納され
「送信元MACアドレス」はデータの送信元ノードのMACアドレスが6バイト分の領域で格納され
「タイプ」とはデータを送信する際の約束事であるプロトコルの情報が2バイト分の領域で格納されています。
もっと正確にいうならば、「タイプ」より後ろのフィールドである「Ethernetデータ」部分の送信プロトコルを表現しています。
ということは!?
「送信元MACアドレス」が"00 0a 79 75 19 e6"であるノードから、「あて先MACアドレス」が"00 1b 77 ab 30 7d"であるノードへ
データを送信していることがわかります。
「タイプ」部分は08 00となっていますね。ということは「Ethernetデータ」がIPと呼ばれるプロトコルで送受信されていることを示しています。
IPプロトコルで送信されたデータなので、「Ethernetデータ」は「IPパケット」であるともいえます。
ダンプコード「0800」以降はIPパケットなのだとわかりました。
00 1b 77 ab 30 7d 00 0a 79 75 19 e6 08 00 45 00 00 28 1c 5b 00 00 35 06 0b 2f 42 f9 59 9a c0 a8 01 0b 00 50 c0 40 cd a0 62 05 16 1d ec b9 50 10 00 9e 5d e2 00 00 00 00 00 00 00 00
「IPパケット」について考えましょう。「IPパケット」にも、「IPヘッダ」と呼ばれる情報が付与されています。
つまり、「Ethernetデータ」は「IPヘッダ」と「IPデータ」から構成されるといえます。
下のイメージは、IPヘッダの構造を示すイメージです。
「IPヘッダ」は、様々の要素により構成されていますが、ここで重要となってくるのは、プロトコルです。
ダンプコードでは、プロトコル部分が「06」となっております。
プロトコルが「06」ということは、TCPプロトコルを示しているので、
「IPデータ」がTCPパケットであるといえます。
今宵はこの辺りで解析を終了とするのですが、このような手法を用いてパケットを詳細に解析することができるんです。
今日はここまで。。。。