データ・ポート割り当て
ユーザーの選択が適用されるのは、クライアントが IPv4 アドレスを使用してログインする場合だけです。
FTP クライアントがサーバーにログインすると、接続要求はクライアントからサーバーへと流れて、制御接続が確立されます。クライアントがデータを (たとえば、get により) 転送する場合には、データ接続と呼ばれる別の接続を確立して転送を処理する必要があります。制御接続とは違って、データ接続を確立する複数の方法があります。接続要求は、FTP RFC サポートのレベルによって、サーバーが開始したり、クライアントが開始できます。
- FTP の基本機能を記述している RFC 959 は、クライアントがデータ接続ポートを決定して、サーバーがデータ接続をオープンするようにプロトコルを定義しています。
- RFC 1579 は、サーバーがデータ接続ポートを決定して、クライアントがデータ接続をオープンするようにプロトコルを記述しています。RFC 1579 の意図は、クライアントが制御接続とすべてのデータ接続の両方をオープンするファイアウォール・フレンドリー環境を作成することにあります。このスキームは、ファイアウォールがランダム・ポートへの着信接続を防止して、しかも出力接続を許可する場合に十分機能します。これは、
ファイアウォール・フレンドリー・クライアント (firewall friendly client) と呼ばれます。
- RFC 2428 は、サーバーがデータ接続ポートを決定して、クライアントがデータ接続をオープンするようにプロトコルを記述しています。これもファイアウォール・フレンドリー・クライアントです。
RFC 1579 と RFC 2428 の間にはプロトコルの相違があります。
- RFC 1579 プロトコルでは、クライアントがデータ接続を必要とする場合には、サーバーにパッシブ (PASV) コマンドを送信します。サーバーは、データ接続をオープンするためにクライアントが使用する IP アドレスとポート番号を示す PASV 応答を返します。
- RFC 2428 プロトコルでは、クライアントがデータ接続を必要とする場合には、サーバーに拡張パッシブ (EPSV) コマンドを送信します。サーバーは、データ接続をオープンするためにクライアントが使用するポート番号を示す EPSV 応答を返します。PASV コマンドのように、サーバーの IP アドレスは示しません。IP アドレスは、制御接続に使用したものと同じアドレスであるとみなされます。
制御接続で (たとえば、Transport Layer Security (TLS) で) データを暗号化している場合には、EPSV コマンドを使用した方が便利です。ネットワーク・アドレス変換 (NAT) を使用してデータがファイアウォールを通るとき、ファイアウォールは (問題原因となる) PASV 応答での IP アドレスを変換することができません。EPSV コマンドおよび応答を使用すれば、IP アドレスは送信されず、クライアントとサーバーはすでにアドレスを理解しています。
- サーバーがデータ接続をオープンする RFC 959 プロトコルを使用してデータ接続を確立するには、「デフォルトの方式を使用」を選択します。
- RFC 1579 ファイアウォール・フレンドリー・プロトコル (すなわち、クライアントが PASV コマンドを使用してデータ接続をオープンする) を使用してデータ接続を確立するには、「ファイアウォール・フレンドリー方式を使用する」を選択します。
- RFC 2428 プロトコル NAT ファイアウォール・フレンドリー・プロトコル (すなわち、クライアントが EPSV コマンドを使用してデータ接続をオープンする) を使用してデータ接続を確立するには、「NAT ファイアウォール・フレンドリー方式を使用する」
を選択します。