目 次
目 次/関連項目

5.5 制御コマンドと応答メッセージ

 RFC 1123 の中で必須でサポートすることとしている FTP コマンドについて説明する。
 ただし、実装していない場合や、別名のコマンドとなっている場合もあるので注意すること。

アクセス制御コマンド

FTPサーバにアクセスするためのコマンド。

表5.5.1 アクセス制御コマンド
コマンド 書式 説明
USER USER [username]  username に自分のアカウントを書く。そのサーバ上にアカウントがあればそのアカウント名を書き、anonymous FTP の場合は、anonymous 又は、ftp と入力する。
PASS PASS [password]  アカウント名と同様でサーバ上にアカウントがあればその時発行されたパスワードを書き、anonymous FTP の場合は、自分のメールアドレスを入力する。
ACCT PASS [password]  FTP サーバのリソースへのアクセスを認める前に、必要となる補足パスワードをFTP サーバに送信する。コマンドと一緒にパスワードを指定しなければ、パスワードを求めるプロンプトが表示される。このコマンドは、account となっている場合がある。
CWD CWD [pathname]  現在の作業ディレクトリから移動するときのコマンドである。実装する FTP によっては UNIX コマンドの cd が利用できる。
CDUP CDUP  ログインしたときのディレクトリが各ユーザのホームディレクトリとなるが、このコマンドを使うと移動先のディレクトリからホームディレクトリに移動できる。
QUIT QUIT  ファイル転送セッションを終了して FTP コマンドを終了する。BYE コマンドを実装している場合は QUIT と同じである。

FTP転送パラメータ

アクセス制御パラメータを変更するもので、コマンドに何らかのパラメータを示す引数が必要になる。

表5.5.2 FTP転送パラメータ
コマンド 書式 説明
PORT PORT [host],[portnumber]  使用するデータ転送ポートを送る。通常は 20 番ポートである。hostname には、IP アドレスを指定し、portnumber には、10 進数 2 桁でポート番号を指定する。実際の使用例としてPORT 192.168.1.13,4.18 を示す。この例の場合、4 を 2 進数に直すと 00000100 であり、18 を 2 進数に直すと 00010010 となる。これをつなげると 0000010000010010 となり、この数を 10 進数に直すと 1042 となる。つまり、1042 番ポートを使うことになる。
PASV PASV  アクティブモードとパッシブモードを切り替える。passive コマンドとして実装されていることが多い。
TYPE TYPE [ransfer type]  ファイル転送のタイプを指定する。タイプを指定しなければ現在設定されているファイル転送タイプを表示する。転送タイプとしては、ascii、binary が主だが、実装によっては、ebcdic、image、local M、tenex などがある。
STRU STRU [structure code]  ファイルのデータ構造を表す。引数としては、F(ファイル)、R(レコード)、P(ページ)の 3 種類があるが、実装によっては、ないものもある。引数を与えなければ現在のファイルのデータ構造を表示する。structure コマンドとして実装している場合が多い
MODE MODE [mode code]  ファイルの転送モードを設定する。引数としては、S(ストリーム)、B(ブロック)、C(圧縮)の 3 種類があるが、ブロックや圧縮は実装していない場合もある。引数を与えなければ現在のファイル転送モードを表示する。

FTPサービスコマンド

実際の転送を行うためのコマンド。ファイルやディレクトリを指定するので、基本的に引数が必要となる。

表5.5.3 FTPサービスコマンド
コマンド 書式 説明
RETR RETR [file name]  指定したサーバのファイルをクライアントにコピーする。ほとんどの場合、GET コマンドして実装されている。また、複数のファイルを一度にコピーできる MGET コマンドを実装している場合もある。
STOR STOR [file name]  指定したクライアントのファイルをサーバにコピーする。ほとんどの場合、PUT コマンドとして実装されている。
APPE APPE [file name]  指定したクライアントのファイルをサーバにコピーする。同名ファイルが存在した場合、そのファイルに結合する。
RNFR RNFR [path name] 名前を変更したいファイルを指定する。
RNTO RNTO [path name] RNFRで指定ファイルのファイル名を変更する。
DELE DELE [file name]  指定したサーバのファイルを消去する。
RMD RMD [path name]  指定したサーバのディレクトリを消去する。
MKD MKD [path name]  指定したサーバのディレクトリを作成する。
PWD PWD  サーバでの現在のディレクトリ位置を表示する。
LIST LIST [path name]  ファイルの一覧を表示する。
NLST NLST [path name]  ファイル名の一覧を表示する。
STAT STAT [path name]  サーバのFTPの状態を表示する。/td>
SYST SYST  サーバのOSの状態を表示する。
HELP HELP [command] コマンドの一覧を表示する。
NOOP NOOP 何もしない。

 

FTP 応答メッセージ

 FTP サーバでは、クライアントから送られてきた FTP コマンドに対して何らかの応答メッセージをクライアントに返す。この FTP サーバからの応答メッセージは、通常 3 桁の数値とテキスト文字列の組み合わせで送る。数値で送られる応答メッセージは、自動処理などを行うアプリケーションのためであり、文字列での応答メッセージは人が直接 FTP コマンドを操作するためである。
 3 桁の数値での応答メッセージにはそれぞれ意味がある。3 桁の数値を xyz として場合、1 から始まる 1yz、2 から始まる 2yz、3 から始まる 3yz、4 から始まる 4yz、5 から始まる 5yz と 5 つに分けられる。さらに、2 桁目が 0,1,2,3,5 の 5 種類に分類され、さらに詳しく分けられる。3 桁目はさらに詳しい情報を意味している。

1 桁目の数字による分類

  • 1yz  肯定先行応答
     要求されたコマンドは実行中であり、その応答を待ってから新たにコマンドを送信しなければならない

  • 2yz  肯定完了応答
     要求されたコマンドが完了し、新しいコマンドを送信できる

  • 3yz  肯定中間応答
     コマンドが受理されたが、さらに詳細な情報が必要なためその情報を送るコマンドを新たに送信しなければならない

  • 4yz  一次否定完了応答
     コマンドが受理されなかったので、コマンドを再送する必要がある

  • 5yz  永久否定完了応答
     コマンドが受理されなかった。再送した結果再びこの応答だった場合、それが 5 回繰り返されると致命的なエラーがサーバもしくはクライアントにあるためそれを修正してコマンドを再送する必要がある

2 桁目の数字による分類

  • x0z  構文
     構文エラー、機能的に当てはまらないコマンド、実装されていないコマンド、及び余分なコマンドであることを示す応答

  • x1z  情報
     状態やヘルプなどの情報の要求に対する応答

  • x2z  コネクション
     制御用コネクションとデータ転送用コネクションだけに関する応答

  • x3z  認証とアカウント
     ログイン手順とアカウント手順に対する応答

  • x5z  ファイルシステム
     サーバのファイルシステムの状態が要求されたときの応答


表5.5.4 FTP 応答メッセージ(数値)一覧
応答コード 説明
110 再スタートマーカー情報
120 nnn 分後にサービスが準備される
125 データコネクションは開かれていて転送が開始される
150 ファイル状態は OK データコネクションが開かれる
200 コマンド OK
202 実装されていないか余分なコマンド
211 システムの状態応答またはシステムヘルプ応答
212 ディレクトリの状態
213 ファイルの状態
214 ヘルプメッセージ
215 NAME システムタイプ
220 新しいユーザのためのサービスの準備が完了している
221 制御用コネクションが閉じられる
225 データ転送用コネクションが開いているが、転送は行われていない
226 データ転送用コネクションが閉じようとしている
227 パッシブモードにはいる
230 ユーザがログインした
250 要求されたファイルアクションは OK
257 パス名が作成された
331 ユーザ名 OK パスワード要求
332 ログインにアカウントが必要
350 要求されたファイルアクションには詳細情報が必要
421 サービスが利用不能で制御用コネクションを閉じる
425 データ転送コネクションを開けない
426 コネクションを閉じ転送を中止
450 ファイルが利用不能
451 要求されたコマンドの動作は処理中のエラーのため中止
452 保存スペースが足りない
500 構文エラーのためコマンドが認識できない
501 パラメータか引数の構文エラー
502 コマンドが実装されていない
503 コマンドのシーケンスが異常
504 指定されたパラメータに対してコマンドが実装されていない
530 ログインしていない
532 ファイルの保存にはアカウントが必要
550 ファイルが利用できない
551 ページタイプが不明なため要求されたコマンドの動作を中止
552 保存割り当てを超えたためファイル動作を中止
553 ファイル名が許されたいないためファイル動作を中止