ネットワーク用語 > ARP

ARP

ARP = Address Resolution Protocol アドレス解決プロトコル

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要求があった場合にルーターがホストに代わって回答する仕組みである。

ARPの動作原理

http://www.itbook.info/study/arp2.html

ARPには、「ARPリクエスト」と「ARPリプライ」という2種類あります。

ARPリクエスト

ARPリクエストは、MACアドレスを知りたいノードが対象のIPアドレスMACアドレスの対応を調べるために使用します。
この時の送信方法は、ネットワーク内の全ノードにデータを送信する「ブロードキャスト」が使われます。

arp3.jpg

ARPリプライ

ARPリクエストに対して、ターゲットとなるIPアドレスを持っているノードが存在していた場合、そのノードが「ARPリプライ」を返します。

arp4.jpg

「ARPリクエスト」はブロードキャストで行われたが、「ARPリプライ」はユニキャスト(1対1通信)で行われます。

以上のようなやり取りによって、MACアドレスを知ることが出来るわけです。 

ARPキャッシュ

ARPによって一度学習したMACアドレスとIPアドレスの関連付け情報は、「ARPキャッシュ」としてそのノード上で一定時間保存されます。
そして次に通信をする場合は、このARPキャッシュを参照して該当する関連付け情報があれば、その情報を使用します。

このように出来るだけ無駄なトラフィックをネットワーク上に流さないようにしているわけです。
ARPキャッシュの保持時間は、OSなどにより異なり、Windowsの場合は2分、Linuxでは15分、ルータは1時間となっています。
そして一定時間更新されない関連付け情報は保持時間を過ぎると削除されます。

ARP要求・ARP応答の中身

http://atnetwork.info/ccna2/arp05.html

ARP要求の中身

arp0501.jpg

コンピュータAが送信するARP要求パケットは下の構成になっています。

arp0502.jpg
  • MACヘッダ
    ARP要求は、ブロードキャストになります。その為、宛先MACアドレスは、「FF:FF:FF:FF:FF:FF」になります。
宛先MACアドレス送信元MACアドレス
FF:FF:FF:FF:FF:FF00:17:42:5B:33:01
  • ARPヘッダ
    ARP要求パケットのヘッダは、次のようになります。
ARP_request_header.png

目標MACアドレスは、分からないので「0」が格納されます。

ARP応答の中身

arp0503.jpg

コンピュータEが、コンピュータAに送信するARP応答パケットは下の構成になっています。

arp0504.jpg
  • MACヘッダ
    ARP応答は、ARP要求とは違い、ブロードキャストではなく、ユニキャストになります。
    宛先MACアドレスは、ARP要求時にコンピュータAのMACアドレスが判明しているので、そのMACアドレスを使用します。
宛先MACアドレス送信元MACアドレス
00:17:42:5B:33:0100:17:42:5B:33:05
  • ARPヘッダ
    ARP応答パケットのヘッダは、次のようになります。
ARP_reply_header.png

ARPプロトコル・パケットの構造

@IT:連載 基礎から学ぶWindowsネットワーク 第11回 MACアドレスを解決するARPプロトコル 1.ARPプロトコルとは

パケットの構造は以下のように非常に単純であり、このパケットを送信元とあて先コンピュータの間で1回やりとりすることにより、お互いの持つIPアドレスとMACアドレス情報を交換している。

実際のMACアドレスは物理的なネットワーク媒体によって異なるが、ここではイーサネットの場合を示しておく。
イーサネットでは、お互いのコンピュータ(イーサネットでは「ノード」と呼ぶ)を6bytesのMACアドレスで識別している。
そのため、以下のARPパケットでは、6bytes(48bit)分のMACアドレスが格納できるようになっている。

fig02.gif

ARPパケットの構造
ARPはIPアドレスからMACアドレスを求めるためのプロトコルであり、パケットの内部には送信元とあて先のIPアドレスとMACアドレスを格納するためのフィールドが用意されている。
MACアドレスとIPアドレスの格納部分は可変長であり、その長さ(bytes長)はHLENとPLENにそれぞれ書き込まれている。
イーサネットの場合はHLENは6である。PLENはIPv4では常に4となっている(IPアドレスは32bit、つまり4bytesだから)。

各フィールドの意味について説明しておこう。

■ハードウェア種別(0x0001)

これはネットワークの物理的な媒体の種類を表す、16bit幅の数値である。
イーサネットではその値は「0x0001」であり、ほかにもフレーム・リレーは0x000f、HDLCは0x0011などいくつか決まっているが(定義はRFC1700「Assingned Numbers」などに記載)、あまり深い意味は持たない。

■プロトコル(0x0800)

これはARPプロトコルで取り扱う上位のプロトコルの種類を表す。
0x0800はTCP/IPプロトコルを表す(これはイーサネット・フレーム中にある、TCP/IPプロトコルを表すタイプと同じである)。

■HLEN(0x06)

「HLEN(hardware address length)」はMACアドレスの長さを表す。
イーサネットの場合はこの値は「6」となっており、MACアドレスは6bytes(48bit)であることを示している。

■PLEN(0x04)

「PLEN(protocol address length)」は上位のプロトコルで利用されるアドレス情報の長さを表す。
Version 4のTCP/IPプロトコルではIPアドレスは4byte(32bit)であるので、このフィールドの値は「4」となっている。

■動作(ARP/RARP)

ここにはARPの動作の種類を表すためのコードが入っている。
ARPプロトコルを使う場合は、最初にARP要求を送信し、該当するコンピュータがARP応答を返すというふうに動作する。
要求とその応答を区別するために2つのコードが割り当てられているが、さらにARPだけでなく、後述するRARPというプロトコルでもこの構造のパケットを使うため、可能な動作としては以下の4つがある(ARPは必須だが、RARPは実装されていないことも多い)。

コード動作
1ARP要求。最初にARP要求を送信する側が利用する
2ARP要求への応答。ARP要求に該当するコンピュータが応答する場合に利用する
3RARP要求。RARP要求を送信する側が利用する
4RARP要求への応答。RARP要求をサービスするサーバ(RARPサーバ)が応答する場合に利用する
ARP/RARPパケットにおける動作コード

■送信元MACアドレス(6bytes)

ARP要求もしくはARP要求への応答を送信する側のコンピュータが、自分自身のMACアドレスを格納する。
イーサネットの場合、MACアドレスは6bytesなので、このフィールドに自分自身のMACアドレスを埋め込んでパケットを送信する。

■送信元IPアドレス(4bytes)

ARP要求もしくはARP要求への応答を送信する側のコンピュータが、自分自身のIPアドレスを格納する。
IPv4の場合はIPアドレスは4bytesなので、このフィールドに自分自身のIPアドレスを埋め込んでパケットを送信する。
送信元のMACアドレスとIPアドレスは、必ず自明なので、このフィールドには必ず何らかの値がセットされていることになる。
これに対して、以下の2つのフィールドは、ARPの要求送信時には不明なので、0のままとなっている。

■あて先MACアドレス(6bytes)

ARPの応答パケットにおいて、ARPパケットを返送する先(つまりもともとのARP要求を最初に送信した側)のコンピュータのMACアドレスがセットされるフィールド。

■あて先IPアドレス(4bytes)

ARPの応答パケットにおいて、ARPパケットを返送する先(つまりもともとのARP要求を最初に送信した側)のコンピュータのIPアドレスがセットされる。

ARPパケットの構造は、以上のように利用するネットワーク媒体(MACアドレスの長さ)によって長さが変わる可能性がある。
だがイーサネット(およびその互換技術)が広く普及した現在では、ほとんどの場合は上記のような構造のARPパケットを見る機会が多いだろう。

リンク

RARP
GARP
IPアドレス
MACアドレス

◆Proxy ARP(プロキシARP)
http://net-juku.org/tcpip/tcpip81.html


添付ファイル: filefig02.gif 563件 [詳細] fileARP_reply_header.png 600件 [詳細] fileARP_request_header.png 606件 [詳細] filearp0504.jpg 577件 [詳細] filearp0503.jpg 581件 [詳細] filearp0502.jpg 568件 [詳細] filearp0501.jpg 559件 [詳細] filearp4.jpg 673件 [詳細] filearp3.jpg 635件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2017-05-24 (水) 17:50:56 (425d)