FTP クライアントを作ってみよう (4)

システムエンジニアを募集中です!

前へ << FTP クライアントを作ってみよう (3) FTP クライアントを作ってみよう (5) >> 次へ

FTP プロトコルの仕様

FTP の主要なコマンドを、以下に示します。
ここでいう FTP コマンドとは、get・put・binary・ls・cd などの /usr/bin/ftp や FTP.EXE が受け付けるコマンドでなく、 FTP クライアントが実際に送信する FTP プロトコルのことです。 お間違えなく。

これらのコマンドは、全てコマンドコネクションを通じて、 FTP クライアントが FTP サーバに送るものです。 データコネクション上をコマンドが送信されることはありませんし、 FTP サーバから FTP クライアントにコマンドが送信されることはありません。

FTP には、OS と同じくカレントディレクトリという概念があり、 ファイル・ディレクトリの指定には相対パスを使うことができます。 CWD・RETR・STOR・LIST・NLIST・MKD・RMD・RNFR・RNTO・MDTM など、 ファイル名やディレクトリ名を引数として受けるものは、

CWD /home/username/public_html
RETR /tmp/file
などと、絶対パスで表記してもよいですし、
LIST dir/subdir
LIST .
MKD ../newdir
と、相対パスを使うこともできます。「.」や「..」を、 「カレントディレクトリ」、「一つ上のディレクトリ」という意味で使えます。

ここで説明する仕様は、現在の多くの FTP サーバでは使用可能だと思われますが、 正式なものではありません。例えば 「CWD コマンドの引数を省略するとホームディレクトリに移動する」は、 RFC では保証されていません。


ユーザ認証
ファイル・ディレクトリ操作
ディレクトリ
データ転送
ポート番号の伝達
その他

レスポンス

FTP クライアントが FTP サーバにコマンドを送信すると、 必ず FTP サーバは以下のようなレスポンスを返します。
220 Hostname FTP server (Version 6.00) ready.
226 Transfer complete.
227 Entering Passive Mode (10,0,0,1,156,92)
331 Password required for username.
500 'hoge': command not understood.
レスポンスの先頭にはレスポンスコードと呼ばれる 3 桁の数字が書かれており、 この数字によって、処理が成功したか失敗したかなどを FTP クライアントが 知ることができします。

複数行のレスポンスが渡される可能性もあります。 その場合は

xyz-.....
...
...
xyz ....
という風に、最初に
xyz(レスポンスコード)-(ハイフン) 
で始まり、
xyz(レスポンスコード) (スペース) 
で終わる、という構造になります。例えば、 anonymous ftp ftp://ftp.jp.FreeBSD.org にログインすると、
230-    Welcome to FTP.JPIX.ad.jp.        ########## ######### ###
230-    Located in Tokyo, Japan.            #  #   ##  #   ##   #
(中略)
230-    Please send E-mail to amaike@iri.co.jp if you have any questions
230-    or problems.  thanks!
230-
230 User ftp logged in.  Access restrictions apply.
となります。この例では途中の行も「230-」から始まっていますが、 FTP プロトコルとしては、途中の行はどのような文字から始めても構いません。

レスポンスコード

FTP サーバが返すレスポンスコードは必ず 3 桁の数字になっています。 最初の数字を見ることで、エラーかどうかを判断することができます。

前へ << FTP クライアントを作ってみよう (3) FTP クライアントを作ってみよう (5) >> 次へ

$Id: ftp-4.html,v 1.2 2004/06/12 05:28:18 68user Exp $