Pandora: Documentation ja: Tentacle: Protocol

From Pandora FMS Wiki
Jump to: navigation, search

1 Tentacle プロトコル定義

Tentacle プロトコル自体は非常に簡単です。41121 番の TCP ポートを利用します(IANA で公式に割り当てられています: http://www.iana.org/assignments/port-numbers)。

いくつかの重要な特徴は以下の通りです。

  • 通信は、常にクライアント側から開始します。
  • コマンドは、常に改行コードで終了します。
  • 次の文字はファイル名には利用できません: '?[]/\=+<>:;',*~'

ASCII 文字でのシーケンス図でユースケースを説明します。コマンドはシングルクォートでくくります。

1.1 ファイル送信

まず最初に、正しいファイル転送を示します。

+-----------------+                     +-----------------+
| Tentacle client |                     | Tentacle server |
+-----------------+                     +-----------------+
         |                                       |
         +-------'SEND <file> SIZE size\n'---->>>+
         |                                       |
         +<<<-----------'SEND OK\n'--------------+
         |                                       |
         +-----------------data--------------->>>+
         |                                       |
         +-----------------data--------------->>>+
         |                                       |
         +-----------------data--------------->>>+
         |                                       |
         +<<<-----------'SEND OK\n'--------------+
         |                                       |
         +---------------'QUIT\n'------------->>>+
         |                                       |
         .                                       .

一つのセッションで複数のファイル転送ができるように、一つのファイル転送が完了したあとに、'QUIT' の前に新たな 'SEND' コマンドを送ることができます。

もし、サーバがファイルの受け取りを拒否する場合は、クライアントにエラーメッセージが返されます。セキュリティ上の理由により詳細は示しませんが、ファイルが以下の場合に発生します。

  • 不正なファイル名やパスが指定された。
  • 空もしくはサーバが受け取れる最大サイズを超過した。
  • すでにサーバ上にファイルがあり、ファイルの上書きが許可されていない。
+-----------------+                     +-----------------+
| Tentacle client |                     | Tentacle server |
+-----------------+                     +-----------------+
         |                                       |
         +-------'SEND <file> SIZE size\n'---->>>+
         |                                       |
         +<<<-----------'SEND ERR\n'-------------+
         |                                       |
         .                                       .

1.2 ファイル受信

単一のファイルをサーバから要求できます。

+-----------------+                     +-----------------+
| Tentacle client |                     | Tentacle server |
+-----------------+                     +-----------------+
         |                                       |
         +------------'RECV <file>\n'--------->>>+
         |                                       |
         +<<<--------'RECV SIZE size\n'----------+
         |                                       |
         +--------------'RECV OK\n'----------->>>+
         |                                       |
         +<<<--------------data------------------+
         |                                       |
         +<<<--------------data------------------+
         |                                       |
         +<<<--------------data------------------+
         |                                       |
         +---------------'QUIT\n'------------->>>+
         |                                       |
         .                                       .

クライアントは、サーバがサイズを報告してきた後にファイル受け取り拒否が可能です。

'SEND' と同様に、一つのファイルの受け取りが完了した後に、'QUIT' の前に(クライアントがファイル受信を拒否した場合でも)新たな 'RECV' コマンドを送信することができます。サーバがファイル送信を拒否した場合は、エラーメッセージが送られます。ファイルが次のような場合に発生します。

  • 不正なファイル名やパスが指定された。
  • サーバにファイルが存在しない。
+-----------------+                     +-----------------+
| Tentacle client |                     | Tentacle server |
+-----------------+                     +-----------------+
         |                                       |
         +------------'RECV <file>\n'--------->>>+
         |                                       |
         +<<<-----------'RECV ERR\n'-------------+
         |                                       |
         .                                       .

1.3 パスワード認証

サーバがパスワードを要求した場合、クライアントはコマンド送信前に認証を行う必要があります。

+-----------------+                     +-----------------+
| Tentacle client |                     | Tentacle server |
+-----------------+                     +-----------------+
         |                                       |
         +----------'PASS pwd_digest\n'------->>>+
         |                                       |
         +<<<-----------'PASS OK\n'--------------+
         |                                       |
         .                                       .

パスワードを隠蔽するためにパスワードの 2段階の md5 が送信されます。しかし、非暗号化接続では、それ以上のセキュリティはないことに注意してください。セキュアなファイル転送が必要な場合には、常に SSL を有効化してください。

1.4 エラーハンドリング

エラー状態になると、サーバは何らかの説明を行うことなく接続を切ります。不正なコマンド、不正なパスワード、送信すると通知したものよりも多くのデータ送信などの場合です。

+-----------------+                     +-----------------+
| Tentacle client |                     | Tentacle server |
+-----------------+                     +-----------------+
         |                                       |
         +-------------'[email protected]#$%&/()=?¿'--------->>>+
         |                                       |
         .                                       .
+-----------------+                     +-----------------+
| Tentacle client |                     | Tentacle server |
+-----------------+                     +-----------------+
         |                                       |
         +---------'PASS bad_pwd_digest'------>>>+
         |                                       |
         .                                       .