FTPとは File Transfer Protocol の略で、クライアントとサーバとの間でファイルを転送するプロトコルになります。いつ使うの??と思う方もいらっしゃるかも知れません。例えばあなたが HTMLファイルを作ったとします。 HTTPの章で少し説明しましたが、大抵の場合はホームページを公開するためのサーバ(HTTPサーバ)へ作成したHTMLファイルをアップロードしなくてはいけません。 この自分が持っているファイルをサーバへアップロードする部分を担当しているのが FTPになります。
ブラウザと呼ばれている HTTPでサーバとやり取りをするソフトウェアがあったように、FTPもソフトウェアを使って行います(ブラウザでも行えます)。 Windowsでは標準で ftp.exe という名前のアプリケーションが付いています。ただ標準なので決して使い勝手は良くありません。オススメ FTPソフトの紹介/設定方法の解説は次のページでしています。
ファイルの転送はソフトを使って行うことになりますが、通常 FTPの仕組みまで意識する必要はありません。次ページからソフトの使い方を紹介していますので 「 ファイル転送は FTPという決まりを使っているのだな 」 ということで、次のページに進んで頂いても問題ありません。
FTPの大きな特徴として、コントロールコネクションと、データコネクションが分離と言う事が挙げられます。 例えは HTTPではコントロール/データの分離はしておらず、HTTPの要求が送信されるコネクションも、実際のデータが送信されるコネクションも一つになります。
なぜ FTPではそれぞれが分離しているのかと言うと、データ転送の途中でもコントロールコネクションを通じで制御コマンドを送信できるようにするためです。 もし FTPがコネクションを一つしか用意していなければ、ファイルサイズの大きいファイルの転送中に処理を中断したくてもサーバに指示が出来ないため、転送終了まで待っていなければなりません。コネクションが二つ存在するため、データの転送中でもコントロールコネクションを通して転送終了等の要求を送信する事が出来るわけです。
FTPが2つのコネクションを使っていると言うのは分っていただけたかと思います。しかし、クライアントが要求メッセージを送信してサーバがそれに対する応答メッセージを返信をするというパターンは HTTP等、その他のプロトコルと大して違いはありません。
実際にFTPクライアントとFTPサーバがどのようなやり取りを行っているのか、概要ではありますが以下のようになります。
ユーザー認証
- 先ずFTPクライアントはサーバーとの間で、コマンドをやり取りするためのコントロールコネクションの確立を行わなくてはいけません。その際に使用するのが、「USER」コマンドと「PASS」コマンドで、「USER」コマンドでユーザ名を「PASS」コマンドでパスワードを指定します。
- 誰でも利用可能な FTPサーバは Anonymous FTP (不特定多数に向けたファイルダウンロードサイト等で利用されている)と呼ばれますが、これらを利用する際には、ユーザー名に「anonymous」か「ftp」、パスワードにメールアドレスを入力するのが一般的です。
USER ユーザー名
TYPE パスワード
データコネクションの確立
- ユーザ認証が完了してコントロールコネクションが確立出来れば、次は実際のデータをやり取りするデータコネクションを作成することになります。データコネクションの確立は、FTP クライアントから「PORT」というコマンドを送信し、そのコマンドの引数として、IPアドレス、ポート番号の情報を送付します。
- この PORTコマンドの情報を基にFTPサーバ側から FTPクライアントに接続をしてきます。通常のサーバ/クライアントの関係はクライアントから接続要求を出していましたね。なので、FTPクライアントは PORT コマンドで報告したポート番号で接続要求を待つサーバ機能も兼ねることになります。
PORT 接続用情報
データタイプの選択
- 送受信しようとしているデータタイプを設定します。これは改行コードなどOSに依存してるコードを FTP が受信側OSのコード体系に自動変換してくれる機能があるためです。たとえば UNIX上で作成されたテキストファイルを Windows受信しても Windowsの改行コードへ自動変換してくれるわけです。
- しかし、そのような変換を行いたくない場合があります。 画像ファイルや圧縮ファイルといったバイナリ形式のファイルはこの変換を行うと、データが予期せぬ変換を受けてしまいまうのです。そのため「TYPE」というコマンドで、送信する際にどのモードでの送信かを設定します。
TYPE データタイプ
- A : アスキーモード
- I : バイナリモード
ファイルの送受信
- データコネクションの確立が終わればファイルの送受信が可能な状態になります。
- FTPクライアントから FTPサーバへのファイルの送信は「STOR」コマンドを使用します。この際ファイルデータはデータコネクションを通じて送信されます。また、既に同じ名称のファイルが存在していた場合は、そのファイルに上書きされます。
- 逆に FTPサーバから FTPクライアントへのファイルの受信は「RETR」コマンドを使用します。
STOR 送信ファイル名
RETR 受信ファイル名
接続の終了
- コネクションの終了には「QUIT」コマンドを使用します。コントロールコネクションとデータコネクションの双方をクローズします。
QUIT