ARPフォーマット

ARPのメッセージはイーサネットヘッダで直接カプセル化して転送されます。イーサネットヘッダのタイプコード0x0806でデータ部分がARPメッセージであることを表します。

ARPフォーマット
図 ARPフォーマット

フィールド名

サイズ

内容

Hardware Type

16ビット

イーサネットの場合、0x0001で固定

Protocol Type

16ビット

IPv4の場合、0x0800で固定

Hardware Size

8ビット

MACアドレスのサイズ(バイト)。0x06

Protocol Size

8ビット

IPアドレスのサイズ(バイト)。0x04

Opcode

16ビット

ARPリクエスト:0x0001

ARPリプライ:0x0002

Sender MAC address

48ビット

送信元MACアドレス

Sender IP address

32ビット

送信元IPアドレス

Target MAC address

48ビット

ターゲットMACアドレス

Target IP address

32ビット

ターゲットIPアドレス

このフォーマットは、イーサネット上でTCP/IPの通信を行う場合です。

ARPの仕組みは以下のページで解説しています。


ARPメッセージの例

以下の簡単なネットワーク構成でARPリクエストとARPリプライの実際のメッセージの内容を詳しく見てみましょう。

ARPメッセージフォーマット ネットワーク構成例
図 ARPメッセージフォーマット ネットワーク構成例
R1とR2のMACアドレスはわかりやすい値に設定しています。
ここで紹介しているARPリクエスト/リプライのキャプチャファイルは以下よりダウンロードできます。
「arp_capture.pcapng」をダウンロード

ARPリクエスト

R1からR2(192.168.12.2)へPingを行うと、自動的にARPの処理が行われます。R1は192.168.12.2のMACアドレスを求めるためにARPリクエストをブロードキャストします。そのARPリクエストをキャプチャすると、次のような内容です。

図 R1から送信するARPリクエスト
図 R1から送信するARPリクエスト

フィールド名

サイズ

内容

Hardware Type

16ビット

0x0001

Protocol Type

16ビット

0x0800

Hardware Size

8ビット

0x06

Protocol Size

8ビット

0x04

Opcode

16ビット

0x0001(ARPリクエスト)

Sender MAC address

48ビット

0x0000.0000.1111(R1のMACアドレス)

Sender IP address

32ビット

192.168.12.1(R1のIPアドレス)

Target MAC address

48ビット

0x0000.0000.0000

Target IP address

32ビット

192.168.12.2(R2のIPアドレス)

MACアドレスの表記は2バイト区切りの表記にしています。

ARPリプライ

R1からのARPリクエストに対して、Target IP addressを持つR2がARPリプライを返して、MACアドレスを通知します。そのARPリプライをキャプチャすると、以下のようになっています。

R2から送信するARPリプライ
図 R2から送信するARPリプライ

フィールド名

サイズ

内容

Hardware Type

16ビット

0x0001

Protocol Type

16ビット

0x0800

Hardware Size

8ビット

0x06

Protocol Size

8ビット

0x04

Opcode

16ビット

0x0002(ARPリプライ)

Sender MAC address

48ビット

0x0000.0000.2222(R2のMACアドレス)

Sender IP address

32ビット

192.168.12.2(R2のIPアドレス)

Target MAC address

48ビット

0x0000.0000.1111(R1のMACアドレス)

Target IP address

32ビット

192.168.12.1(R1のIPアドレス)