レンタルサーバーのマニュアルでFTPクライアントの設定マニュアルを見ていると「パッシブモード」で接続してくださいという説明をよく見ますが「パッシブモード」とは何でしょうか?
FTPの接続方式には「アクティブ」と「パッシブ」の2種類が存在します。これらの違いはサーバー視線で考えると分かりやすいでしょう。アクティブ(Active:能動的)はサーバーからクライアントに接続要求を行います。そして、パッシブ(Passive:受動的)はクライアントからの接続要求を待ちます。
こちらが通常の接続方法となります。ポートモードとも呼ばれます。
FTP通信では制御用に21番ポート、データ転送用に20番ポートを使用します。
簡単に説明すると、まずクライアントはFTPサーバー(21番ポート)との接続を行います。この制御用コネクションはFTPクライアントが接続を終了するか、FTPサーバーがタイムアウトなどで強制切断するまで維持されます。
データ転送用ポート(20番ポート)は、ファイル(ディレクトリ)リストの取得やデータのアップロード・ダウンロードに利用されます。アクティブFTPでは、 サーバーからクライアントへ データ転送用コネクションの接続要求を行います。
制御用コネクションでFTPサーバーに命令を送り、実行(データ転送)にはデータ転送用コネクションが利用されます。
パッシブ方式ではデータ転送用コネクションの接続要求を クライアントからサーバーに 行います。理由としては「ファイアウォール」の存在があります。クライアントが ファイアウォール で外部からの接続が遮断されている場合、FTPサーバーからのデータ転送用コネクションの接続要求がクライアントに届きません。
そこで、パッシブFTPが利用されます。FTPサーバーが制御用コネクションを利用してデータ転送用ポート番号(任意)をクライアントへ伝えます。クライアントは指定されたポート番号に接続要求を行うことで、データ転送用のコネクションを張ることができます。
サーバーが制御用コネクションに21番ポートを利用することはアクティブと変わりませんが、データ転送には任意のポートが利用されます。
つまり、データ転送用のコネクションの接続要求をどちらから行うかの違いが、アクティブとパッシブとの違いとなります。