ARP要求・ARP応答

ここでは、ARP要求・ARP応答の動作について説明します。

下の図を見て下さい。コンピュータAからコンピュータEへ通信する場合の動作について説明していきます。

コンピュータA、コンピュータEのIPアドレスは次のようになっています。

  • コンピュータAのIPアドレス・・・192.168.1.1/24
  • コンピュータEのIPアドレス・・・192.168.1.5/24

コンピュータAは、コンピュータEと同じネットワークに所属するかどうかを調べます。

 コンピュータAが所属するネットワークは、自分のIPアドレスと自分に設定されたサブネットマスクから論理積を求めることで知ることができます。

192.168. 1. 1 ←コンピュータAのIPアドレス
AND 255.255.255. 0 ←コンピュータAに設定されたサブネットマスク
-----------------------
192.168. 1. 0
論理積

 コンピュータEが所属するネットワークは、コンピュータEのIPアドレスと自分に設定されたサブネットマスクから論理積を求めることで知ることができます。

192.168. 1. 5 ←コンピュータEのIPアドレス
AND 255.255.255. 0 ←コンピュータAに設定されたサブネットマスク
-----------------------
192.168. 1. 0
論理積

すると、コンピュータA、コンピュータEが共に「192.168.1.0」に所属することが分かります。

次にコンピュータAは、自分のARPテーブルを調べます。

ARPテーブルとは、宛先IPアドレスとMACアドレスとの対応表です。

各コンピュータは、下のようなARPテーブルを持っています。

IPアドレスMACアドレス
192.168.1.200:17:42:5B:33:02
192.168.1.300:17:42:5B:33:02
192.168.1.400:17:42:5B:33:02
192.168.1.500:17:42:5B:33:02

上のようなARPテーブルは、宛先の端末と通信する度に学習して構築し、通信の度に更新して行きます。

 既に、宛先IPアドレス「192.168.1.5」のMACアドレスを学習していれば、コンピュータAは、ARPテーブルにあるMACアドレス「00:17:42:5B:33:05」を使用して、パケットをコンピュータE宛に送信します。

 ここでは、まだコンピュータEのMACアドレスを学習していなかったとして、話を続けて行きます。

 コンピュータEのMACアドレスを自分のARPテーブルの中に見つけることができない場合、コンピュータEのMACアドレスを調べるためにブロードキャストを送信します。

そのブロードキャストがARP要求なのです。

 自分のARPテーブル内に宛先IPアドレスに対応するMACアドレスを見つけられない場合、コンピュータEのMACアドレスを調べるために、ARP要求を行います。

 コンピュータAは、宛先MACアドレスを「FF:FF:FF:FF:FF:FF」、目標IPアドレスを「192.168.1.5」としたブロードキャストをネットワーク内に流します。

 ネットワーク層のIPアドレスのブロードキャストアドレスは、「255.255.255.255」などがありますが、データリンク層のMACアドレスのブロードキャストアドレスには、「FF:FF:FF:FF:FF:FF」を使用します。

「FF:FF:FF:FF:FF:FF」は、データリンク層における全ての端末宛という意味になります。

コンピュータAは、下のようなARP要求パケットをネットワーク内に流します。

  • 宛先MACアドレス   ・・・ FF:FF:FF:FF:FF:FF ←ブロードキャストアドレス
  • 送信元MACアドレス  ・・・ 00:17:42:5B:33:01 ←コンピュータAのMACアドレス
  • 目標IPアドレス    ・・・ 192.168.1.5

そうすると、「192.168.1.0」ネットワーク内の全ての端末がこのARP要求(ブロードキャスト)を受け取ることになります。

ルータでは

 ルータは、特にブロードキャストのリレーをする設定を行っていなければ、デフォルトでブロードキャストアドレスをブロックします。

その結果、「192.168.2.0」ネットワークへは、このARP要求は流れないことになります。

そうすることで、不要なパケットを他のネットワークへ流出しないようにしています。

コンピュータB~コンピュータDでは

 このブロードキャストは、コンピュータB、コンピュータC、コンピュータDにとって、データリンク層レベルでは、自分宛なのでネットワーク層に渡しますが、ネットワーク層レベルで自分宛でないことが分かるので破棄します。

コンピュータEでは

 コンピュータEでは、このARP要求は、データリンク層レベルで自分宛なので上位層であるネットワーク層に渡します。そして、自分宛であることが分かるので、返事する用意を始めます。この返事のことをARP応答と言います。

ARP要求を受け取ったコンピュータEは、自分のMACアドレスを知らせるためにARP応答を返します。

 コンピュータEは、宛先MACアドレスをコンピュータAのMACアドレス「00:17:42:5B:33:01」、目標IPアドレスを「192.168.1.1」としたユニキャストをネットワーク内に流します。

コンピュータEは、下のようなARP応答パケットをネットワーク内に流します。

  • 宛先MACアドレス   ・・・ 00:17:42:5B:33:01 ←コンピュータAのMACアドレス
  • 送信元MACアドレス  ・・・ 00:17:42:5B:33:05 ←コンピュータEのMACアドレス
  • 目標IPアドレス    ・・・ 192.168.1.1

ARP応答は、コンピュータAにユニキャストで送られます。

ARP要求はブロードキャスト、ARP応答はユニキャストで送られることに注意して下さい。

ルータ、コンピュータB~コンピュータDでは

 ARP応答は、ユニキャストです。宛先MACアドレスは、コンピュータAのMACアドレス「00:17:42:5B:33:01」になっています。

 このARP応答はこのネットワーク上のルータ、コンピュータB、コンピュータC、コンピュータDに届きますが、データリンク層レベルで自分宛でないことが分かるので、この時点で破棄します。

 ARP要求では、宛先MACアドレスがブロードキャストアドレスになっており、ネットワーク層レベルでないと破棄できませんでしたが、ユニキャストではデータリンク層レベルで破棄されるため、各端末への負荷は少なくなります。

※ARP応答が、全ての端末に届くと説明しましたが、スイッチなどの機器で各端末が接続されている場合は、この限りではありません。

コンピュータAでは

コンピュータAは、このARP応答を受け取り、コンピュータEのMACアドレスを知ることができます。

 そして、次からの通信に備えて、コンピュータAは、自分の持つARPテーブルに、コンピュータEのIPアドレスとMACアドレスの対応情報を追加します。

 コンピュータAは、次のコンピュータEとの通信は、このARPテーブルを参照することでコンピュータEのMACアドレスを知ることができるので、次の通信からコンピュータEへのARP要求を行いません。

※ARPテーブルは、定期的にリフレッシュされるため、しばらく通信がない場合には、ARP要求が行われます。