FTPの通信(アクティブモード)

 FTP の通信には、PORT モード(アクティブモード)と PASVモード(パッシブモード)があります。ここでは、アクティブモードについて説明していきます。

アクティブモードは、多くの FTP ソフトウェアで、デフォルトの転送モードになっています。

 このモードでは、データコネクションは、制御コネクションとは異なり、FTP サーバ側の20番ポートからクライアントの任意のポートに向けてコネクションが確立されます。

 FTP サーバ側からコネクションを張るために、サーバはクライアントのIPアドレスとポート番号を知っている必要があります。これらは、制御コネクション時のPORTコマンドで、FTPサーバに通知されるようになっています。

 ここで、注意が必要です。データコネクションの方向が、FTP サーバ側からクライアント方向になっています。これは、ファイルのダウンロード、アップロードにかかわらず、FTP サーバ側からコネクションが確立されるということです。

ファイルをアップロードする場合には、クライアントから通信が始まるのでは?

と疑問に思うかもしれませんが、アップロードも FTP サーバからコネクションが始まります。

このデータコネクションの方向が、いくつかの問題を引き起こします。

まずは、ファイアウォールのセキュリティの問題です。

 クライアントのポート番号は、任意(1,024以上)である為、FTPで通信を行う為には、FTP サーバ側からのデータコネクションのポートをファイアウォールで開けておく必要があります。1,024以上のポートの全て開けておくということは非常にリスクが高くなります。

他にも、サーバからクライアント方向へデータコネクションを確立する際に、問題が発生します。

 アクティブモードでは、ファイルのダウンロード、アップロードにかかわらず、下図のように FTP サーバ側からコネクションが確立されるようになっています。