データと制御に別々のコネクションを使う

 FTPはクライアント・サーバー型のモデルに基づいて作られています。つまり,クライアントがサーバーにコマンドを送り,サーバーがこれに対してレスポンスを返し,コマンドに応じた仕事を行うというスタイルです。

 FTPの大きな特徴は,クライアントとサーバーの間に2本のTCPコネクションを張って動作するという点です。コマンドとレスポンスをやりとりする制御コネクションと,実際のデータをやりとりするデータ・コネクションを分けているのです。ここが,コマンドとデータを同じコネクションでやりとりするのHTTPなどのプロトコルと大きく異なる点です。

 FTPは制御用とデータ用のコネクションが別々なので,それぞれのコネクションの相手を別々に設定できます。こうした構成が取られているため,pict.1[拡大表示]のように,クライアントが遠隔地にある二つのコンピュータ(サーバー)間でのファイル転送をネットワーク越しに制御する用途に使えるわけです。

 さらにFTPでは,データ・コネクションを張る手順が2種類用意されています(pict.2[拡大表示])。通常使われているのはアクティブ型,もう一つがパッシブ型と呼ばれる方式です。

 どちらの方式も制御コネクションの接続要求はクライアント側から行います。このとき使われるポート番号は20です。アクティブ型の手順では必要に応じて,データ・コネクションの接続をサーバー側からクライアントに対して要求します。一方のパッシブ型ではデータ・コネクションの接続もクライアント側から行います。