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

ネットワークスペシャリストの試験対策サイト(by 左門至峰の株式会社エスエスコンサルティング)です。ネットワークスペシャリスト試験の 勉強方法、合格体験談、合格のコツ、過去問解説、基礎知識などの情報を掲載します。試験対策セミナー・研修も行っております。 ネットワークスペシャリスト試験対策・勉強なら左門至峰の最も詳しい過去問解説「ネスペ」シリーズ(技術評論社)で!!

ARP

1.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.10 mac1
192.168.1.30 mac2


(2)ARPのフレーム
フレームフォーマットは以下です。
・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アドレス」は空になる。

(3)ARPの動作
84d35455

※「タイプフィールドには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ヘッダと比べていただきたい。
https://nw.seeeko.com/archives/50559141.html#2ICMP

(4)ARPテーブルに情報を追記する端末はどれ?
 先ほどのPC1がARPを送った図を見てください。ARP要求したPC1が、自分のARPテーブルに情報を追記(または書き換え)しました。では、他のPC2~4はARPテーブルに情報を追記すると思いますか?
というのも、PC1からのARP Requestのフレームによって、PC1のIPアドレスとMACアドレスの情報をPC2~PC4が知ることができます。PC2~PC4は、その情報を、自分のARPテーブルに書き込むでしょうか。

ネットワークスペシャリストを目指す女性SE下向き

話の流れからすると、書き込むのでしょうか。
正解は、ARP応答を返したPC2だけが書き込みます。一方、PC3とPC4は、このやりとりに関与していないので、ARPテーブルには書き込みません。
 この仕組みを利用して、通信相手のARPテーブルに嘘の情報を書き込むことができます。たとえば、PC1が送ったARP Requestですが、自分のMACアドレスを詐称すれば、PC2は、詐称されたMACアドレスをARPテーブルに記載してしまうのです。

(5)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を使用する。

2.RARPとProxyARP

▼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重管理になったとしても、あった方がいいのではないかと思う。

3.GARP

Gratuitousは、「いわれのない」や「根拠のない」という意味でして、GARPは本来のARPとは機能が全く違います。
ARPという名がついている理由は、フレームフォーマットはARPと同じだからです。ARPフレームにおいて、本来は調査対象のIPアドレスを入れるフィールドに、自分のIPアドレスを入れています。なので、ARP本来の目的である、MACアドレスを解決するためのフレームではないのです。
ネットワークスペシャリストを目指す女性SEハテナ 

じゃあ、何が目的なのですか?
GARPを送信する目的は、(ネットワークスペシャリスト試験対策)としては大きく2つです。

1)ARPテーブルの更新
 過去問(R1NW午後1問1)では以下の記載があります。
「マスタルータが故障した際には,新しくマスタになったルータが〔 c:ARP 〕パケットをブロードキャストすることによってL2SWのMACアドレステーブルを更新する。」
ネットワークスペシャリスト試験の過去問(H26秋NW午後1問2)には、「自ポートに設定されたIPアドレスの解決を要求する〔 エ:GARP又は,Gratuitous ARP 〕を用いて接続機器のARPテーブルを更新する」とあります。ここにあるように、スイッチなどのARPテーブルを更新することです。

2)MACアドレステーブルの更新
 スイッチのMACアドレステーブルの更新。たとえば、VRRPに構成において、マスタルータがダウンした場合、バックアップルータに切り替わります。このときにスイッチのMACアドレステーブルを更新する目的で送信します。

■参考(グダグダと書いた解説)
 ネットワークスペシャリスト試験の過去問(H28秋NW午前Ⅱ問6)では、「IPv4でのARPを利用したGratuitous ARP の説明」として,「ターゲットIPアドレスフィールドに自端末が使用するIPアドレスを入れて,MACアドレスを問い合わせる」とあります。
GARPの仕組みは、この過去問にあるように、「自ポートに設定されたIPアドレスの解決を要求する」ことです。GARPのパケットをWiresharkでキャプチャした例を以下に示します。送信元IPアドレスと,宛先IPアドレスが同じになっています。つまり、「自分自身のMACアドレスを教えてくれ」と言っているのです。

GARP
 ネットワークスペシャリストを目指す女性SEあれ 

なぜ自分のIPアドレスを解決する必要があるんですか?
自分のIPアドレスとMACアドレスなら,解決しなくてもわかっているのでは?
その通り。解決しなくても分かっています。GARPを投げる目的は、自分のMACアドレスを知りたいのではなく、別のところにあります。GARPを送ることによって、自分のIPアドレスとMACアドレスを周りに通知したいのです。
 ネットワークスペシャリスト試験の過去問(H26秋NW午後1問2)では、「自ポートに設定されたIPアドレスの解決を要求する〔 エ:GARP又は,Gratuitous ARP 〕を用いて接続機器のARPテーブルを更新する機能」とあります。
さらに、別のネットワークスペシャリスト試験の過去問(H25NW午後Ⅱ問1)ではGARPの目的が問われ、解答例は「同一サブネット内のIPノードがもつARPキャッシュを更新させるため」となっています。
このように、GARPは本来のARPとしての意味がありません。Gratuitousが、「いわれのない」「根拠のない」という意味なのも、理解できるのではないでしょうか。

■メモ
以下は、EPSONのプリンタが出しているGARPパケットです。自分の存在を示すためのパケットかと思われます。(詳細は不明)
garp