Address Resolution Protocol (ARP) について
Address Resolution Protocol(ARP、アドレス解決プロトコル)は、ネットワーク通信において、
IPアドレスのような論理的な
ネットワーク層アドレスを、物理的な
データリンク層アドレス(
MACアドレスなど)に変換するために使用される重要なプロトコルです。これにより、異なる
ネットワーク層と
データリンク層の技術が組み合わされた環境でも、デバイス間の通信が可能になります。
ARPの役割と位置づけ
ARPは、インターネットプロトコルスイートの中で、
リンク層に位置づけられます。これは、ARPが単一のサブネットワーク内で通信を行い、ルータを越えてルーティングされない性質を持つためです。ARPは、
IPv4ネットワークにおけるアドレス解決に広く利用されており、
イーサネットや
無線LANなどの様々なネットワーク技術で実装されています。
ARPの動作
ARPは、リクエストとレスポンスのメカニズムに基づいて動作します。具体的には、以下の手順で
IPアドレスから
MACアドレスを解決します。
1.
ARPリクエストの送信: 送信元のホストは、目的の
IPアドレスに対応する
MACアドレスを知るために、ARPリクエストを
ブロードキャストで送信します。このリクエストには、送信元の
IPアドレスと
MACアドレス、および目的の
IPアドレスが含まれます。
2.
ARPリプライの返信: ARPリクエストを受信した各ノードは、リクエスト内の目的
IPアドレスが自身の
IPアドレスと一致するかを確認します。一致する場合、そのノードは自身の
MACアドレスを含むARPリプライを、送信元のホストに返信します。
このプロセスにより、送信元のホストは目的の
IPアドレスに対応する
MACアドレスを知り、以後の通信で使用できるようになります。
ARP
パケットは、アドレス解決に必要な情報を伝えるためのシンプルな構造を持っています。主な構成要素は以下の通りです。
ハードウェアタイプ (HTYPE): 使用しているネットワークプロトコルの種類を示します。
イーサネットの場合は1。
プロトコルタイプ (PTYPE): ARPリクエストが対象とするインターネットプロトコルを示します。
IPv4の場合は0x0800など。
ハードウェア長 (HLEN): ハードウェアアドレス(
MACアドレス)の長さをオクテット単位で示します。
イーサネットの場合は6。
プロトコル長 (PLEN): プロトコルアドレス(
IPアドレス)の長さをオクテット単位で示します。
IPv4の場合は4。
オペレーション: ARP
パケットの操作コードを示します。1はリクエスト、2は返信。
送信元ハードウェアアドレス (SHA): ARPリクエストを送信したホストの
MACアドレス。
送信元プロトコルアドレス (SPA): ARPリクエストを送信したホストの
IPアドレス。
送信先ハードウェアアドレス (THA): 目的のホストの
MACアドレス。ARPリクエストでは無視される。
送信先プロトコルアドレス (TPA): 目的のホストの
IPアドレス。
ARPキャッシュ
効率的な通信のために、多くのデバイスはARPテーブルに、
IPアドレスと
MACアドレスのマッピング情報をARPキャッシュとして保存します。これにより、同一の
IPアドレスに対する
MACアドレスの解決を何度も行う必要がなくなります。ARPキャッシュには有効期限があり、一定時間経過すると情報は削除されます。
ARPプローブ
ARPプローブは、ホストが
IPアドレスの使用を開始する前に、アドレスがネットワーク上で既に使われていないかを確認するために送信するARPリクエストです。送信元
IPアドレスをALL0に設定したARPリクエストを
ブロードキャスト送信することで、アドレスの衝突を事前に検出します。
ARPアナウンスメント (Gratuitous ARP)
ARPアナウンスメント(Gratuitous ARP、GARP)は、ホストが自身の
IPアドレスや
MACアドレスの変更をネットワーク上の他のデバイスに通知するために使用されます。これにより、他のデバイスのARPキャッシュを最新の状態に保ち、通信のトラブルを防ぐことができます。ARPアナウンスメントは、ARPリクエストまたはARPリプライの形式で送信され、
ブロードキャストされます。
ARPメディエーション
異なるアドレス解決プロトコルが使用されているネットワーク(例えば、
イーサネットと
フレームリレー)を接続する場合、ARPメディエーションが使用されます。これにより、異なるプロトコル間でのアドレス解決が可能となり、シームレスな通信を実現します。
Inverse ARP (InARP)
Inverse ARP (InARP)は、
データリンク層アドレス(例えば、
フレームリレーのDLCI)から
ネットワーク層アドレス(
IPアドレス)を取得するために使用されるプロトコルです。ARPの逆の役割を果たすことから、InARPと呼ばれます。主に
フレームリレーやATMのようなネットワークで使用されます。
Reverse ARP (RARP)
Reverse ARP (RARP)も、
データリンク層アドレスから
ネットワーク層アドレスを取得するために使用されますが、InARPとは異なり、要求側自身の
IPアドレスを取得するために使用されます。RARPは現在ではあまり使用されておらず、より高度なプロトコルであるBOOTPやDHCPに置き換えられています。
ARPには、応答の認証メカニズムがないという脆弱性があります。このため、悪意のあるユーザが、偽のARP応答を送信し、通信を傍受する「
ARPスプーフィング」を行う可能性があります。
ARPスプーフィングは、
中間者攻撃や
DoS攻撃などの原因となることがあります。
一方、プロキシARPは、ルータが、他のネットワークのホストに代わってARP要求に応答する仕組みです。主にNAT環境で使用されます。
ARPの代替
各コンピュータは、
IPアドレスと
MACアドレスのマッピング情報をARPキャッシュとして保持しています。この情報は、主にネットワークからのARP
パケットの受信によって更新されます。'arp'コマンドユーティリティを使用すると、このARPキャッシュの情報を表示したり、操作したりすることができます。
ARPスタッフィング
ユーザーインターフェースを持たない組み込みデバイスなどの初期設定において、ARPスタッフィングという手法が使われることがあります。これは、手動でデバイスの
MACアドレスをARPテーブルに追加し、特別な
パケットを送信することで、デバイスに
IPアドレスを設定する方法です。しかし、ARPスタッフィングはセキュリティ上のリスクがあるため、通常はデバイスが正常に動作するようになったら無効にする必要があります。
標準文書
ARPに関する主な標準文書は以下の通りです。
RFC 826: Ethernet Address Resolution Protocol
RFC 903: Reverse Address Resolution Protocol
RFC 2390: Inverse Address Resolution Protocol
RFC 5227: IPv4 Address Conflict Detection
関連項目
ARPスプーフィング
Reverse address resolution protocol (RARP)
Gratuitous ARP
ブリッジ
レイヤ3スイッチ
近隣探索プロトコル
プロキシARP
まとめ
ARPは、ネットワーク通信における基本的なプロトコルであり、
IPアドレスと
MACアドレスの対応付けを行う上で不可欠な役割を果たしています。しかし、ARPはセキュリティ上の脆弱性も抱えているため、適切な対策を講じる必要があります。ARPの理解を深めることは、ネットワーク管理やセキュリティ対策において非常に重要です。