なぜARPは必要か?(IPアドレスMACアドレスの紐付け)
この記事では「なぜ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