FTPアクティブモードとパッシブモード、およびjava FTPClientモード設定

3525 ワード

FTPのアクティブモードとパッシブモード
FTPサーバは、20と21の2つのネットワークポートを使用してFTPクライアントと通信する.FTPサーバの21ポートはFTPの制御コマンド、20ポートはファイルデータの転送に使用されます.
FTPアクティブモード:FTPクライアントはサーバーのFTP制御ポート(デフォルトは21)に接続要求を送信し、サーバーは接続を受け入れ、コマンドリンクを確立する.データを転送する必要がある場合、クライアントはコマンドリンク上でPORTのコマンドでサーバーにポートを開いたことを教えて、あなたは私に接続します.そこで、サーバは、20ポートからクライアントのポートに接続要求を送信し、データを転送するためのデータリンクを確立する.データリンク確立中はサーバアクティブリクエストであるため、アクティブモードと呼ばれる.
クライアントがサービス側に接続されると、PORTモードが使用され、クライアントBは
本コマンドは、サービス側(クライアントBがローカルでポートNを開いてデータ接続を待っている)に通知し、サービス側がこのPortコマンドを受信すると、クライアントが開いているポートNに接続し、このデータ接続が生成される.
FTP受動モード:FTPクライアントはサーバーのFTP制御ポート(デフォルト21)に接続要求を送信し、サーバーは接続を受け入れ、コマンドリンクを確立する.データを転送する必要がある場合、サーバはコマンドリンクでPASVコマンドでクライアントに、あるポートを開いたので、私に連絡してください.クライアントは、サーバのポートに接続要求を送信し、データを転送するためのデータリンクを確立する.データリンクの確立中にサーバがクライアントの要求を受動的に待つので、受動モードと呼ばれます.以上の点から,FTPサーバのアクティブとパッシブモードは,FTPサーバがデータ転送接続を行うアクティブまたはパッシブに基づいていることが分かる.FTPサーバとクライアントの間に存在するネットワークファイアウォールについては、サーバ側とクライアント側のネットワークファイアウォールの設定ポリシーにかかわらず、FTPサーバとクライアントの間でコマンドリンクとデータリンクが正常に確立されることを保証します.
クライアントBがサービス側に接続されると、PASVモードが使用され、サービス側はクライアントにメッセージを送信します.この情報は(サービス側がローカルでポートMを開いたので、今私に接続してください)、クライアントがこの情報を受け取ると、サービス側のM側に接続することができ、接続に成功すると、データ接続も確立されます.
プロアクティブモード:クライアントとサーバとの接続が確立されると、クライアントは1024より大きいポート、サーバは20ポートになります.クライアントのポートは1024より大きく、サーバのポートは21ポートで要求を受信し、20ポートでクライアントに応答する.FTPクライアントが1024より大きいポートからサーバの21ポートに接続することを許可する.FTPサーバが21ポートからFTPクライアントの1024より大きいポートのネットワーク接続に応答することを許可する.FTPサーバが20ポートからFTPクライアントの1024より大きいポートにアクティブに接続することを許可する.FTPクライアントが1024より大きいポートからFTPサーバの20ポートからのネットワーク接続に応答することを許可する.モード:クライアントとサーバとの接続は、1024より大きいポートにあります.クライアントのポートは1024より大きく、サーバのポートは21ポートで要求を受信し、1024より大きいポートからクライアントに応答する.FTPクライアントが1024より大きいポートからサーバーの21ポートに接続することを許可する.FTPサーバーが21ポートからFTPクライアントの中で1024より大きいポートのネットワーク接続に応答することを許可する.FTPクライアントが1024より大きいポートからFTPサーバーの1024より大きいポートに接続することを許可する.FTPサーバーが1024より大きいポートからFTPクライアントの1024より大きいポートのネットワーク接続に応答することを許可する.
Clientは1024(21バー)より大きいXポート接続サーバの21(コマンドポート)を開き、X+1ポートを開く 21番ポートの接続が成功すると、クライアントはPASVコマンドを送信し、サーバ自身が受動モードであることを通知します.サーバはこのメッセージを受信すると、1024より大きいポートYを開いてクライアントに通知します.クライアントは通知を受信すると、X+1でサーバのYポートに接続します.簡単に言えば、クライアントはアクティブにサーバに接続します.
 
 
アクティブとパッシブFTPのメリットとデメリットの簡単なまとめ:  アクティブFTPはFTPサーバの管理に有利であるが,クライアントの管理には不利である.FTPサーバがクライアントの上位ランダムポートに接続しようとしているため、このポートはクライアントのファイアウォールによってブロックされる可能性が高い. パッシブFTPはFTPクライアントの管理に有利であるが,サーバ側の管理には不利である.クライアントはサーバ側と2つの接続を確立するため、そのうちの1つは上位ランダムポートに接続され、このポートはサーバ側のファイアウォールによってブロックされる可能性が高い. 幸いなことに、折衷の方法があります.FTPサーバの管理者がサーバに最も多くのクライアント接続を必要とする以上、パッシブFTPをサポートする必要があります.FTPサーバに限られたポート範囲を指定することで、サーバの上位ポートの露出を低減できます.これにより、この範囲外のポートはサーバのファイアウォールによってブロックされます.これにより、サーバに対するすべての危険は解消されませんが、危険は大幅に減少します. 
FTPアクティブとパッシブのメリットとデメリット: ISA(工業標準アーキテクチャシステムIndustry)で Standard ArchitectureはIBMです PC互換機上のバス )の場合、パッシブモードを採用すると、IISは完全にランダムにポートを選択し、顧客に通知し、顧客がアクティブに接続することを意味します.これは、ISA上で、すべてのポートに動的インバウンド接続を許可しなければならないことを意味します.これは絶対にだめです.危険なので、すべてのポート接続を開いたのと同じです.   アクティブモード(PORT)を採用すると Mode)は、IISがポートを選択した後、自発的にお客様と接続する場合、PASVモードのようにすべての動的インバウンド接続を開く必要はありません.また、正反対に、すべての動的アウトバウンド接続を開く必要があります.セキュリティが大幅に増加します.また、ISAのIPから PACKET FILTERはISA本体にのみ機能し、ローカルエリアネットワーク内のお客様が「羊を放した」ことはありません.
 
FTPclientパッシブモードでは、転送ファイルは0ポートを使用しており、setActivePortRangeを呼び出してアクティブモードを設定する際のポート範囲を設定することができます.
Windowsでftpclientを使用する場合は、Windowsの次のFTPマスターパッシブモードの欠陥を処理する必要があります.次のコマンドを実行する必要があります.
netsh advfirewall firewall add rule name=”FTP Service” action=allow service=ftpsvc protocol=TCP dir=in
netsh advfirewall set global StatefulFTP disable

https://technet.microsoft.com/zh-cn/library/dd421710(v=ws.10).aspx