|
|
| ■■■ jnudev
> Gnutella仕様書3 |
| ■■■ここでは、Clip2
DSSからリリースされたGnutellaの仕様書を公開する.これにより、Gnutellaがどのような動きをするかが理解できる. |
仕様書の翻訳は、こば、カワサキで行った.不具合はカワサキまで
カワサキ
kawasaki@jnutella.org
XXXXxxxxx. |
|
|
デスクリプター・ID ネットワーク上のデスクリプターを一意に見分けるための16バイト・ストリング
ペイロード・デスクリプター 0x00=ピング(Ping)、0x01=ポング(Pong)、0x40=プッシュ(Push)、0x80=クエリー(Query)、0x81=クエリーヒット(QueryHit)
TTL、タイム・トゥ・リブ(Time To Live) ネットワークからパケットが削除されるまで、グヌーテラのサーバントからサーバントへと転送されることになるデスクリプターの数字で。互いのサーバントは、他のサーバントへパスする際にTTLを1つずつ減らしていきます。TTLが0に達すると、デスクリプターはもうそれ以上転送されることはありません。
ホップ数 デスクリプターが転送される数字です。サーバントからサーバントへとデスクリプターはパスされ、その際、ヘッダーにあるTTLとホップ数のフィールドは次の公式を満たさなくてはなりません。
TTL(0)=TTL(i)+Hops(i)
TTL(i)とHops(i)はヘッダーのTTLとホップ数のフィールドの価値です、at the descriptor's
i-th hop , for i >=0.
ペイロード長 次のあるこのヘッダーのデスクリプターの長さ。次のデスクリプターのヘッダーは正確には、ペイロード長バイト、このヘッダーの終わりから位置している。それにはグヌーテラのデータストリームの中にあるギャップの無い、パッドバイトがある。
TTLはネットワークにあるデスクリプターを消去するための唯一のメカニズムです。サーバントは、必要なものとしては低く受け取ったデスクリプターのTTLのフィールドを注意深く綿密に調べるべきです。TTLフィールドの乱用は、不必要なネットワークトラフィックとネットワークパフォーマンスの低下を招くからです。
ペイロード長フィールドは、入力の流れ(input stream)の中で、次のデスクリプターの始まりをサーバントが見つけるためのたったひとつ信頼できる方法です。グヌーテラ・プロトコルは、「アイ・キャッチャー(eye-catcher)」ストリングまたは、いかなるデスクリプターの同期化メソッド(descriptor
synchronization method)を与えません。それゆえに、サーバントは、サーバントが入力の流れと同期できないことを厳密に確認すべきであり、もし上流のサーバントが、価値のないデスクリプターを作り出し、転送しているような流れであれば、その接続を落とすべきなのです。
すぐにデスクリプター・ヘッダーを転送するということは、転送するデスクリプターの1つから構成されるペイロードであるということです。
ピング(0x00)Ping(0x00)
ピングのデスクリプターは関連のないペイロードであり、ゼロ・ペイロードです。ピングは、デスクリプターヘッダーによって単純に表現されており、デスクリプターのPayload_Descriptorは、0x00で、そのPayload_Lengthは0x00000000です。
サーバントは、他のサーバントへのネットワークを積極的に証明するためにピング・デスクリプターを使います。ピング・デスクリプターを受け取ったサーバントは、活動的なグヌーテラ・サーバントのアドレスとネットワーク上で共有しているデータを含んでいる、ポング・デスクリプターに応じるために選ぶかもしれません。
この文書では、サーバントがどのような頻度でピング・デスクリプターを送るべきであるかとか、ネットワーク上でのピング・トラフィックの最小化を行うためのすべての試みをサーバントが行うべきであるとかいうようなことは、頻度の時と同じように推薦はおこないません。
<1,2,3,4,5,6,7>
|
|
|