続いてARPヘッダについて見ていこう。
ARPヘッダは以下のように構成されています。
実際にネットワーク上に流れているARPパケットを
キャプチャしたデータは以下です。
○ハードウェアタイプ:2バイト
ネットワークのタイプを定義しています。
Ethernetの場合は「0001」がセットされます。
その他の対応についてはIANAのサイトに掲載されていますので、
興味があれば覗いてみてください。
http://www.iana.org/assignments/arp-parameters
○プロトコルタイプ:2バイト
プロトコルのタイプを定義しています。
ここで言っているプロトコルタイプは、Ethernetヘッダで
使用されているプロトコル対応と同一です。
そのため、IPを表す「0800」がセットされます。
○ハードウェア長:1バイト
ハードウエアアドレスの長さを定義しています。
ハードウェアアドレスとはつまりMACアドレスのことで、
MACアドレスは6バイトで構成されていますので、
ここには「6」がセットされます。
○プロトコル長:1バイト
プロトコルアドレスの長さを定義しています。
ARPは当然、IPアドレスを使用します。
IPアドレスは32ビット = 4バイトですので、
ここには「4」がセットされます。
○オペレーション:2バイト
このパケットが「ARPリクエスト」なのか、
「ARPリプライ」なのかを識別するためのフラグです。
ARPリクエストだと「1」が、ARPリプライだと「2」が
セットされます。
○送信元ハードウェアアドレス:可変長
送信元のMACアドレスがセットされます。
ちなみにMACアドレスは6バイトの固定にもかかわらず、
このフィールドは可変長となっています。
これはMACアドレス以外のアドレスにも対応出来るように
あらかじめ可変長にしているようです。
○送信元プロトコルアドレス:可変長
送信元のIPアドレスがセットされます。
○宛先ハードウェアアドレス(可変長)
宛先のMACアドレスがセットされます。
「ARPリクエスト」の場合はブロードキャストで送信されますので、
「FF:FF:FF:FF:FF:FF」がセットされると思いきや
実はそうでもないようです。
色々調べてみるとどうやらOS等に依存して、「FF:FF:FF:FF:FF:FF」で
あったり「00:00:00:00:00:00」がセットされていたりします。
この理由は、Ethernetヘッダですでにブロードキャストアドレス
「FF:FF:FF:FF:FF:FF」が宛先アドレスとしてセットされているため、
わざわざARPヘッダに指定しなくても良いという考え方のようで、
特に明確な取り決めは無いようです。
○宛先プロトコルアドレス:可変長
宛先のIPアドレスがセットされます。
「ARPリクエスト」の場合は、ここにセットされたIPアドレスに対する
MACアドレスを調べます。
ちなみにARPヘッダのサイズを合計すると28バイトになります。
しかしEthernetのデータサイズは46~1500バイトという決まりが
ありますので、このままでは送ることはできません。
そのためARPヘッダに意味のないデータを付加して強制的に
46バイトにして送信しています。
この意味のないデータのことを「パディングデータ」と呼んでいます。
ネットワ-ク初心者のみなさま。
ネットワークの基礎知識を疎かにすることは
大変危険です!!
これを読めばネットワークの基礎が分かる!!
ネットワーク関連の仕事に就きたいとお考えの学生の方や、ネットワークに興味があって転職を考えている社会人の方、まずは登録してみてください。
もちろん無料です!!
↓メールマガジン購読はこちら↓