以下は下記原文 2004/06/12(JST)時点 の検証無し翻訳です。 原文は University of California より GFDL で配付されており、
この翻訳も GFDL に従います。
原文: Data server protocol
 
 
最終更新時刻 2006/03/01 01時11分 JST

データサーバのプロトコル

boinc.gif
Last modified 7:09 PM UTC, June 09 2004

コア・クライアントは、データサーバとの通信に HTTP を使います。 データサーバは、典型的には、Webサーバと、 BOINCが提供するCGIプログラム file_upload_handler とを組合わせて 実装されます。

ダウンロード

ファイルのダウンロードは、 FILE_INFO 要素に含まれる URLへ向けた GET 要求として実施されます。 もし、ファイルオフセットが必要なら、HTTP ヘッダの中の Range: ヘッダで与えられます。

アップロード

ファイルのアップロードは、CGI プログラムへ向けた POST 操作によって実施されます。 セキュリティ機構が、データサーバに対し多量データのアップロードを 未認可で行うことを防止します。 2つの RPC 操作が使われています。

1) ファイルサイズ獲得(Get file size)

この要求は以下の例の形をしています。

 
<data_server_request>
    <core_client_major_version>1</core_client_major_version>
    <core_client_minor_version>1</core_client_minor_version>
    <get_file_size>filename</get_file_size>
</data_server_request>

その応答メッセージの形の例は以下のとおりです:

 
<data_server_reply>
    <status>x</status>
    [ <message>text<message>
    | <file_size>Nbytes</file_size> ]
</data_server_reply>
<status> 要素の内容は以下のとおりです。

0 成功を示します。 Nbytes の部分は、ファイルが[まだ]ないときは0です。
1 一時的なエラー。 クアイアントは別のデータサーバを試みるか、すこしたってからこのサーバを試すべきです。
-1 永続的エラー。 クライアントはこのリザルトについては断念するべきです。

これらのうちエラーケースにおいては、 <file_size> 要素が省略され、 <message> 要素が説明を提供します。

2) ファイルのアップロード(Upload file)

要求メッセージの形式の例:

 
<data_server_request>
 <core_client_major_version>1</core_client_major_version>
 <core_client_minor_version>1</core_client_minor_version>
 <file_upload>
  <file_info>
    ...
    <xml_signature>
    ...
    </xml_signature>
  </file_info>
 <nbytes>x</nbytes>
 <offset>x</offset>
 <data>
 ... (nbytes バイトのデータ; ASCIIにないバイトを含みうる)
 (終了タグは付きません)

<file_info> 要素は、スケジューリング・サーバが そのクライアントに送ったものと正確に一致したテキストです。 この要素には、そのプロジェクトのファイルアップロード認証の鍵ペアに基づく 署名を含みます。 <nbytes> は、そのファイルの大きさです。 <offset> は、そのファイルの中でのオフセットです。

応答メッセージの形の例は以下のとおり:

 
<data_server_reply>
    <status>x</status>
    <message>text</message>
</data_server_reply>
<status> 要素の内容は以下のとおりです。

0 成功
1 一時的エラー。 クアイアントは別のデータサーバを試みるか、すこしたってからこのサーバを試すべきです。
-1 永続的エラー。 クライアントはこのリザルトについては断念するべきです。

これらのうちエラーケースにおいては、 <message> 要素が説明を提供します。

TODO: ヘッダー部分にエラーがあった場合 (署名が不正、あるいは、ファイルが大きすぎる) には、 クライアントは、実際にファイルをアップロードすることなく エラーを知ることができるべきです。


BOINCの訳のメインページに戻る | (原文のメインページに戻る)
 
Copyright © 2005 University of California
Translated by JE2BWM.