ARPヘッダ

ARPヘッダ

続いてARPヘッダについて見ていこう。

ARPヘッダは以下のように構成されています。

 

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バイトにして送信しています。
この意味のないデータのことを「パディングデータ」と呼んでいます。

関連記事

メールマガジン

ネットワ-ク初心者のみなさま。
ネットワークの基礎知識を疎かにすることは
大変危険です!!

「初心者にも理解できるネットワーク技術」

これを読めばネットワークの基礎が分かる!!
ネットワーク関連の仕事に就きたいとお考えの学生の方や、ネットワークに興味があって転職を考えている社会人の方、まずは登録してみてください。

もちろん無料です!!

↓メールマガジン購読はこちら↓

メールアドレス: