TIPS/vsftpd/応答シーケンスコード

Last-modified: 2007-02-09 (金) 10:52:10

FTP応答シーケンスのコードの意味

FTPでは、各プロトコルコマンドに対し、
サーバ状況を示す 応答のシーケンスを返します。

応答シーケンスは3桁の十進数+メッセージで構成されています。

下記に3桁の十進数のコードが示す意味を、示します。
(RFCからの引用です。)

■1番目の桁

1yz 肯定的な事前の応答
要求された処理は開始された。
新たなコマンドの処理に進む前に、別の応答を待つ。
(前のコマンドを処理しおわる前に、ユーザー側プロセスが別なコマンドを
送信したのは、プロトコル違反となる、がしかし、サーバー側FTPプロセスは
現在の処理がおわるまで受信したコマンドをキューイングした)
この種類の応答ではコマンドは受け付けられた、
そして、同時モニタリングの難しい実装においては、
ユーザー側プロセスはデータ接続に注意をはらわなくてはならない。
サーバー側FTPプロセスは、1コマンドにつき、
最大1つの1yzコマンドを送信する。

2yx 肯定的な完了応答
要求された処理は、正常に終了した。
新規の要求が受け付け可能である。

3yz 肯定的な中間応答
コマンドは受け付けられたが、追加情報が来るまでの間、
要求された処理は停止中である。
この情報を示すために、ユーザーは別のコマンドを送信しなくてはならない。
この応答はコマンド順序をもつコマンドで使用される。

4yz 一時的否定的な完了応答
コマンドは、受け付けられず、要求された処理は動作しなかったが、
エラー状態は一時的であり、再実行出来る。
ユーザーは、必要ならコマンドシーケンスを最初からやり直してもよい。
「一時的な」という状態の意味付けは難しく、
二つの別個なコンピュータ(サーバーとユーザープロセス)が
解釈に同意する必要があるときには特に難しい。
それぞれの4yz応答群は、微妙に異なる時間を持っているが、
意図としては、ユーザー側プロセスの再試行をうながすものである。
応答が4yzか5yz(永久否定応答)に属するとき、もしコマンドが
コマンド形式やユーザー側サーバー側の条件を変更せずに繰り返すことが
できるようならば、4yzを返すことになっている
(コマンドの綴りも同じに、同じ引数を使用、ユーザーはそのファイル操作も
ユーザー名も変更せず、サーバーの実装も変更しないとき)。

5yz 永久否定的応答
コマンドは受け付けられず、要求された処理は行われない。
ユーザープロセスが、その要求を(同じ順番で)繰り返すことは推奨されない。
いくつかの「永久的な」エラー状態が修正されたとすれば、
人間のユーザーは将来のある時点において、
そのユーザープロセスからコマンドシーケンスを
繰り返して再試行することができるだろう(例えば、綴りを修正したり、
ユーザーがそのディレクトリ状態を変更したりなど)。

■2番目の桁

x0z 文法
-これらの応答は、文法誤りや、構文上正しいコマンドでも
対応機能が見付からない、実装されていない、不要なコマンド、などに関連する。

x1z 情報
-これらの応答は、情報の要求、例えばステータスやヘルプなどの応答であることを示す。

x2z 接続
-応答は、コントロール接続やデータ接続に関連する。

x3z 認証と課金
-ログイン手続きと課金処理関連の応答である

x4z 未定義

x5z ファイルシステム
-これらの応答は、要求された転送やその他ファイルシステム動作での
サーバー側のファイルシステム状態を示す。

■3番目の桁

2番目の桁でのそれぞれの種別毎に、詳細な意味を持たせている。
以降で詳解されている応答の種類はで、これらが示されている。
それぞれの応答に対応する文章は強制されるものではなく推奨であり、
その応答に関連するコマンドに従って異なるだろう。
逆に、応答コードは、直前の章での仕様に正確に従わなくてはならない。
これは、サーバーの実装において、ここで述べられているものと
少ししか違わないような状況で新しいコー
ドを作らずに、すでにあるコードに適合させなくてはならないということで
ある。
TYPEやALLO等のコマンドの成功は、ユーザー側プロセスに新し
い情報を使わずに200の応答を返さなくてはならない。もし、例えば
TOPS20でのALLOコマンドなどでコマンドがサーバー側FTP
のシステムにそぐわないことにより実装されていない場合、単純なユー
ザープロセスがその後の処理を継続できるように肯定的な完了応答が求
められる。202応答がこの場合使用され、例えば応答テキストで
「No storage allocation necessary.」(領域の確保は不要)
などと返す。逆に、もし、コマンドが、コンピュータ環境依存ではない
コマンドを要求し、その機能が実装されていないときには、502応答
を返す。コマンドは実装されているが、その引数が実装されていないと
きの応答は、504がふさわしい。