Address Resolution Protocol

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パケットの構造



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応答を送信し、通信を傍受する「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の理解を深めることは、ネットワーク管理やセキュリティ対策において非常に重要です。

もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。