🙇

なぜARPは必要か?(IPアドレスMACアドレスの紐付け)

2022/08/10に公開

この記事では「なぜARPは必要か?」というテーマについて考えてみます。イーサネット,IPという2つのプロトコルを関連させながら書いていきます。

MACアドレス、IPアドレス

ネットワークの世界においてアドレスを示すモノは2つしかありません。1つはMACアドレス、もう1つはIPアドレスです。2つはコインの裏表のような関係で1対1で紐付けられています。

MACアドレス:機器に固有の番号
IPアドレス:インターネット世界での住所

なぜ2つもアドレスが必要か?という疑問はあまり深く考えないことにします。ここでは「役割が異なるアドレスが2つあった方がより効率的に通信できるから」としておきます。MACアドレス/IPアドレスという異質なモノが2つあって、これら2つを結び付けることがARPが掲げる1番のテーマです。

異なる世界の住人

MACアドレスとIPアドレスは異なる世界の住人です。注目したいのが「どの層で動作するか?どのプロトコルが使われているか?どんな機器が使われるか?」という点です。

MACアドレス IPアドレス
どんなアドレスか? 機器に固有の番号 ネットワーク世界での住所
どの層で動作するか? L2:データリンク層 L3:ネットワーク層
どのプロトコルが使われているか? イーサネット(有線LAN) IP
どんな機器が使われるか? スイッチ ルーター

これら2つの世界を結びつけるのがARPの役割です。位置付けとしては、データリンク層とネットワーク層の中間に位置する存在です。

イーサネット/IPという全く異なる規格(プロトコル)を通訳するための存在ともいえます。イーサネットはMACアドレスのことしか分かりませんし、IPはIPアドレスのことしか分かりません。

ARPにはIPアドレスと対応するMACアドレスをIPへ教える役割があります。

なぜARPは必要か?

データを送信する場面を考えてみます。アプリケーション層で作ったデータはヘッダを付与されながらTCP/IPの階層をどんどん降りていきます。ネットワーク層ではIPが処理を行います。IPの役割はデータの経路を調べることです。そして宛先を特定するには2つのアドレスが必要になります。それがIPアドレスとMACアドレスです。IPは通信したい相手のIPアドレスが分かってから動きだすプロトコルであり、宛先IPアドレスは既に分かっているとします。

IPにはもう1つ大切な仕事があります。イーサネットへ宛先MACアドレスを教えることです。というのもイーサネットはIPから渡されたデータを言われた通りに運ぶだけだからです。自分でデータの宛先を調べることができないので、IPが教えてあげる必要があります。

イーサネットへMACアドレスを教えたいけど..

IPはイーサネットへMACアドレスを教える必要があります。しかしここで1つ問題がおきます。IPにはMACアドレスがわからないからです。MACアドレスはイーサネットの言語であり、IPアドレスはIPの言語です。またIPはあくまで経路のナビゲータであり、実際に運ぶのはイーサネットです。(つまりIPアドレスが分かってもイーサネットへMACアドレスを教えないと何もすることができません。)

イーサネット上でデータを運ぶには、イーサネットにわかるようにMACアドレスを教えてあげる必要があります。IPがMACアドレスのことを知るにはどうすれば良いのでしょうか。

ARP:1対1関係から割り出す

IPプロトコルがMACアドレスを知るために必要なのがARPです。MACアドレスとIPアドレスは基本的に1対1で紐付いていることは先述しました。そこでIPは『このIPアドレスと紐付いてるMACアドレスを教えて下さい。なぜならそれをイーサネットへ教えてあげたいのです。』とARPへ依頼します。ARPは対象のIPアドレスに紐付けられたMACアドレスを探し出し、IPへ教えます。


ARPがIPアドレスと紐付くMACアドレスを調べ出す

IPはARPから教えてもらったMACアドレスをイーサネットに伝え、データの転送をお願いします。するとイーサネットはIPに言われた通りにフレームを組み立て、データをLANに送り出します。イーサネット/IPという2つのプロトコルを関連させて、ここまでARPがIPアドレス/MACアドレスを結び付ける仕組みを見てきました。

Discussion