FTP は一般的なサービスとは異なり、コマンド チャネルとデータ送信チャネルの 2 つのポートを同時に開く必要があります。データ伝送チャネルの確立の違いに応じて、アクティブモードとパッシブモードに分けられます。ここでは、アクティブ モードのワークフローと問題が発生した場合の解決方法について詳しく説明します。
アクティブ モード プロセス
コマンド チャネルの確立。クライアントは、サーバーのポート 21 との接続を確立するために 1024 より大きいポートをランダムに選択します。接続が確立されると、クライアントはその接続を使用して、ファイル名のクエリ、ファイルのアップロード、ダウンロードなどのコマンドを FTP サービス上で実行できます。ファイルなど。コマンドはこのチャネルを通じて実行されます。
アクティブ モードを使用するようにサーバーに通知します。ポート 21 はコマンド実行のみに使用され、実際に転送する必要があるファイルについては、別のポートを開く必要があります。クライアントは、ファイル転送用に別のポートをランダムに開き、ポート 21 を通じて 2 つの情報を FTP サーバーに通知します。クライアント ユーザーのファイル転送ポートは、ファイル転送にアクティブ モードを使用します。
ftp サーバーは、クライアント への接続をアクティブに確立します。 FTP サーバーは 2 つの情報を認識すると、ポート 20 を介してクライアントとの接続をアクティブに確立します。接続が確立されると、その接続を介してファイルを転送できるようになります。
アクティブ モードで発生する可能性がある問題
アクティブ モードで FTP サーバーに接続できない場合は、次の状況が考えられます。ポートとファイアウォールの問題は比較的簡単に解決できますが、NAT 変換の問題は解決が困難です。 NAT 変換がどのように問題を引き起こすかを見てみましょう コマンド チャネルの確立はクライアントによって開始されるため、チャネルは正常に確立されます。ただし、サーバーがクライアントへのデータ チャネルをアクティブに確立する場合、サーバーはクライアントの IP ではなく NAT IP を認識します。したがって、サーバーはポート 20 を使用して、NAT ポートの 1 つ (ポート 1042 など) にアクティブな接続要求を送信します。ただし、NAT はそのポートを開かなかったため、アクティブな接続の確立は失敗しました。では、この問題をどうやって解決すればよいでしょうか?パッシブモードを使用してください。
パッシブ モード プロセス
コマンド チャネルの確立。この段階はアクティブモードと同じです。
クライアントは PASV リンク要求を発行します。クライアントはコマンド チャネルを通じて PASV パッシブ モード要求をサーバーに送信し、サーバーの応答を待ちます。
サーバーはデータ ポートを開始し、クライアントに通知します。サーバーはクライアントの PASV リクエストを受信すると、データ送信用のポートを開始します。このポートはランダム (1024 ~ 65535) または指定できます。次に、コマンド チャネルを通じてクライアントに通知します。
クライアントはデータ ポートを開始し、サーバーとの接続を確立します。クライアントはサーバーから情報を受け取り、サーバーがデータ送信に使用するポートを認識しており、このときクライアントは 1024 より大きいポートをランダムに開き、このポートを介してサーバーとの接続を確立します。 その他の関連技術記事については、
linux システム チュートリアル以上がFTP アクティブ モードとパッシブ モード - FTP サーバーに接続できないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。