====== Pandora:Documentation_ja:Tentacle:Protocol ==== ===== ドキュメント ===== * [[Pandora:Documentation_ja:Tentacle:UserGuide|**Tentacle GNU/Linux ユーザガイド**]] * [[Pandora:Documentation_ja:Tentacle:WindowsGuide|**Tentacle Windows ガイド**]] * **Tentacle プロトコル定義** (このガイド) * [[Pandora:Documentation_ja:Tentacle:OpenSSLCertificates|**OpenSSL 証明書クイックガイド**]] * [[Pandora:QuickGuides_JA:Secure_communication_with_tentacle|**tentacle での暗号化通信**]] * [[Pandora:Documentation_ja:Tentacle:CrossCompoling|**Linux での Windows クライアントのクロスコンパイル**]] ===== Tentacle プロトコル定義 ===== Tentacle プロトコル自体は非常に簡単です。41121 番の TCP ポートを利用します(IANA で公式に割り当てられています: http://www.iana.org/assignments/port-numbers)。 いくつかの重要な特徴は以下の通りです。 * 通信は、常にクライアント側から開始します。 * コマンドは、常に改行コードで終了します。 * 次の文字はファイル名には利用できません: '?[[]]/\=+<>>;',*~' ASCII 文字でのシーケンス図でユースケースを説明します。コマンドはシングルクォートでくくります。 ==== ファイル送信 ==== まず最初に、正しいファイル転送を示します。 +-----------------+ +-----------------+ | Tentacle client | | Tentacle server | +-----------------+ +-----------------+ | | +-------'SEND SIZE size\n'---->>>+ | | +<<<-----------'SEND OK\n'--------------+ | | +-----------------data--------------->>>+ | | +-----------------data--------------->>>+ | | +-----------------data--------------->>>+ | | +<<<-----------'SEND OK\n'--------------+ | | +---------------'QUIT\n'------------->>>+ | | . . 一つのセッションで複数のファイル転送ができるように、**一つのファイル転送が完了したあとに**、'QUIT' の前に新たな 'SEND' コマンドを送ることができます。 もし、サーバがファイルの受け取りを拒否する場合は、クライアントにエラーメッセージが返されます。セキュリティ上の理由により詳細は示しませんが、ファイルが以下の場合に発生します。 * 不正なファイル名やパスが指定された。 * 空もしくはサーバが受け取れる最大サイズを超過した。 * すでにサーバ上にファイルがあり、ファイルの上書きが許可されていない。 +-----------------+ +-----------------+ | Tentacle client | | Tentacle server | +-----------------+ +-----------------+ | | +-------'SEND SIZE size\n'---->>>+ | | +<<<-----------'SEND ERR\n'-------------+ | | . . ==== ファイル受信 ==== 単一のファイルをサーバから要求できます。 +-----------------+ +-----------------+ | Tentacle client | | Tentacle server | +-----------------+ +-----------------+ | | +------------'RECV \n'--------->>>+ | | +<<<--------'RECV SIZE size\n'----------+ | | +--------------'RECV OK\n'----------->>>+ | | +<<<--------------data------------------+ | | +<<<--------------data------------------+ | | +<<<--------------data------------------+ | | +---------------'QUIT\n'------------->>>+ | | . . クライアントは、サーバがサイズを報告してきた後にファイル受け取り拒否が可能です。 'SEND' と同様に、**一つのファイルの受け取りが完了した後に**、'QUIT' の前に(クライアントがファイル受信を拒否した場合でも)新たな 'RECV' コマンドを送信することができます。サーバがファイル送信を拒否した場合は、エラーメッセージが送られます。ファイルが次のような場合に発生します。 * 不正なファイル名やパスが指定された。 * サーバにファイルが存在しない。 +-----------------+ +-----------------+ | Tentacle client | | Tentacle server | +-----------------+ +-----------------+ | | +------------'RECV \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'------>>>+ | | . . [[Pandora:Documentation_ja:Tentacle|Tentacle ドキュメント一覧に戻る]] [[Category: Tentacle]]