ネットワーク用語 > ARP
ARP = Address Resolution Protocol アドレス解決プロトコル
ARPとは【Address Resolution Protocol】(アドレス解決プロトコル) - IT用語辞典
ARP 【Address Resolution Protocol】(アドレス解決プロトコル)
読み :アープ
TCP/IPネットワークにおいて、IPアドレスからEthernetの物理アドレス(MACアドレス)を求めるのに使われるプロトコル。
物理アドレスを元にIPアドレスを求めるのは RARP(Reverse ARP)。
Address Resolution Protocol - Wikipedia
Address Resolution Protocol (アドレス解決プロトコル、略称:ARP)は、イーサネット環境において、IPアドレスからそれに対応するMACアドレスを動的に得るために用いられるプロトコル。
RFC 826で定義され、その後 RFC 5227, RFC 5494 により内容のエンハンスが行われている。
概要
TCP/IPにおいて、IPパケットを送受信するためには、下位のデータリンク層のアドレスを取得する必要があり、MACアドレスが必要な場合に ARP が用いられる。
イーサネットの場合論理的なIPアドレスを物理的なハードウェア・アドレスであるMACアドレスに変換する必要がある。
動作
要求パケットに送信元の IPアドレス・MACアドレスと通信相手の IPアドレスの情報を格納して、Ethernet ネットワークにブロードキャストする。
要求パケットを受け取った各ノードは、自分の IPアドレスと同一であれば、自分の MACアドレスを送信元に伝える。
こうして、IPアドレスから MACアドレスを取得する。
ARPキャッシュ
効率を上げるために一度取得したIPアドレスとMACアドレス間のマッピング情報をキャッシュとして保持する。
保持時間は一般的に20分である。
代理ARP
他のネットワークにARP要求があった場合にルーターがホストに代わって回答する仕組みである。
http://www.itbook.info/study/arp2.html
ARPには、「ARPリクエスト」と「ARPリプライ」という2種類あります。
ARPリクエストは、MACアドレスを知りたいノードが対象のIPアドレスとMACアドレスの対応を調べるために使用します。
この時の送信方法は、ネットワーク内の全ノードにデータを送信する「ブロードキャスト」が使われます。
ARPリクエストに対して、ターゲットとなるIPアドレスを持っているノードが存在していた場合、そのノードが「ARPリプライ」を返します。
「ARPリクエスト」はブロードキャストで行われたが、「ARPリプライ」はユニキャスト(1対1通信)で行われます。
以上のようなやり取りによって、MACアドレスを知ることが出来るわけです。
ARPによって一度学習したMACアドレスとIPアドレスの関連付け情報は、「ARPキャッシュ」としてそのノード上で一定時間保存されます。
そして次に通信をする場合は、このARPキャッシュを参照して該当する関連付け情報があれば、その情報を使用します。
このように出来るだけ無駄なトラフィックをネットワーク上に流さないようにしているわけです。
ARPキャッシュの保持時間は、OSなどにより異なり、Windowsの場合は2分、Linuxでは15分、ルータは1時間となっています。
そして一定時間更新されない関連付け情報は保持時間を過ぎると削除されます。
http://atnetwork.info/ccna2/arp05.html
コンピュータAが送信するARP要求パケットは下の構成になっています。
宛先MACアドレス | 送信元MACアドレス |
FF:FF:FF:FF:FF:FF | 00:17:42:5B:33:01 |
目標MACアドレスは、分からないので「0」が格納されます。
コンピュータEが、コンピュータAに送信するARP応答パケットは下の構成になっています。
宛先MACアドレス | 送信元MACアドレス |
00:17:42:5B:33:01 | 00:17:42:5B:33:05 |
@IT:連載 基礎から学ぶWindowsネットワーク 第11回 MACアドレスを解決するARPプロトコル 1.ARPプロトコルとは
パケットの構造は以下のように非常に単純であり、このパケットを送信元とあて先コンピュータの間で1回やりとりすることにより、お互いの持つIPアドレスとMACアドレス情報を交換している。
実際のMACアドレスは物理的なネットワーク媒体によって異なるが、ここではイーサネットの場合を示しておく。
イーサネットでは、お互いのコンピュータ(イーサネットでは「ノード」と呼ぶ)を6bytesのMACアドレスで識別している。
そのため、以下のARPパケットでは、6bytes(48bit)分のMACアドレスが格納できるようになっている。
ARPパケットの構造
ARPはIPアドレスからMACアドレスを求めるためのプロトコルであり、パケットの内部には送信元とあて先のIPアドレスとMACアドレスを格納するためのフィールドが用意されている。
MACアドレスとIPアドレスの格納部分は可変長であり、その長さ(bytes長)はHLENとPLENにそれぞれ書き込まれている。
イーサネットの場合はHLENは6である。PLENはIPv4では常に4となっている(IPアドレスは32bit、つまり4bytesだから)。
各フィールドの意味について説明しておこう。
これはネットワークの物理的な媒体の種類を表す、16bit幅の数値である。
イーサネットではその値は「0x0001」であり、ほかにもフレーム・リレーは0x000f、HDLCは0x0011などいくつか決まっているが(定義はRFC1700「Assingned Numbers」などに記載)、あまり深い意味は持たない。
これはARPプロトコルで取り扱う上位のプロトコルの種類を表す。
0x0800はTCP/IPプロトコルを表す(これはイーサネット・フレーム中にある、TCP/IPプロトコルを表すタイプと同じである)。
「HLEN(hardware address length)」はMACアドレスの長さを表す。
イーサネットの場合はこの値は「6」となっており、MACアドレスは6bytes(48bit)であることを示している。
「PLEN(protocol address length)」は上位のプロトコルで利用されるアドレス情報の長さを表す。
Version 4のTCP/IPプロトコルではIPアドレスは4byte(32bit)であるので、このフィールドの値は「4」となっている。
ここにはARPの動作の種類を表すためのコードが入っている。
ARPプロトコルを使う場合は、最初にARP要求を送信し、該当するコンピュータがARP応答を返すというふうに動作する。
要求とその応答を区別するために2つのコードが割り当てられているが、さらにARPだけでなく、後述するRARPというプロトコルでもこの構造のパケットを使うため、可能な動作としては以下の4つがある(ARPは必須だが、RARPは実装されていないことも多い)。
コード | 動作 |
1 | ARP要求。最初にARP要求を送信する側が利用する |
2 | ARP要求への応答。ARP要求に該当するコンピュータが応答する場合に利用する |
3 | RARP要求。RARP要求を送信する側が利用する |
4 | RARP要求への応答。RARP要求をサービスするサーバ(RARPサーバ)が応答する場合に利用する |
ARP要求もしくはARP要求への応答を送信する側のコンピュータが、自分自身のMACアドレスを格納する。
イーサネットの場合、MACアドレスは6bytesなので、このフィールドに自分自身のMACアドレスを埋め込んでパケットを送信する。
ARP要求もしくはARP要求への応答を送信する側のコンピュータが、自分自身のIPアドレスを格納する。
IPv4の場合はIPアドレスは4bytesなので、このフィールドに自分自身のIPアドレスを埋め込んでパケットを送信する。
送信元のMACアドレスとIPアドレスは、必ず自明なので、このフィールドには必ず何らかの値がセットされていることになる。
これに対して、以下の2つのフィールドは、ARPの要求送信時には不明なので、0のままとなっている。
ARPの応答パケットにおいて、ARPパケットを返送する先(つまりもともとのARP要求を最初に送信した側)のコンピュータのMACアドレスがセットされるフィールド。
ARPの応答パケットにおいて、ARPパケットを返送する先(つまりもともとのARP要求を最初に送信した側)のコンピュータのIPアドレスがセットされる。
ARPパケットの構造は、以上のように利用するネットワーク媒体(MACアドレスの長さ)によって長さが変わる可能性がある。
だがイーサネット(およびその互換技術)が広く普及した現在では、ほとんどの場合は上記のような構造のARPパケットを見る機会が多いだろう。