ARPパケットフォーマット
ARPのパケットを見ると、ARPやGARPの仕組みがより詳しく理解出来ます。
本項では、ARPパケットフォーマットについて説明します。
ARPのフォーマット
以下に、ARPのフォーマットを示します。
項目 | 英語 | バイト | 説明 |
---|---|---|---|
ハードウェアタイプ | Hardware type | 2 | イーサネットでは1です。 |
プロトコル | Protocol type | 2 | IPv4では800です。 |
ハードウェアアドレス長 | Hardware size | 1 | イーサネットの場合はMACアドレスの長さで6(byte)です。 |
プロトコルアドレス長 | Protocol size | 1 | IPv4の場合はIPアドレスの長さで4(byte)です。 |
オペレーションコード | opcode | 2 | ARPリクエストでは1、リプライでは2です。 |
送信元MACアドレス | Sender MAC address | 6 | 送信元MACアドレスです。 |
送信元IPアドレス | Sender IP address | 4 | 送信元IPアドレスです。Proxy ARPのリプライ時はリクエストがあったIPアドレスです。 |
送信先MACアドレス | Target MAC address | 6 | 送信先MACアドレスです。ARPリクエストでは、一般的に00:00:00:00:00となります。 |
送信先IPアドレス | Target IP address | 4 | 送信先IPアドレスです。GARPでは、自身のIPアドレスをセットします。 |
一般的なARPリクエストとリプライ
ARPリクエストでは、オペレーションコードを1、送信元を自身のMACアドレスとIPアドレス、送信先はMACアドレスが00:00:00:00:00でIPアドレスをARP解決したいIPアドレスにして送信します。
ARPリプライでは、オペレーションコードを2、送信元を自身のMACアドレスとIPアドレス、送信先をリクエストを送信したMACアドレスとIPアドレスにして送信します。
通信種別 | opcode | Sender | Target | ||
---|---|---|---|---|---|
MAC address | IP address | MAC address | IP address | ||
ARPリクエスト | 1 | 自分 | 自分 | 00:00:00:00:00:00 | 解決したいIPアドレス |
ARPリプライ | 2 | 自分 | 自分 | リクエスト送信元 | リクエスト送信元 |
ARPリクエストは、フレーム上の送信先がff:ff:ff:ff:ff:ff:となりブロードキャストされます。アドレス解決のため、全ての機器で受信して欲しいためです。
ARPリプライでは、リクエスト送信元のMACアドレス宛てに送信されます。
又、ARPテーブル保持等の目的で、ARPリクエストを定期的に送信する事があります。この場合、Target MAC addressは00:00:00:00:00:00ではなく、ARPテーブルで保持しているMACアドレスが使われます。この時は、ブロードキャストではなく送信先MACアドレスも指定されます。
尚、動作や仕組みで不明な点があれば、「ARP」をご参照下さい。
ARPプローブ、GARP、Proxy ARP
ARPプローブは、ARPリクエストと殆ど同じですが、送信元IPアドレスを0.0.0.0にして自分が使う予定のIPアドレスが使われていないか確認する時に使われます。
GARP(ARPアナウンスメント)もARPリクエストと殆ど同じですが、送信先IPアドレスを自身のIPアドレスにしてIPアドレス利用や自身のMACアドレス通知として使います。
Proxy ARPは、リプライ時に送信元IPアドレスを自身のIPアドレスではなく、リクエストがあったIPアドレスにして送信します。
通信種別 | opcode | Sender | Target | ||
---|---|---|---|---|---|
MAC address | IP address | MAC address | IP address | ||
ARPプローブ | 1 | 自分 | 0.0.0.0 | 00:00:00:00:00:00 | 自分が使うIPアドレス |
GARP | 1 | 自分 | 自分 | 00:00:00:00:00:00 | 自分 |
Proxy ARPリプライ | 2 | 自分 | リクエストのIPアドレス | リクエスト送信元 | リクエスト送信元 |
フレーム上の送信先MACアドレスは、通常のARPリクエストやリプライと同じです。つまり、ARPプローブとGARPはブロードキャスト、Proxy ARPのリプライは宛先指定です。