Pandora:Documentation_ja:Tentacle:Protocol
ドキュメント
- Tentacle プロトコル定義 (このガイド)
Tentacle プロトコル定義
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'------>>>+
| |
. .