RFC903 日本語訳

0903 A Reverse Address Resolution Protocol. R. Finlayson, T. Mann,J.C. Mogul, M. Theimer. June 1984. (Format: TXT=9345 bytes) (Also STD0038) (Status: STANDARD)

RFC一覧
英語原文

Network Working Group                    Finlayson、Mann、Mogul、Theimer
RFC: 903                                             Stanford University
                                                               1984年6月

                        逆アドレス解決プロトコル


      Ross Finlayson、Timothy Mann、Jeffrey Mogul、Marvin Theimer
                      Computer Science Department
                          Stanford University
                               1984年6月

このメモのステータス

   このRFCは、ワークステーションが自身のハードウェアアドレス(例えば、接
   続されている物理ネットワークのアドレス)しか知らないときに、自身のプ
   ロトコルアドレス(例えば、インターネットアドレス)を動的に知るための
   方法を提案している。

   このRFCはARPAインターネットコミュニティに対するプロトコル案を規定し、
   改良に向けた議論と提案を求めるものである。

I. はじめに

   ディスクレスワークステーションのようなネットワークホストは、起動時に
   自身のプロトコルアドレスを知らない場合が多い。そして、自身のハードウ
   ェアインタフェースアドレスだけは知っているという場合がしばしばである。
   IPのような上位プロトコルを使って通信する場合、何か外部の情報源から自
   身のプロトコルアドレスを見つけなければならない。我々の問題は、このよ
   うなことを行うための標準的なメカニズムが無いことである。

   Plummerの「アドレス解決プロトコル」(ARP)[1]は、ホストのプロトコル
   アドレスを与えられてそのハードウェアアドレスを解決して、相補的な問題
   を解決できるように設計されている。このRFCは「逆アドレス解決プロトコル」
   (RARP)を提案するものである。ARPと同様に、我々はイーサネットのような
   ブロードキャストメディアを仮定している。

II. 設計の考え方

   以下の考え方に沿って、我々はRARPプロトコルを設計した。

   A. ARPとRARPは異なる動作をする。ARPは、全てのホストが自身のハードウェ
   アアドレスとプロトコルアドレスのマッピングを持っていることを仮定して
   いる。他のホストについて集めた情報は、小さなキャッシュに蓄積される。
   全てのホストのステータスは等しく、クライアントとサーバの区別は無い。

   一方でRARPの要求では、1つ以上のサーバホストがハードウェアアドレスから
   プロトコルアドレスへのマッピングのデータベースを保持し、クライアント
   ホストからの要求に応えなければならない。

   B. 先述のとおり、RARPはサーバホストが巨大なデータベースを保持する必要


Finlayson、Mann、Mogul、Theimer                                 [Page 1]



RFC 903                                                        1984年6月


   がある。このようなデータベースをホストのオペレーティングシステムのカ
   ーネル内部に保持することは、望ましくないし、場合によっては不可能であ
   る。したがって、ほとんどの実装ではカーネルの外部のプログラムとの双方
   向のやり取りといった形が何か必要になるだろう。

   C. 既存のホストソフトウェアにおけるそれぞれの実装と与える影響を最小限
   にすることは重要である。追加という形を意図していようと意図していまい
   と、全ホストのソフトウェアに修正が必要となるようなプロトコルを設計し
   てしまったら、それは失敗だろう。

   D. オーバーヘッドおよび開発コストの最小化のために、既存ソフトウェアと
   のコードの共有できる可能性があることが望ましい。

III.  提案するプロトコル

   我々の提案では、RARPをデータリンクのレベルで独立したプロトコルとして
   規定している。例えば、使用されるメディアがイーサネットの場合、RARPパ
   ケットのイーサタイプ(未割り当て)はARPのものとは異なっている。これは、
   ARPとRARPが2つの根本的に異なる動作であり、全てのホストが等しくサポー
   トするわけではないことを認めているわけである。既存のシステムへの影響
   は最小限に留めており、既存のARPサーバがRARPパケットによって混乱したり
   はしない。そしてRARPは、ハードウェアアドレスから上位プロトコルアドレ
   スへのマッピングに使用できる一般的な機能となる。

   このアプローチは、RARPクライアントホストにとって最も簡単な実装となる
   が、RARPサーバホストにとって最も困難である。しかし、付録Aに示すように
   この困難は越えられないはずはない。付録Aでは4.2BSD Unixに対する2つの可
   能な実装の概要を示している。

   RARPはARPが使用するものと同じパケットフォーマットを使用する。すなわち、

      ar$hrd(ハードウェアアドレス空間)  - 16ビット
      ar$pro(プロトコルアドレス空間)    - 16ビット
      ar$hln(ハードウェアアドレス長)    -  8ビット
      ar$pln(プロトコルアドレス長)      -  8ビット
      ar$op (オペコード)                - 16ビット
      ar$sha(送信元ハードウェアアドレス)-  nバイト
                                         (nはar$hlnフィールドの値)
      ar$spa(送信元プロトコルアドレス)  -  mバイト
                                         (mはar$plnフィールドの値)
      ar$tha(目的ハードウェアアドレス)  -  nバイト
      ar$tpa(目的プロトコルアドレス)    -  mバイト

   ar$hrd、 ar$pro、 ar$hln、 ar$plnは標準ARPのときと同じである([1]参
   照)。

   例えば、「ハードウェア」アドレスが48ビットのイーサネットアドレスで、
   「プロトコル」アドレスが32ビットのインターネットアドレスであるとする。


Finlayson、Mann、Mogul、Theimer                                 [Page 2]



RFC 903                                                        1984年6月


   すなわち、既知のイーサネットアドレスに対応するインターネットアドレス
   を見つけたい。 この場合、各RARPパケットでは、ar$hrd = 1 (イーサネッ
   ト)、ar$pro = 2048(10進数)(IPパケットのイーサタイプ)、ar$hln = 6、
   ar$pln = 4となっている。

   オペコードには、3(「逆要求」)および4(「逆応答」)の2つがある。オペ
   コード1や2は[1]のときと同じ意味である。このようなオペコードを持つパ
   ケットは標準ARPコードに渡してもかまわない。他のオペコードを持つパケッ
   トは未定義である。RARPサーバが要求に応答するかしないかは自由であるた
   め、ARPのときと同様、「見つからない」あるいは「エラー」といったパケッ
   トは無い。RARP要求パケットの送信側は、適当な時間内にこの要求に対する
   応答を受信しなかった場合にタイムアウトする必要がある。

   RARPパケットのar$sha、ar$spa、ar$tha、ar$tpaフィールドは、以下のよう
   に解釈される。

   オペコードが3(「逆要求」)の場合

      ar$shaはパケットの送信側のハードウェアアドレス。

      ar$spaは未定義。

      ar$thaは「目的」のハードウェアアドレス。

         送信側が自身のプロトコルアドレスを決定したい場合、これは
         ar$shaと同じ、送信側のハードウェアアドレスになるだろう。

      ar$tpaは未定義。

   オペコードが4(「逆応答」)の場合

      ar$shaは応答側(応答パケットの送信側)のハードウェアアドレス。

      ar$spaは応答側のプロトコルアドレス(以下の注意点を参照)。

      ar$thaは目的のハードウェアアドレスで、要求時に与えられたものと同じ
      である必要がある。

      ar$tpaは目的のプロトコルアドレス、すなわち求めているアドレス。

   オペコードが4のパケットにおけるar$spaが応答側のプロトコルで埋められる
   という要求は、純粋に便宜上の話であることに注意。例えば、ARPとRARPの両
   方を使用するシステムの場合、正しいプロトコルアドレス・ハードウェアア
   ドレスの組(ar$spa、ar$sha)を入れれば、続いて出されるはずのARP要求が
   不要になるかもしれない。





Finlayson、Mann、Mogul、Theimer                                 [Page 3]



RFC 903                                                        1984年6月


IV. 参考文献

   [1] Plummer, D., "An Ethernet Address Resolution Protocol",  RFC 826,
   MIT-LCS, November 1982.

付録A.  4.2BSDにおける2つの実装例

   以下の実装は、4.2BSDにおけるRARPサーバの実装に対する2つの異なるアプロ
   ーチの概略を述べたものである。

   A. カーネルの外部でデータリンクレベルのパケットへのアクセスを提供する。
   RARP サーバは完全にカーネルの外部で実装され、 カーネルとのやり取りは
   RARPパケットの受信と送信のためだけである。カーネルは、これらのパケッ
   トに対する適切なアクセスを提供できるよう修正される必要がある。現在、
   4.2カーネルはIPパケットだけしかアクセスできない。この機能を提供する既
   存のメカニズムの1つは、CMU「パケットフィルタ」擬似ドライバである。こ
   れは、よく似た「ユーザレベル」ネットワークサーバの類を実装するために
   CMUとStanfordでうまく使われた。

   B. カーネル内部にデータベースエントリのキャッシュを保持する。 完全な
   RARPサーバデータベースはユーザプロセスによってカーネルの外部で保持す
   る。RARPサーバ自身はカーネルに直接実装され、その応答のためにデータベ
   ースエントリの小さなキャッシュを持つ。このキャッシュはこれまでのARPに
   使用されるものと同じであってもよい。

   キャッシュは、2つの新しいioctlの利用によって実際のRARPデータベースか
   ら埋められる (これらは実際には特定のソケットと結びついていない点で
   SIOCIFADDRに似ている)。1つ目の利用は「トランザクションが完了するまで
   スリープ状態にして、完了したらその要求をユーザプロセスに渡す」ことで
   ある。もう1つは「このトランザクションをカーネルテーブルに記入する」こ
   とである。したがって、カーネルがキャッシュ内にエントリを見つけられな
   いときは、(グローバル)キューに要求を入れて、それからwakeup()を実行
   する。最初のioctlの実装は、sleep()を行った後、最初のアイテムをこのキ
   ューから取り出し、ユーザプロセスに返すことである。カーネルはユーザプ
   ロセスが応答するまで割り込みレベルで待っていることはできないので、ギ
   ブアップできるように(そして要求しているホストが少し後に要求パケット
   を再送してくるように)するか、第2のioctlが要求のコピーをカーネルに戻
   した場合、その時点で応答を形成し送信できるようにするかである。



Finlayson、Mann、Mogul、Theimer                                 [Page 4]

一覧

 RFC 1〜100  RFC 1401〜1500  RFC 2801〜2900  RFC 4201〜4300 
 RFC 101〜200  RFC 1501〜1600  RFC 2901〜3000  RFC 4301〜4400 
 RFC 201〜300  RFC 1601〜1700  RFC 3001〜3100  RFC 4401〜4500 
 RFC 301〜400  RFC 1701〜1800  RFC 3101〜3200  RFC 4501〜4600 
 RFC 401〜500  RFC 1801〜1900  RFC 3201〜3300  RFC 4601〜4700 
 RFC 501〜600  RFC 1901〜2000  RFC 3301〜3400  RFC 4701〜4800 
 RFC 601〜700  RFC 2001〜2100  RFC 3401〜3500  RFC 4801〜4900 
 RFC 701〜800  RFC 2101〜2200  RFC 3501〜3600  RFC 4901〜5000 
 RFC 801〜900  RFC 2201〜2300  RFC 3601〜3700  RFC 5001〜5100 
 RFC 901〜1000  RFC 2301〜2400  RFC 3701〜3800  RFC 5101〜5200 
 RFC 1001〜1100  RFC 2401〜2500  RFC 3801〜3900  RFC 5201〜5300 
 RFC 1101〜1200  RFC 2501〜2600  RFC 3901〜4000  RFC 5301〜5400 
 RFC 1201〜1300  RFC 2601〜2700  RFC 4001〜4100  RFC 5401〜5500 
 RFC 1301〜1400  RFC 2701〜2800  RFC 4101〜4200 

スポンサーリンク

WHERE句 抽出条件や結合条件を追加する

ホームページ製作・web系アプリ系の製作案件募集中です。

上に戻る