ARP

アドレス解決プロトコル

 イーサネットまたはトークンリングのネットワークにおいては、通信を行おうとするステーションはどれでも、 自分の次に受信を行うネットワークインターフェイスカードの DLC アドレスを知らなければならなりません。 つまり上位層からすれば、ネットワーク層のアドレスと宛先 NIC の DLC アドレスとを結び付ける、何らかの方法を見つけなければならないという問題を抱えることになった、ということです。 TCP/IP がこの問題をどのように解決するのかについて説明をします。つまり ARP (アドレス解決プロトコル)についてです。

データリンク層のアドレス/ネットワーク層のアドレス

 ARP について説明する前に、DLC (物理層)のアドレスとネットワーク層のアドレスの違いについて理解することが必要です。

※ DLC アドレスはデータリンク制御層アドレス( Data Link Control Layer Address )のことです。 これはベンダが製造時に付けるネットワークインターフェイスカードのアドレスのことで、「 MAC アドレス」とも「ハードウェアアドレス」とも呼ばれています。 ネットワーク層のアドレス、例えば IP アドレスなどと混同してはなりません。

 ネットワークで実際に使用されるアドレスは二つあります。DLC アドレスとは、ステーションのネットワークインターフェイスカードに焼き込まれた(ソフトウェアで変更できない)アドレスのことです。 DLC アドレスは通信の最下層で使用され、NIC から NIC へのメッセージ通信に使われます。 もう一つのアドレスはネットワーク層のアドレスで、通常はプロトコルソフトウェアで設定されます。 論理的なエンド−エンドでメッセージを伝えます。ネットワーク層のないプロトコルもありますが、その場合にはデータリンクのアドレスだけが用いられます。

 イーサネットとトークンリングのカードは、DLC アドレスの認識だけを行います。従って、通信を行いたい者はすべて、 送受信側の DLC アドレスと宛先 DLC アドレスを指定しなければなりません。 IP アドレスが 128.200.10.4 である、ということを知っているだけでは十分ではありません。

 なお、論理エンドから論理エンドへ送られるメッセージは、実際には宛先に着く前にいくつかの異なる NIC を通過します。 TCP/IP の世界では、ネットワーク層の宛先アドレスを指定する必要があります。しかし、DLC 層では、 まず最初のゲートウェイの DLC アドレスを指定し、その次、その次と、最後のゲートウェイになるまで、DLC アドレスを指定して目的地に着きます。 つまりネットワーク層では論理エンドのアドレスを指定し、DLC 層では通過していく NIC のアドレスを次々に指定して行くので、DLC アドレスが変わって行くのです。



ARP キャッシュ

 DLC アドレスとネットワーク層の IP アドレスを関連付けるために、TCP/IP のステーションは ARP キャッシュという記録を維持更新します。 (キャッシュとは、隠し場所のことで、短時間後にコンピュータが必要とするデータの隠し場所という意味になります。) ARP キャッシュには DLC アドレスと IP アドレスの対応が含まれています。ステーションがある IP アドレスにメッセージを送りたい場合、 ステーションはまず、ARP キャッシュ内の IP アドレスを探します。そして対応する DLC アドレスを見つけ、メッセージに適切なアドレスを付けることができます。

 ステーションがある IP アドレスと通信をしようとしたいのに、ARP キャッシュにその IP アドレスがない場合、このようなときに呼び出されるのが ARP です。 このような場合、ステーションは DLC 部分にブロードキャストアドレスを設定して ARP フレームを送り出します。これはブロードキャストです。 ネットワーク上のすべての IP ステーションがこのフレームを受取ります。 ARP ブロードキャストは「わたしの探している IP アドレスを持っていたら返事をしてください。その DLC アドレスを教えてください」と言っているのです。 ネットワーク上のステーションが、その ARP フレーム中の IP アドレスを持っていたら、ARP を送ってきたステーションに直接応答をします。 ARP を送ったステーションは、自分の ARP キャッシュを更新し、通信が始まります。 どのステーションも応答しなければ、タイムアウトとなります。