ARP(4)

名称
arp - アドレス解決プロトコル

書式
pseudo-device ether

解説
アドレス解決プロトコル (ARP) はインターネットホストアドレスと 10Mb/s のイーサネットアドレスを動的にマッピングするプロトコルです。 これは全ての 10Mb/s イーサネットインタフェースドライバで 利用されています。 このプロトコルはインターネットプロトコルや 10Mb/s イーサネットに 限定されているわけではありませんが、 現在の実装ではこの組み合わせしかサポートしていません。

ARP はインターネットアドレスとイーサネットアドレスのマッピング (対応関係) を キャッシュします。 キャッシュにないアドレスのマッピングをインタフェースが要求したとき、 ARP は、そのマッピングを要求するメッセージをキューに入れ、 そのアドレスマッピングを要求するメッセージを 接続されたネットワークに対してブロードキャストします。 応答があった場合、新たにマッピングされたアドレスを キャッシュに格納し、キューに入れられていたメッセージを送信します。 ARP はマッピング要求の応答を待つ間、 高々 1 つのパケットをキューに保持します。 すなわち、1 番最近 ``送信した'' パケットのみを保持します。 もし目的のホストが数回の要求にも応じない場合、 そのホストは短期間 (通常 20 秒) ダウンしていると考えられ、 その間の転送要求に対しエラーが返ります。 そのエラーは、宛先のホストが応じない場合は EHOSTDOWN 、ルータが応じない場合は EHOSTUNREACH となります。

ARP キャッシュは、動的に生成されたホスト経路として、 システムのルーティングテーブルに収められます。 直接接続されているイーサネットネットワークへの経路は “複製” された経路 ( RTF_CLONING フラグが立った経路) として格納され、 そのネットワーク上の個々のホストへの経路は必要に応じて生成されます。 これらの経路は定期的にタイムアウトします (通常その経路が有効になってから 20 分でタイムアウトし、 これらのエントリは使われない限り有効にはなりません)。 応答のないホストへのエントリは “拒否” された経路 ( RTF_REJECT フラグが立てられた経路) になります。

ARP エントリは arp(8) ユーティリティにより追加や削除、変更されることがあります。 手作業で追加されたエントリには一時的なものも永続的なものもありえますし、 “公表” されることもあります。公表された場合、システムは ARP リクエストに対し、 自分がそのリクエストの目的ホストであるかのように応答します。

以前 ARP は、トレーラカプセル化の使用を 交渉するために使われていました。 これはもはやサポートされていません。

ARP は自分の振りをするホスト (つまり自分のアドレスに対する ARP 要求に応答するホスト) を受動的に監視します。

診断
arp: %x:%x:%x:%x:%x:%x is using my IP address %d.%d.%d.%d!: ARP はローカルネットワークに、 違うイーサネットアドレスなのにもかかわらず 自分と同じインターネットアドレスに対する マッピング要求に応答する別のホストを見つけました。 一般的に、2 つのホストが同じインターネットアドレスを 使おうとしていることを示しています。

arp: ether address is broadcast for IP address %d.%d.%d.%d!: ARP はあるホストについての情報を要求し、そのホストのイーサネットアドレスが イーサネットのブロードキャストアドレスであることを示す応答を 受け取りました。 これはデバイスの設定ミスか、壊れていることを示しています。

arp: %d.%d.%d.%d moved from %x:%x:%x:%x:%x:%x to %x:%x:%x:%x:%x:%x: ARP は参照したホストのイーサネットアドレスをキャッシュしていますが、 そのホストが新しいアドレスを持っていることを示す応答を受け取りました。 これは通常ホストのハードウェアアドレスが変わったり、モバイル端末が ローカルのサブネットに繋がれたか切り放されたときに起こります。 またこれは代理 ARP の問題であることもあります。

arpresolve: can't allocate llinfo for %d.%d.%d.%d: 参照しているホストへの経路は ARP が要求されたデバイスを指しています。 しかし ARP はそのホストの MAC アドレスを格納する ルーティングテーブルのエントリを割り当てることができませんでした。 これは通常ルーティングテーブルの設定ミスを示しています。 また、カーネルがメモリを割り当てられなかった時にも起ります。

関連項目
inet(4), route(4), arp(8), ifconfig(8), route(8)

Plummer, D., An Ethernet Address Resolution Protocol, RFC826. Leffler, S.J., Karels, M.J., Trailer Encapsulations, RFC893.