【ネットワーク基礎】ARPとは何か
はじめに
「IPアドレス」や「MACアドレス」は通信において非常に重要な役割を果たします。
それに加えて、「ARP(アープ)」という仕組みも重要です。
初学者にとって聞きなれないモノですが、実はネットワーク通信においてとても重要な役割を果たしています。
ARPとは何か、なぜ必要なのかをざっくりできる限りわかりやすく解説していきます。
ARPとは
ARP Address Resolution Protocolの略で、IPアドレスからMACアドレスを調べる(IPアドレスをMACアドレスに変換する)ためのプロトコル(通信手順)で、データリンク層(L2)で動作します。
パソコンが別の機器にデータを送るとき、IPアドレスだけでは相手の機器を特定できません。実際にデータを届けるには、MACアドレスが必要になります。
主に、同一ネットワーク内でIPアドレスを使って通信するために必要な物理アドレス(MACアドレス)を取得する目的で使われます。
ルーターをまたぐ通信では、宛先のIPアドレスではなく、ゲートウェイ(ルーター)のMACアドレスをARPで調べます。
IPアドレスを持っている通信相手が、物理的なネットワークインターフェースに関連付けられたMACアドレスを知るためにARPが使われます。
通常、ネットワーク層で通信が行われる際、データリンク層(MACアドレス)の情報が必要になります。ARPは、送信元が宛先のMACアドレスを知るために使われます。
ARPの仕組み(超ざっくりな流れ)
※https://itmanabi.com/arp-mac-ip/ より
- 送信元のPCが「192.168.0.254にデータを送りたいけど、MACアドレスがわからない」となる
- ネットワークに「192.168.0.254のMACアドレスを知ってる人いますか?」とARPリクエストを送る(ブロードキャスト)
※ネットワーク内のすべての端末に送られる - 該当の機器(192.168.0.254)が「私です!MACアドレスは00:11:22:33:44:55です」とARPリプライで答える
- 送信元PCは「なるほど、MACアドレスはこれですね!」と覚えてデータを送る
※ARPテーブルに記録する。これにより、次回からはもうARPリクエストをしなくても、ARPテーブルを見て直接MACアドレスを使って通信することができるようになる。
ARPの動作
送信元がある宛先IPアドレスへの通信を始めようとした場合、そのIPアドレスに対応するMACアドレスがわからないと通信ができません。そこで、送信元がARPを使用して、宛先のMACアドレスを取得します。
※スイッチやハブはARP処理を行ないませんが、ARPリクエストをフレームの転送として処理します。
処理の流れ
ARPリクエスト
送信元のデバイスは、宛先のIPアドレスに対して「このIPアドレスに対応するMACアドレスを教えてください」といった内容のARPリクエストをブロードキャストします。これにより、ネットワーク内のすべてのデバイスがこのリクエストを受け取ります。
ARPレスポンス
宛先のIPアドレスを持つデバイスは、そのMACアドレスを返すARPレスポンスを送信元に返します。
これにより、送信元は宛先のIPアドレスに対応するMACアドレスを知り、その後はそのMACアドレスを使って通信を行ないます。
ARPテーブル
IPアドレスと、それに対応するMACアドレスを一覧で記録した表です。
これは、ネットワーク通信のたびにARPでMACアドレスを問い合わせていたら、無駄な通信が多くなってしまうため、一度分かったIPアドレスとMACアドレスのペアは、ARPテーブルに一定時間保存しておきます。
こうすることで、前回行なった処理を何度も繰り返さずにすみ、無駄な通信を削減することができます。
まとめ
ARPはIPアドレスからMACアドレスを調べるためのプロトコルです。ちなみにその逆のMACアドレスからIPアドレスを調べるプロトコルはRARPと言います。
ARPテーブルは、IPアドレスとMACアドレスの対応を記録する表として、数分間機能し、これにより無駄な通信を削減していることが理解できたかと思います。
最後までお読みいただき、ありがとうございました。
参考・画像引用元URL
Discussion