pandora:documentation_ja:tentacle:protocol

Pandora:Documentation_ja:Tentacle:Protocol

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

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

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

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

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

+—————–+ +—————–+ | 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'-------------+
        |                                       |
        .                                       .

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

+—————–+ +—————–+ | 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'-------------+
        |                                       |
        .                                       .

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

+—————–+ +—————–+ | Tentacle client | | Tentacle server | +—————–+ +—————–+

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

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

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

+—————–+ +—————–+ | Tentacle client | | Tentacle server | +—————–+ +—————–+

        |                                       |
        +-------------'!@#$%&/()=?¿'--------->>>+
        |                                       |
        .                                       .

+—————–+ +—————–+ | Tentacle client | | Tentacle server | +—————–+ +—————–+

        |                                       |
        +---------'PASS bad_pwd_digest'------>>>+
        |                                       |
        .                                       .

Tentacle ドキュメント一覧に戻る

Tentacle

  • pandora/documentation_ja/tentacle/protocol.txt
  • 最終更新: 2021/06/17 13:43
  • by junichi