ネットワーク基礎学習③ ARP
ARPとは
なぜ ARPが必要か。
そもそもデータ通信を行うためには、以下の4つのアドレスが必要です。
ネットワーク内のIPアドレスは可変(住所で言うと引越可)なもので、 MACアドレスは不変(住所で言うとそこに住む人)であるため、データ送信先の場所と、その場所にいるものがデータを受け取って欲しい機器であることが保証されている必要があります。
よって、「IPアドレス」は最終的なデータの送り先を「MACアドレス」はどの機器に伝送するかを識別するために必要だということです。
ARPリクエスト・ARPリプライ・アドレス解決
宛先のMACアドレスを知るためには、まず「ブロードキャスト通信」でネットワーク内の全てのホストに「ARPリクエスト」を投げます。例えるなら、館内放送で「どこどこにお住まいの○○さんいますかー?」と全体に聞かれてる感じですね。
あまり詳しく説明しませんが、ARPリクエストのフレームの中身はこんな感じ↓
次に「ARPリプライ」ですが、、、、
もしネットワーク内に、 IPアドレスに対応したホストがあれば、そのホストは自分のMACアドレスを格納した「ARPリプライ」を「ユニキャスト」で返します。
ホストCのように無関係の場合は、ARPリクエストをそのまま破棄します。
フレームの中身は、こんな感じ↓↓
ブロードキャスト、ユニキャストの説明は以下の記事で解説してます。↓
上記のようにARPの一連の動作によってMACアドレスを認識することを「アドレス解決」といいます。
ちなみに、先ほど紹介した動作は、同じセグメント内での動作になります。
※インターネットを個々のネットワークに分割していった時の、一つ一つの「部分=ネットワーク」のことをセグメントと呼びます。
別セグメントのMACアドレスを知る
先に説明すると、ARPはセグメントごとに発生します。
例えば、ルーター(デフォルトゲートウェイ)を経由して、別のネットワーク(セグメント)にあるホストの MACアドレスを知りたい場合は以下のような動作になります。
セグメントAにない場合は、ルーター(デフォルトゲートウェイ)がルーター自身のMACアドレスをARPリプライで返します。
これによってホストAは、セグメントBにあるホストに送信したい場合は、ルーターにデータを送信すればよくなります。(通常はセグメント内に目的のホストがなければ、デフォルトゲートウェイにデータがいくようにルーティングされています。)
その後そのルーターが、「セグメントB」にARPリクエストを流し、宛先APアドレスから宛先のMACアドレスを調べます。
宛先のホストが見つかれば、セグメントAの時と同様に、ARPリプライをルーターに返します。
これによってルーターから目的のホストへデータを送信することができるようになりました。
このようにデータを送信する際に、経由するセグメントが増えれば増えるほど、セグメントごとにARPをすることになります。