RARP
読み:アー-アープ
外語:RARP: Reverse Address Resolution Protocol
ARP
の逆(Reverse)の機能を持ったプロトコル。
目次
概要
特徴
技術
パケット構造
アドレス解決法
基本動作
RARP要求の送信
RARP要求の返信
RARP応答の受信
問題点
関連プロトコル
概要
このプロトコルは、自
ノード
のハードウェアアドレスから、その上位で動作するプロトコルアドレスを得るためのプロトコルである。
仕様は
RFC 903
に簡潔に書かれている。
OSI参照モデル
の
ネットワーク層
に属するプロトコルで、Ethernetの上に直接実装されている。
EtherType
(Ethernetフレームタイプ番号)は0x8035である。
プロトコル構造はARPと同様で、その応用となっており、実際には様々なハードウェアアドレスやプロトコルアドレスに対応する汎用性の高いプロトコルとなっている。
最もよく使われたのが
Ethernet
での利用で、MACアドレスからIPアドレスを得るのに用いられた。
以降は、このEthernetでの利用を前提として解説する。
特徴
このプロトコルで自分のMACアドレスをLAN上に
ブロードキャスト
すると、ネットワーク上にいるRARPサーバーが(あれば)、そのノードのIPアドレスを返してくれる。
このような事をするのは、ディスクレス端末等は起動時に自分のMACアドレスは分かってもIPアドレスは分からないためである。MACアドレスは常に固定なのでROM等に記録できる。一方、IPアドレスは環境依存の可変なので何らかの方法で保存することが必要だが、このような端末ではそれができない。
そこで、RARPにより自分のIPアドレスを求める。この方法では、IPアドレスとMACアドレスの関係をRARPサーバー上だけで管理すれば良くなり、クライアント側でIPアドレスを設定する手間が必要なくなるというメリットがある。
技術
パケット構造
先頭より順番に、次の情報が格納される。
ハードウェアタイプ (ar$hrd) (2オクテット)
プロトコル (ar$pro) (2オクテット)
MACアドレス長 (ar$hln) (1オクテット)
IPアドレス長 (ar$pln) (1オクテット)
オペコード (ar$op) (2オクテット)
送信元のMACアドレス (ar$sha)
送信元のIPアドレス (ar$spa)
宛先のMACアドレス (ar$tha)
宛先のIPアドレス (ar$tpa)
ARP
と全く同じである。RARPではオペコードが二つ拡張されている。
アドレス解決法
基本動作
基本的には要求を投げ、その応答を待つ。
オペレーティングシステム
(OS)であれば、通常は下位層(
デバイスドライバー
など)が処理している。この処理が必要に応じてRARPパケットを
ブロードキャスト
し、その際、RARPサーバーが(あれば)応答を返すので、それを待つことになる。
RARPサーバーを実装する場合、自分で解決可能かを確認し、もしそうであったら、パケットの所定の欄に自分のMACアドレスを入れ、質問主に
ユニキャスト
で返信する。
ARPの仕様を記載したRFCは古いため現在主流の書式と違って分かりづらいが、基本はこれだけである。
RARP要求の送信
送信時に未知のIPアドレスが必要になった場合、RARPの要求をネットワークに送信する。このパケットは
ブロードキャスト
で送信されるため、同じセグメント内にある全てのノードが受信できる。
この際、次の内容を設定して送信する。
ハードウェアタイプ(ar$hrd) ‐ Ethernetの場合は値1が使われる
プロトコル(ar$pro) ‐ 解決を要求するプロトコルを表わす
EtherType
。
IPv4アドレス
なら0x0800
MACアドレス長(ar$hln) ‐ 通常は6
IPアドレス長(ar$pln) ‐ 通常は4
オペコード ‐ RARP要求は3
送信元のMACアドレス(ar$sha) ‐ 自分のMACアドレス
送信元のIPアドレス(ar$spa) ‐ ゼロで埋めておく(未定義)
目的のMACアドレス(ar$tha) ‐ 解決したいMACアドレス(例えば自分のMACアドレス)
目的のIPアドレス(ar$tpa) ‐ ゼロで埋めておく(未定義)
RARP要求の返信
RARP要求を受け取ったRARPサーバーは、そのRARP要求が自身で解決可能かどうかを判断せねばならない。もし無理であれば、そのRARP要求パケットは、そのまま破棄する。
まず、ar$thaが自分の管理下にあるかを確認し、あればRARP応答を、その送信元に対して返信せねばならない。
このとき、次の手順が必要である。
送信元と宛先のアドレスを交換する(送受信の方向が変わるため)
返信する送信元のIPアドレス(ar$spa)欄には、MACアドレスに対応するIPアドレスを格納する
オペコード欄を、応答(値は4)に書き換える
受信はブロードキャストだが、返信は
ユニキャスト
になる。
RARP応答の受信
RARP応答を受信したノードは、送信元のIPアドレス(ar$spa)を参照し、IPアドレスを得る。
問題点
RARPで得られる情報はIPアドレスだけである。
ネットマスク
や
ゲートウェイアドレス
、
DNSサーバー
アドレスなどの情報は得られない。このため、この情報を使わない範囲でしか対応できない。
一時期は、RARPで設定するネットワークプリンターが良く見られた。
他のネットワークに出ていく必要がないので、ゲートウェイの設定が不要
NETBEUI over TCP/IPのみ対応なので名前解決にDNSを使わない
サブネットマスクはクラスによって決定
こういった限定された範囲内での用途であれば、これで充分だった。
しかし現在では、より機能の充実したプロトコルとして、
BOOTP
や
DHCP
による自動設定が主流となっている。
関連プロトコル
ARP
BOOTP
DHCP
再検索