Computer Network 3 Document 09
通信ネットワーク実習3第9回補足資料

5.3 ARP

IPアドレスからそれに対応するMACアドレスを調べるプロトコルがARPである. ARP はOSI参照モデル第3層のプロトコルである.

この節に限らず,TCP/IPを理解するには「ネットワーク」という 単位を理解することが重要である.ここでいうネットワークは 一般的なコンピュータネットワークの意味ではなく, ブリッジ,スイッチなどの OSI参照モデル第2層の装置で接続されたホストのグループをさす. 同じネットワークのホストとは, ネットワークアドレスが同一のホストのことである.

同じネットワークのホスト間ではOSI参照モデル第2層の機能 で通信できる.異なるネットワークのホストで間では第2層の 機能だけでは通信できない.第3層の機能が必要になる.

5.3.1 ARP の概要

ARP は IP(v4)アドレスからMACアドレスを調べるプロトコルであるが, ARP で調べる IPアドレスは自分と同じネットワーク内のIPアドレスに 限られるということを押さえておくと理解しやすい.ARPは自分の ネットワークへのブロードキャストとそれへの返答で 行われるため,他のネットワークへARPは伝わらない.ARP は OSI参照モデル第3層のプロトコルであるが,第2層の機能で 通信できる通信相手にしか使われない.

IPアドレスはOSI参照モデル第3層のアドレスなので IPアドレスで宛先を示すときは自分と同じネットワークである場合と 自分と異なるネットワークである場合がある. 宛先が自分と同じネットワークであればそのIPアドレスを知るための ARPを自分のネットワークにブロードキャストで流すことで 宛先のMACアドレスを知ることができる.

宛先が自分と異なるネットワークにある場合,OSI参照モデル 第 3 層の機能が必要になる.宛先のIP アドレスに到達するためには経路制御表を用いた経路制御 が行われる.経路制御はいくつかのルータとネットワークを経由して 宛先IPアドレスのホストへ到達できる経路を探す作業である.

ルーターは複数のネットワークインターフェースをもち, 複数のネットワークに接続されたホストである. 発信元ホストは経路制御表から宛先IPアドレスに 到達するために次にデータを送るルータの ネットワークインターフェースのうち 自分のネットワークにある ネットワークインターフェースのIPアドレスを知る. これをネクストホップという.宛先IPアドレスが 自分と異なるネットワークに所属している場合は ネクストホップのIPアドレスに対するARPを行う. この場合も自分の所属するネットワークのホストに対して しかARPを行わないことがわかる.

5.3.2 ARP の仕組み

「同一リンク上」とは「同じネットワーク上にある」ことをさす.

同じネットワーク上にあるホストはOSI参照モデル第2層の機能で通信ができる. 相手のMACアドレスを知る前でもブロードキャストを行うことで データを送ることが可能である.基本的なネットワークでは ホストから発信されたデータ(OSI参照モデル第2層ではフレームとよぶ)は ブロードキャストでない場合も同じネットワーク上のホスト全てに伝わる. 宛先として指定されていない ホストへは届かないのではなく届くが無視するだけである. 実際にはラーニングブリッジ(教科書p.48)を利用したネットワークでは 宛先ホストがあるセグメントだけにフレームを送信することも 行われるが,ここでは同じネットワーク上のホスト全てにデータが 送られると考えると理解しやすい.

教科書p.193 5.3.2節ははホストAから同じネットワークにあるホストBへ IPパケットを送る例である.IPパケットの宛先が別のネットワーク である場合,ホストBにあたるのはネクストホップとなり, やはり同じネットワークのホストへのARPの送信となる.教科書p.193の 17目の 「ホストAが同一リンク上のホストBにIPパケットを送信したい状態だとします.」 という部分を「ホストAが同一リンク上のホストBのMACアドレスを 知りたい状態だとします.」に読み替えるとどちらのケースでも あてはまる説明になる.

ARPのパケットは教科書p.195図5.7に示されている.ARP はOSI参照モデル3層のプロトコルなのでこれに 2 層の ヘッダである送信元MACアドレス,宛先MACアドレスなどが 付加されて 2層のフレームとして送信される.

ARP は問い合わせである ARP 要求パケットがホストAから出され, B からARP 応答パケットを A に届けられる 2 ステップで完了する.

ARPパケットの構成は教科書p.195図5.7に示されているが, 「探索するMACアドレス」と「探索するIPアドレス」は ARPのRFC 826 に従って「ターゲットMACアドレス」,「ターゲットIPアドレス」 としないと誤解を生みやすい.

ARP要求パケットとARP応答パケットは教科書図5.7の「オペレーション」 の位置の16ビットで区別される.

ARP要求パケット

教科書図5.7の各区画に以下のようにデータをセットする.

上記以外の区画にもデータがセットされるが説明を省略する. こうして作られた ARP パケットはOSI参照モデル第3のパケットなので これに第2層のヘッダ(とトレイラ)が付加される.

2層フレームのヘッダの送信元MACアドレスはホストAのMACアドレスがセットされる.2 層フレームのヘッダの宛先MACアドレスは, ARP要求パケットを出す時点ではホストAはホストBのMACアドレスを 知らないのでブロードキャストアドレス(FF:FF:FF:FF:FF:FF)がセットされ, ブロードキャストとして送られる.ブロードキャストフレームは ホストAと同じネットワークのホスト全てが受け取る.受け取ったホスト は「ターゲットIPアドレス」が自分でなければ破棄,自分宛であれば 以下のARP応答パケット送信の処理を行う.

ARP応答パケット

教科書図5.7の各区画に以下のようにデータをセットする.

上記以外の区画の説明は省略する. これに第2層のヘッダ(とトレイラ)が付加される.

2層フレームのヘッダの送信元MACアドレスはホストBの MACアドレスがセットされる.2 層フレームのヘッダの宛先MACアドレスは, ARP要求パケットによりホストAのMACアドレスがわかっているので それをセットし,ユニキャストで送信する.

5.3.3 IPアドレスとMACアドレスは両方とも必要?

原理的には一つのネットワークに全ホストを接続すれば OSI参照モデル第2層のMACアドレスだけで通信できるはずである. しかし第2層の通信は 原則的にはユニキャストであっても同じネットワークの全ホストに届く ように信号が送られる. (宛先に指定されていないホストは破棄するだけ). このため、実用的に接続できるホスト数には上限がある.

第2層で繋げられる一つのネットワークのホストを実用的な台数に抑え, ネットワーク間をルータで橋渡しを行って第3層のIPの経路制御機能を利用して ネットワークからネットワークへバケツリレーを行うことで通信できるように TCP/IPのは構成されている.

5.3.4 RARP

RARPはMACアドレスから設定済みのIPアドレスを調べるのではなく, 自分がつけるべきIPアドレスをサーバーから教えてもらう目的で 使われる.

5.3.5 Gratuitous ARP

Gratuitous ARP は自分が設定しようとしているIPアドレスが 先に使われていないか調べるために使われる.

5.3.6 代理ARP

代理ARPはネットワークをサブネットに分割した環境で ルータをはさんだ別々のサブネットのホスト間の通信で利用できる 技術である.

ホストAのサブネットとホストBのサブネットが代理ARPができるルータを介して 接続されているとする.ホストAは同じネットワークと認識している ホストBに代理ARPを使うことでアクセスできる. ホストAからのARP要求パケットはブロードキャスのなので ルータを超えられないが,ルータがホストAに対して 自分のMACアドレスがホストBのMACアドレスであるように データを設定したARP応答パケットを返す.ルータは別の サブネットにホスト B があることを知っているので ホストAからのBへの通信を肩代わりして行う.

最近はルータを越えたネットワークは独立したネットワークであるように 一貫して設計し,ルーティングを設定してIPで通信できるように するのが主流である.


Updated in July 3, 2020, Yamamoto Hirosh