ネットワークスペシャリスト - SE娘の剣 -

ネットワークスペシャリストの試験対策サイトです。
ネスペ試験の合格体験談、合格のコツ、過去問解説、基礎知識などの情報を掲載します。

カテゴリ:7.リンク層(L1,L2) > 7.13 ARP

(1)ARP(Address Resolution Protocol)
・アドレス解決プロトコルと訳される。
・ARPはIPアドレスからMAC(Media Access Control)アドレスを取得するプロトコルである。
・過去問では、TCP/IPにおけるARPの説明として、「IPアドレスからMACアドレスを得るプロトコル(H16NW午前 問22)」と述べている。
・Windowsパソコンでは、arp -aコマンドでキャッシュしているARP情報を表示する。
arp
・ARPの要求パケットはブロードキャスト(MACアドレス ff:ff:ff:ff:ff:ff)でセグメント全体に送信され、返信はユニキャストで返信される。
・ARPテーブルはこんな感じです。CiscoのCatalystの場合、show arp コマンドにて確認することができる。MACアドレステーブルとは別物です。違いはスイッチングHUB記事で理解しましょう。メーカによってARPテーブルの保持時間は異なりますが、多くは数分です。
IPアドレスMACアドレス
192.168.1.10mac1
192.168.1.30mac2

フレームフォーマット
・HTYPE(2)
・PTYPE(2)
・HLEN(1)
・PLEN(1)
・オペレーション(1)
・送信元MACアドレス(6)
・送信元IPアドレス(4)
・ターゲットのMACアドレス(6)
・ターゲットのIPアドレス(4)

補足解説
・HTYPE(ハードウェアタイプ)は、イーサネットの場合は1(厳密には0x0001)
・PTYPE(プロトコルタイプ)で、IPv4の場合は0x0800
・HLEN(Hardware length)はMACアドレスの長さで、6が入る
・PLEN(Protocol length)はIPアドレスの長さで、4が入る
・オペレーションにはrequest(要求)の場合が1、reply(応答)の場合は2が入る。
・ARP要求パケットの場合、「ターゲットのIPアドレス」に解決をしたいIPアドレスを入れる。「ターゲットのMACアドレス」は空になる。


aa

※「タイプフィールドにはARPを表す「0x0806」の値が入る」「ARP要求時は、宛先MACアドレスにはブロードキャスト(FF-FF-FF-FF-FF-FF)が入る」と追記。
 上記の例とリンクしていないが、Wiresharkでキャプチャした例を紹介します。arp2

sef4 
ARPはレイヤ2の通信ですか?
これのキャプチャ画面を見ると、送信元IPアドレスが入っているから、
レイヤ3の通信に見受けられます。
確かに、フレームのProtocolフィールドに0x800(IP)と入っているから、そう思えてきます。実際、レイヤ3と解説している文献もいくつかあることでしょう。しかし、よくよくフレームの中身を見てみますと、IPヘッダと送信元IPアドレスなどとは違い、ARPフレームのデータ部分として送信元IPアドレスなどが入っているだけです。IPヘッダの送信元IPアドレスなどではありません。詳しくは、HTTPやICMPなどのIPヘッダと比べていただきたい。
http://nw.seeeko.com/archives/50284032.html

参考までに、上記の図でARP要求を受け取ったPC2は、自身のARPテーブルにPC1の情報を書き込む。一方、PC3とPC4は書き込まない。

ARPに関する過去問
ARPに関して、過去問(H28春FE午後問4)に解説があります。
〔ARPの機能の説明〕
IPアドレスを基にMACアドレスを得るARPの機能は,問合せとしでARP要求”を送信し,それに対する回答としでARP応答”を受け取ることで実現される。例えば,セグメント10.1.1.0/24において,ホストA(IPアドレス10.1.1.10,  MACアドレス00:53:00:DA;C7:0B)がホストB(IPアドレス10.1.1.20,  MACアドレス00:53:00:EC:17:27)宛てにIPデータグラムを送信しようとしたとき,ホストBのMACアドレスはARPによって,次のようにして得られる。
(1)ホストAは,IPアドレス10.1.1.20に対するARP要求を送信する。このとき,ARP要求は「て ̄ ̄Iされる。
(2)ARP要求を受け取ったホストBは,そのARP要求が自分のIPアドレスに対する問合せであることを確認すると,自分のIPアドレス10.1.1.20とMACアドレス00:53:00:EC:17:27を格納したARP応答を送信する。同じARP要求を受け取ったその他のホストは,それが自分のIPアドレスに対する問合せではないので,無視する。
(3)ホストAは,ホストBが送信したARP応答を受け取ることによって,IPアドレス10.1.1.20に対応するMACアドレスが00:53:00:EC:17:27であることが分かる。
ホストAは,ホストBのIPアドレスと得られたMACアドレスの対応付けをキャッシュする。キャッシュが破棄されるまで10.1.1.20宛てのIPデータグラムを送る際,イーサネットフレームの宛先MACアドレスとして00:53:00:EC:17:27を使用する。

RARP(Reverse Address Resolution Protocol)
・逆アドレス解決プロトコルと訳される。ARP(Address Resolution Protocol)とは逆に、MACアドレスからIPアドレスを解決するプロトコル。
・RARPはMACアドレスからIPアドレスを取得する。ARPとは機能が逆なので、Reverseと付いている。
・過去問では、「電源オフ時にIPアドレスを保持することができない装置が、電源オン時に自装置のMACアドレスから自装置に割り当てられているIPアドレスを知るために用いるデータリンク層のプロトコルで、ブロードキャストを利用するもの」とある。(H21NW午前 問11)
・実際の動作としては、RARPサーバに、MACアドレスとIPアドレスの対応表を保管しておきます。IPアドレスを持てない装置から、IPアドレスが何かというRARPのメッセージが来たら、IPアドレスを答えます。
rarp
sef4 
なんですかこれ?
いまどきそんな機器あるんですか?
それに、DHCPサーバでも、MACアドレスとIPアドレスの情報を管理できますよね。
確かにそうです。今は全く使われません。IPアドレスが持てない装置もほぼありませんし、RARPよりもBOOTPやDHCPプロトコルの方が、優れています。例えば、IPアドレスだけではなくで、デフォルトGWやDNS情報も答えることができます。なので、RARPというものがあって、ARPの反対の動作をする程度で理解しておけばいいでしょう。

Proxy ARP
最後はProxy ARPです。こちらもRARPと同様に、それほど重要ではありませんので、聞き流してもらって構いません。
仕組みは、ARPの代理応答を行うものです。たとえば、サブネットマスクを定義できない古いPCが存在する場合に使われます。

[PC1(古いPC) 172.16.1.1] --- [ルータ] --- [PC2(新しいPC) 172.16.2.1/24]

上記の図を少し補足します。古いPCはサブネットを定義できないので、172.16.1.1のPCはクラスBです。

ネットワークスペシャリストを目指す女性SEあれ? 
サブネットという概念がないので、172.で始まるIPアドレスは自動的にクラスB、つまりネットワークアドレスが172.16.0.0/16になるのですね。
そうです。よって、PC2(172.16.2.1)も同じ172.16.0.0/16のネットワークにいると考えて、ARPを投げます。ですが、実際にはルータでセグメントが分けられています。ARPはPC2には届きません。そこで、ルータが新PCの代理(Proxy)で古いPCにARPを返すのです。

5 

そもそも、IPアドレスとMACアドレスと2つを使っているからややこしいと思います。
どちらか一つにすればいいのに。
まあ、そうもいかないだろう。まず、L2レベルの通信はMACアドレスが無いとできない。MACアドレスは必須だ。しかし、IPアドレスが無しで、MACアドレスだけでのインターネットは不可能ではないかもしれない。だが、IPアドレスはシンプルな考えかたでルーティングの概念もわりと分かりやすい。2重管理になったとしても、あった方がいいのではないかと思う。

このページのトップヘ