1. ホーム
  2. 記事一覧
  3. ネットワークの基本 ARPとRARPについて

2023.08.27

ネットワークの基本 ARPとRARPについて

1. はじめに

インターネットとネットワークの基本

インターネットなどで私たちがスムーズに情報をやり取りするための背後には、コンピュータやデバイスの相互通信を支えるネットワークがあります。このネットワークでのコミュニケーションには、IPアドレスとMACアドレスのような「アドレス」が中心的に関与しています。

ARPとRARPの必要性

IPアドレスとMACアドレスの相互変換が必要な場面でARPとRARPが役立っています。ARPはIPアドレスからMACアドレスを、RARPはMACアドレスからIPアドレスを調べる役割を果たします。これらのプロトコルはデバイス間の効率的な通信をサポートしています。

ARPとRARPはネットワーク通信の基盤として働く重要な要素です。この記事はその役割と重要性を理解していただくことを目標とします。

2. ARP (Address Resolution Protocol) の解説

定義と基本的な役割

ARP(Address Resolution Protocol)はネットワーク上でデバイスが持つIPアドレスをMACアドレスに変換するためのプロトコルです。これによりデータの宛先が特定され正確に通信が行われます。

なぜARPが必要なのか?

IPアドレスとMACアドレスの関係

ネットワーク上のデバイスはIPアドレスとMACアドレスの両方を持っています。IPアドレスはネットワーク上の位置を示す一方、MACアドレスはネットワークインターフェースカード(NIC)に固有の物理的アドレスです。データ送信時正確なデバイス宛にデータを送るためには、これらのアドレスの相互変換が必要です。

データ送信の際のアドレス変換

通常アプリケーションや上位のプロトコルはIPアドレスを使用して通信を行います。しかし実際の物理的な通信にはMACアドレスが使用されます。ARPはこのIPアドレスからMACアドレスへの変換を行い、データが正確に伝送されるようサポートします。

ARPの動作過程

ARPリクエストとARPレスポンス

デバイスがあるIPアドレスのMACアドレスを知りたい場合は、ARPリクエストをネットワーク上にブロードキャストします。このリクエストを受け取ったデバイスは自身のIPアドレスがリクエストされているものと一致する場合、自身のMACアドレスを含むARPレスポンスを返送します。

ARPテーブルの役割

デバイスはARPレスポンスを受け取るとその情報を一時的にARPテーブルに保存します。これにより同じデバイスへの通信が頻発する場合、毎回ARPリクエストを送る必要がなくなり通信の効率が上がります。

実例を使った説明

例えばデバイスAがデバイスBにデータを送信したいと思ったとき、デバイスBのIPアドレスは知っているがMACアドレスは知らない場合、デバイスAはARPリクエストを送りデバイスBからのARPレスポンスを待ちます。デバイスBからのレスポンスが来るとデバイスAはそのMACアドレスを知ることができ、データを正確にデバイスBに送信することができます。

3. RARP (Reverse Address Resolution Protocol) の解説

定義と基本的な役割

RARP(Reverse Address Resolution Protocol)はARPの逆の動作を行うプロトコルとして設計されました。MACアドレスからIPアドレスを取得するためのプロトコルであり、特にブート時のコンピュータが自身のIPアドレスを知るために使用されました。

RARPの背景

なぜRARPが開発されたのか?

初期のネットワーク環境において、多くのコンピュータはディスクレスであり、ネットワークから起動情報を取得する必要がありました。しかし、これらのマシンは物理的なMACアドレスは知っているものの、起動時に自身のIPアドレスは未知でした。この問題を解決するため、MACアドレスを使用してIPアドレスを問い合わせ、ネットワーク上での識別を可能にするRARPが開発されました。

RARPの動作過程

RARPリクエストとRARPレスポンス

デバイスが自身のIPアドレスを知りたい場合、RARPリクエストをネットワーク上にブロードキャストします。このリクエストには自身のMACアドレスが含まれています。RARPサーバはこのリクエストを受け取り、対応するIPアドレスを探し、RARPレスポンスとしてデバイスに返します。

RARPサーバの役割

RARPサーバはMACアドレスとIPアドレスのペアを保持したテーブルを持っています。デバイスからのRARPリクエストを受け取ると、このテーブルを参照し対応するIPアドレスをレスポンスとして返します。これによりデバイスは自身のIPアドレスを知ることができます。

実例を使った説明

ディスクレスのコンピュータAがネットワーク上で起動しようとしたとき、自身のMACアドレスは知っているがIPアドレスは知らない状態です。この時RARPリクエストをネットワーク上に送信します。RARPサーバはこのリクエストを受け取り保持しているテーブルから対応するIPアドレスを見つけ、コンピュータAにRARPレスポンスとして返します。これによりコンピュータAは自身のIPアドレスを知りネットワーク上での通信が可能となります。

4. ARPとRARPの違いと関連性

アドレス解決の方向性の違い

ARP (Address Resolution Protocol)

主にIPアドレスからMACアドレスを取得するプロセスを担当します。要するに、ネットワーク層のアドレスからデータリンク層のアドレスを知るための手段を提供します。

RARP (Reverse Address Resolution Protocol)

逆に、MACアドレスからIPアドレスを取得する役割を果たします。特定のハードウェアアドレスがどのネットワークアドレスに関連しているのかを知るための手段です。

使用シーンの違い

ARPの利用シーン

一般的なネットワーク通信の際に、IPアドレスを知っているがMACアドレスを知らない場面で使用されます。例えばあるデバイスが同じローカルネットワーク上の別のデバイスにデータを送信する際などです。

RARPの利用シーン

主にディスクレスのマシンがネットワーク上で起動する際に使用されます。これらのマシンはMACアドレスは知っているものの自分のIPアドレスを知らないため、RARPを使ってIPアドレスを取得します。

技術の進化による変遷と現在の使用状況

ARPの使用状況

ARPは今もアクティブに使用されており、ローカルネットワーク上での通信において中心的な役割を果たしています。

RARPの使用状況

RARPの使用は時間とともに減少し現在はあまり使用されていません。RARPの機能はより進化したプロトコルであるDHCP (Dynamic Host Configuration Protocol) に取って代わられました。DHCPはデバイスにIPアドレスを動的に割り当てるだけでなく、その他のネットワーク設定情報も提供します。

DHCP (Dynamic Host Configuration Protocol)

DHCPはデバイスがネットワークに接続する際に動的にIPアドレスやその他のネットワーク設定を割り当てるためのプロトコルです。これによりデバイスは手動で設定を行うことなくネットワークへの接続と通信を開始することができます。

5. まとめ

簡潔に言えば、ARPはデバイスが他のデバイスのMACアドレスを知るために使用される一方、RARPはデバイスが自身のIPアドレスを知るためにかつて使用されていたプロトコルです。今日ではRARPの役割は主にDHCPによって担われています。

【番外編】USBも知らなかった私が独学でプログラミングを勉強してGAFAに入社するまでの話

IT未経験者必見 USBも知らなかった私が独学でプログラミングを勉強してGAFAに入社するまでの話

プログラミング塾に半年通えば、一人前になれると思っているあなた。それ、勘違いですよ。「なぜ間違いなの?」「正しい勉強法とは何なの?」ITを学び始める全ての人に知って欲しい。そう思って書きました。是非読んでみてください。

「フリーランスエンジニア」

近年やっと世間に浸透した言葉だ。ひと昔まえ、終身雇用は当たり前で、大企業に就職することは一種のステータスだった。しかし、そんな時代も終わり「優秀な人材は転職する」ことが当たり前の時代となる。フリーランスエンジニアに高価値が付く現在、ネットを見ると「未経験でも年収400万以上」などと書いてある。これに釣られて、多くの人がフリーランスになろうとITの世界に入ってきている。私もその中の1人だ。数年前、USBも知らない状態からITの世界に没入し、そこから約2年間、毎日勉学を行なった。他人の何十倍も努力した。そして、企業研修やIT塾で数多くの受講生の指導経験も得た。そこで私は、伸びるエンジニアとそうでないエンジニアをたくさん見てきた。そして、稼げるエンジニア、稼げないエンジニアを見てきた。

「成功する人とそうでない人の違いは何か?」

私が出した答えは、「量産型エンジニアか否か」である。今のエンジニア市場には、量産型エンジニアが溢れている!!ここでの量産型エンジニアの定義は以下の通りである。

比較的簡単に学習可能なWebフレームワーク(WordPress, Rails)やPython等の知識はあるが、ITの基本概念を理解していないため、単調な作業しかこなすことができないエンジニアのこと。

多くの人がフリーランスエンジニアを目指す時代に中途半端な知識や技術力でこの世界に飛び込むと返って過酷な労働条件で働くことになる。そこで、エンジニアを目指すあなたがどう学習していくべきかを私の経験を交えて書こうと思った。続きはこちらから、、、、

note記事3000いいね超えの殿堂記事 今すぐ読む

エンベーダー編集部

エンベーダーは、ITスクールRareTECHのインフラ学習教材として誕生しました。 「遊びながらインフラエンジニアへ」をコンセプトに、インフラへの学習ハードルを下げるツールとして運営されています。

RareTECH 無料体験授業開催中! オンラインにて実施中! Top10%のエンジニアになる秘訣を伝授します! RareTECH講師への質疑応答可

関連記事