FTPのアクティブモード(PORT Mode)およびパッシブモード(Passive Mode)

1932 ワード

FTPの特殊性:
大多数のTCPサービスは単一の接続を使用しており、一般的にクライアントがサーバの周知のポートに接続を開始し、この接続を使って通信する.しかし、FTPプロトコルは違っています.双方向の複数の接続を使用しています.また、使用するポートは予測しにくいです.一般的に、FTP接続は以下を含む.
  • )1つの制御接続(Control Connection)この接続は、クライアントの命令とサーバ側の命令に対する応答を伝達するために使用される.サーバーの21ポートを使っています.生存期間はFTP回話時間全体です.
  • )いくつかのデータ接続(Data Connection)は、ファイルや他のデータ、例えばディレクトリリストなどを転送するために使用される.このような接続は、データ転送が必要なときに確立され、データ転送が完了すると閉じられます.毎回使うポートも必ずしも同じではないです.また、データ接続は、クライアントによって開始されるかもしれないし、サーバ側によって開始されるかもしれない.FTPプロトコルでは、制御接続は周知のポート21を使用する.逆に、データ転送接続の目的ポートは、一般的に実現されるかどうかは分かりません.FTPプロトコルは、1つの標準のポート21をft-dataポートとして使用しているが、このポートが接続のためのソースアドレスがサーバ端の場合、このポート上根本には傍受プロセスがない.FTPのデータ接続と制御接続の方向は一般的には逆であり、つまり、サーバがデータ転送のための接続をクライアントに開始することである.接続されたポートはサーバ側とクライアント側の交渉によって決定される.FTPプロトコルのこの特徴はISA転送およびファイアウォールとNATの配置に多くの困難をもたらした.この他に、もう一つのFTPモードがあります.パッシブモードといいます.このようなモードでは、データ接続はクライアントプログラムによって開始され、先ほど議論されたパターンとは逆です.パッシブモードを取るかどうかはお客様のプログラムによって決まります.ftpコマンドラインでパッシブコマンドを使えば、パッシブモードをオフ/オンできます.アクティブFTP:コマンド接続:クライアント>1024ポート→サーバ21ポートデータ接続:クライアント>1024ポート←サーバ20ポート受動FTP:コマンド接続:クライアント>1024ポート→サーバ21ポートデータ接続:クライアント>1024ポート←サーバ>1024ポートPORT(アクティブ)方式の接続プロセスは、クライアントがサーバのFTPポート(デフォルトは21)に接続要求を送信し、サーバが接続を受け入れ、コマンドリンクを確立することである.データの転送が必要な場合、クライアントは命令リンク上でPORTコマンドでサーバーに教えます.「***Xポートを開けました.接続してください.」そこでサーバは、20ポートからクライアントの***Xポートに接続要求を送信し、データリンクを確立してデータを転送する.PASV(受動的)方式の接続プロセスは、クライアントがサーバのFTPポート(デフォルトは21)に接続要求を送信し、サーバが接続を受け入れ、コマンドリンクを確立することである.データの転送が必要な場合、サーバはコマンドリンク上でPASVコマンドでクライアントに教えます.クライアントは、接続要求をサーバの***Xポートに送信し、データリンクを確立してデータを転送する.上から分かるように、2つの方法の命令リンク接続方法は同じであり、データリンクの確立方法は全く異なる.FTPの複雑さはここにある.
  • よくあるエラー:FTP接続時に「227 Entering Passive Mode」が発生します.
                ,      PASV  ,    PORT       .
      FTP     passive        PASV  ,  :
      ftp> passive
      Passive mode off.
      ftp> passive (         )
      Passive mode on.