【図解】ARPの仕組みとWindowsでの仕様・コマンド 〜種類、フォーマット、キャッシュ時間、確認・クリアコマンド〜

ARP(読み方:アープ)とは、IPアドレスに紐付くMACアドレスを知るために利用するプロトコルです。Ethernet上でIP通信をするためには必須のプロトコルです。

スポンサーリンク
スポンサーリンク

ARPの概要

端末AIPアドレス=192.168.5.11 , MACアドレス=01:23:45:67:89:aa )から同一セグメント内の端末CIPアドレス=192.168.5.13 , MACアドレス=01:23:45:67:89:ab)に通信する場合を考えます。

このとき、端末Aは宛先のIPアドレスを192.168.5.13と指定しますが、宛先のMACアドレスが分からないので、このままではレイヤー2通信が出来ません。そこで、このとき端末AはARP要求をブロードキャストします。ARP要求の中には自身のIPアドレスとMACアドレス情報、および、端末CのIPアドレス 192.168.5.13が含まれいます。端末Cは、そのARP要求を受け取ると、ARP応答に自分のMACアドレス(01:23:45:67:89:ab)を格納して、L2ユニキャストで端末Aに返します。

ARP応答を受け取った端末Aは自身の内部に持つARPテーブルに、192.168.5.13 と 01:23:45:67:89:ab の組合せを記憶すると同時に、LANインタフェースから、渡したかったEthernetフレームを端末Cに向けて送出します。

以下にイメージ図を示します。

なお、あまり知られていませんが、ARP応答を受け取ったときだけでなく、ARP要求を受け取ったときにもARPテーブルの更新が実施されます。つまり、端末AがARP要求をブロードキャストすると、ARP応答をした端末Cはもちろんのこと同セグメントにいる他の全ての端末も、端末AのIPアドレス、MACアドレスの組み合わせを記憶します

スポンサーリンク

ARPの種類

ARPには以下の種類があります。

  1. 通常のARP・・・上記の説明の通り、IP機器が他のIP機器への通信が必要なタイミングでARP要求をブロードキャストし、そのIPを持つ機器がARP応答をユニキャストで返信します。
  2. Gratuitous-ARP・・・IP機器がその宛先に通信するタイミングではなく、自らが積極的に相手に自身のIPアドレスを周知するためにARPを送信します。詳しくはこちらを参照下さい
  3. Proxy-ARP・・・ARP要求を受信したIP機器が、自身がそのIPを付与されていないが、ルート情報を持っている場合に自身のMACアドレスをARP応答します。詳しくはこちらを参照下さい
  4. Reverse-ARP・・・MACアドレスを元に、IPアドレスを配布する。ただし、この機能はDHCPサーバに置き換わっているため、今はまず使われていません。

スポンサーリンク

ARPテーブル(ARPキャッシュ)のキャッシュ保持時間

一度ARP応答により受信したIP/MACアドレス紐付け情報は、一定時間持ち続けます。

WindowsおよびLinuxにおいては、RFC2461に従い、15秒から45秒の範囲でランダムに決まった時間を保持します。

https://support.microsoft.com/en-us/help/949589/description-of-address-resolution-protocol-arp-caching-behavior-in-win

NW機器においてはメーカによってまちまちのようで、Ciscoのデフォルトはかなり長めで4時間となっています。ただし、これはGARPというMACアドレス更新を周知する仕組みが働く前提でこのような長い時間を取っています。

WindowsでのARP関連の操作

Windows端末でARPテーブルを確認するには、コマンドプロンプトで以下を打ちます。

arp -a

また、ARPテーブルをクリアするには以下を打ちます。

arp -d *

ARPのフォーマット

ARPプロトコルのフォーマットを以下に示します。イーサネットを利用する場合、 Ethernetのタイプフィールドは"Ox0806"となります。

ハードウェアタイプ

ARPは、イーサネットだけでなく、様々なレイヤー2通信をサポートします。ハードウェアタイプフィールドはどのレイヤー2通信を 利用するかを表します。

以下にARPのハードウェアタイプ値とそれに対応するプロトコルを示します。

ハードウェアタイプ
プロトコル
Ox0001Ethernet
Ox0003Amateur Radio AX.25
Ox0004トークンリング
Ox0006IEEE802.x
Ox000Fフレームリレー
Ox0010ATM

スポンサーリンク

ARP要求元プロトコル

ARPは、IPだけでなく様々なレイヤー3通信をサポートします。ARP要求元プロトコルフィールドはどのレイヤー3通信を利用するかを 表します。このARP要求元プロトコル値とそれに対応するプロトコルは、イーサネットフレームで紹介した"タイプ番号"と同じで、 IPv4は"Ox0800"となります。

ハードウェアアドレス長

レイヤー2通信のアドレスを8bit単位で表します。イーサネットの場合、MACアドレスの長さである48bitを表す"Ox06"が入ります。

プロトコルアドレス長

レイヤー3通信のアドレスを8bit単位で表します。IPv4の場合、IPv4アドレスの長さである32bitを表す"Ox04"が入ります。

オペレーションコード

ARP要求やARP応答などを表現します。ARP要求は"Ox0001"、ARP応答は"Ox0002"となります。
以上より、端末AのARP要求と端末CのARP応答をまとめますと、以下のようになります。

Field
端末AのARP要求
端末CのARP応答
Field値
内容
Field値
内容
ハードウェア
タイプ
Ox0001EthernetOx0001Ethernet
ARP要求元
プロトコル
Ox0800IPv4Ox0800IPv4
ハードウェア
アドレス長
Ox0648bitOx0648bit
プロトコル
アドレス長
Ox0432bitOx0432bit
オペレーション
コード
Ox0001ARP要求Ox0002ARP応答
送信元
ハードウェア
アドレス
0123456789aa端末AのMAC
アドレス
0123456789ab端末CのMAC
アドレス
(応答値)
送信元
IPアドレス
C0A8050b端末AのIP
アドレス
192.168.5.11
C0A8050d端末CのIP
アドレス
192.168.5.13
宛先
ハードウェア
アドレス
000000000000
(要求値)
Null0123456789aa端末AのMAC
アドレス
宛先
IPアドレス
C0A8050d端末CのIP
アドレス
192.168.5.13
C0A8050b端末AのIP
アドレス
192.168.5.11
スポンサーリンク
スポンサーリンク
スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

スポンサーリンク
スポンサーリンク