RP(アープ)はアドレス解決プロトコル(英:Address Resolution Protocal)の略称です。
用途
ARPは送信パケットのIPアドレス対メディア・アクセス・コントロール(MAC) のアドレス解決を実行します。 送信される各IPデータグラムはフレームにカプセル化されていますので、発信元および宛先のMACを追加する必要があります。各フレーム宛先MACの決定はARPが行います。
機能
ARPはすべての送信IPデータグラムの宛先IPアドレスをARPテーブルから検索します。
- 存在する場合 ARPテーブルからMACアドレスを取得します。
- 存在しない場合 ARPはARP要求パケットをローカル・サブネットにブロードキャストし、当該IPアドレスのオーナーに対してそのMACアドレスを応答するよう要求します。パケットがルーター経由で送信されている場合は、ARPは最終宛先ホストではなく次のホップのルーターのMACアドレスに解決します。ARPの応答を受け取るとARPテーブルは新しい情報で更新され、リンク層でのパケット送信に使用されます。
OS別の実装
Windows
arpユーティリティ
Windowsでは、arpコマンドを利用して、ARPテーブルの表示/設定を行うことができます。 以下の表で主なオプションを説明します。
No. | オプション | 構文 | 用途 |
---|---|---|---|
1 | -s | arp -s IPアドレス MACアドレス[インタフェース] | ARPテーブルへ指定されたIPアドレスとMACアドレスのエントリ追加を行う |
2 | -d | arp -d IPアドレス [インタフェース] | 指定されたIPアドレスのエントリを削除する |
3 | -a | arp -a [IPアドレス] [-N インタフェース] | ARPテーブルを表示する。IPアドレスやインタフェースが指定された場合は、該当するエントリのみを表示する |
Linux
arpユーティリティ
Linuxでも、Windowsと同じのarpコマンドを利用して、ARPテーブルの表示/設定を行うことができます。 LinuxのarpコマンドはWindowsより多くの機能が付属されています。
- ARPテーブルへの追加
arp[-v][ -H ハードウェア・タイプ][ -i ] -s ホスト名(IPアドレス) MACアドレス[ temp][ nopub] - Proxy ARPのためのエントリの追加
arp[ -v][ -H ハードウェア・タイプ][ -i ] -s ホスト名(IPアドレス) MACアドレス[ netmask サブネット・マスク・アドレス] pub
arp[ -v][ -H ハードウェア・タイプ][ -i ] -Ds ホスト名(IPアドレス) 使用したいMACアドレスを持つ[ netmask サブネット・マスク・アドレス] pub - ARPテーブルへのファイルからの一括追加
arp[ -vnD][ -H ハードウェア・タイプ][ -i ] -f[ ファイル名] - ARPテーブルの削除
arp[ -v][ -i ] -d ホスト名(IPアドレス)[ pub][ nopub] - ARPテーブルの表示
arp[ -vn][ -H ハードウェア・タイプ][ -i ][ -a][ ホスト名(IPアドレス)]
No. | オプション | 用途 |
---|---|---|
1 | -v | 詳細モード |
2 | -H | arpは本来イーサネット以外のデータリンク層でも使用できるようにデザインされている。このパラメータで使用するデータリンクのプロトコルをハードウェアタイプとして指定できる。デフォルトはイーサネット(ether)。ほかにトークンリング(tr)なども指定できる |
3 | -i | エントリが対応するインタフェースを指定する |
4 | -s | ARPテーブルへ指定したホスト名(またはIPテーブル)とMACアドレスのエントリを追加する |
5 | temp | このエントリがキャッシュであり(つまり定期的に削除されるかもしれない)、永続的でないことを示す。省略されると永続的なエントリとなり、削除されない |
6 | nopub | このエントリがProxy ARPのためのエントリでないことを示す |
7 | netmask | この出力をIPアドレスのみに抑制する(DNS逆引きを行わない)のサブネットマスクを指定して、あるサブネット全体のためのエントリであることを示す。ただし、Kernel2.2.0以降では指定できないようだ |
8 | pub | このエントリがProxy ARPのためのエントリであることを示す |
9 | -n | 出力をIPアドレスのみに抑制する(DNS逆引きを行わない) |
10 | -D | MACアドレスの代わりにインタフェースを指定すると、そのインタフェースのMACアドレスを使用する |
11 | -f | 指定したファイルに複数指定されたエントリを一括追加する。ファイル名が省略されると、「/etc/ethers」が使用される |
12 | -d | ARPテーブルから指定されたホスト名のエントリを削除する |
13 | -a | ARPテーブルの内容を表示する。ホスト名が指定されると該当のエントリのみを表示する |